/**
 * Copyright (c) 2010-2020 Contributors to the openHAB project
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0
 *
 * SPDX-License-Identifier: EPL-2.0
 */

 /* ***********************************************************
 * This file was automatically generated on 2022-01-03.      *
 *                                                           *
 * openHAB Bindings Version 2.0.0                            *
 *                                                           *
 * If you have a bugfix for this file and want to commit it, *
 * please fix the bug in the generator. You can find a link  *
 * to the generators git repository on tinkerforge.com       *
 *************************************************************/

package org.openhab.binding.tinkerforge.internal.device;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jdt.annotation.NonNull;
import org.openhab.binding.tinkerforge.internal.handler.DeviceHandler;
import org.eclipse.smarthome.core.thing.Thing;
import org.eclipse.smarthome.core.thing.binding.ThingActions;
import org.eclipse.smarthome.core.thing.binding.ThingActionsScope;
import org.eclipse.smarthome.core.thing.binding.ThingHandler;
import org.eclipse.smarthome.core.types.RefreshType;
import org.eclipse.smarthome.core.thing.ChannelUID;
import org.openhab.core.automation.annotation.ActionInput;
import org.openhab.core.automation.annotation.ActionOutput;
import org.openhab.core.automation.annotation.RuleAction;

import java.util.Map;

import com.tinkerforge.TinkerforgeException;

/**
 * Passes through actions of the RED Brick.
 *
 * @author Erik Fleckstein - Initial contribution
 */
@NonNullByDefault
public interface IBrickREDActions {

    public Map<String, Object> brickREDCreateSession(long lifetime) throws TinkerforgeException;

    public Map<String, Object> brickREDExpireSession(int sessionId) throws TinkerforgeException;

    public void brickREDExpireSessionUnchecked(int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDKeepSessionAlive(int sessionId, long lifetime) throws TinkerforgeException;

    public Map<String, Object> brickREDReleaseObject(int objectId, int sessionId) throws TinkerforgeException;

    public void brickREDReleaseObjectUnchecked(int objectId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDAllocateString(long lengthToReserve, String buffer, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDTruncateString(int stringId, long length) throws TinkerforgeException;

    public Map<String, Object> brickREDGetStringLength(int stringId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetStringChunk(int stringId, long offset, String buffer) throws TinkerforgeException;

    public Map<String, Object> brickREDGetStringChunk(int stringId, long offset) throws TinkerforgeException;

    public Map<String, Object> brickREDAllocateList(int lengthToReserve, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetListLength(int listId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetListItem(int listId, int index, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDAppendToList(int listId, int itemObjectId) throws TinkerforgeException;

    public Map<String, Object> brickREDRemoveFromList(int listId, int index) throws TinkerforgeException;

    public Map<String, Object> brickREDOpenFile(int nameStringId, long flags, int permissions, long uid, long gid, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDCreatePipe(long flags, long length, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetFileInfo(int fileId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDReadFile(int fileId, short lengthToRead) throws TinkerforgeException;

    public Map<String, Object> brickREDWriteFile(int fileId, short[] buffer, short lengthToWrite) throws TinkerforgeException;

    public void brickREDWriteFileUnchecked(int fileId, short[] buffer, short lengthToWrite) throws TinkerforgeException;

    public Map<String, Object> brickREDSetFilePosition(int fileId, long offset, short origin) throws TinkerforgeException;

    public Map<String, Object> brickREDGetFilePosition(int fileId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetFileEvents(int fileId, int events) throws TinkerforgeException;

    public Map<String, Object> brickREDGetFileEvents(int fileId) throws TinkerforgeException;

    public Map<String, Object> brickREDOpenDirectory(int nameStringId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetDirectoryName(int directoryId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetNextDirectoryEntry(int directoryId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDRewindDirectory(int directoryId) throws TinkerforgeException;

    public Map<String, Object> brickREDCreateDirectory(int nameStringId, long flags, int permissions, long uid, long gid) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProcesses(int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDSpawnProcess(int executableStringId, int argumentsListId, int environmentListId, int workingDirectoryStringId, long uid, long gid, int stdinFileId, int stdoutFileId, int stderrFileId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDKillProcess(int processId, short signal) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProcessCommand(int processId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProcessIdentity(int processId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProcessStdio(int processId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProcessState(int processId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetPrograms(int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDDefineProgram(int identifierStringId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDPurgeProgram(int programId, long cookie) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramIdentifier(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramRootDirectory(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetProgramCommand(int programId, int executableStringId, int argumentsListId, int environmentListId, int workingDirectoryStringId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramCommand(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetProgramStdioRedirection(int programId, short stdinRedirection, int stdinFileNameStringId, short stdoutRedirection, int stdoutFileNameStringId, short stderrRedirection, int stderrFileNameStringId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramStdioRedirection(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetProgramSchedule(int programId, short startMode, boolean continueAfterError, long startInterval, int startFieldsStringId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramSchedule(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetProgramSchedulerState(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDContinueProgramSchedule(int programId) throws TinkerforgeException;

    public Map<String, Object> brickREDStartProgram(int programId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetLastSpawnedProgramProcess(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetCustomProgramOptionNames(int programId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDSetCustomProgramOptionValue(int programId, int nameStringId, int valueStringId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetCustomProgramOptionValue(int programId, int nameStringId, int sessionId) throws TinkerforgeException;

    public Map<String, Object> brickREDRemoveCustomProgramOption(int programId, int nameStringId) throws TinkerforgeException;

    public Map<String, Object> brickREDGetIdentity() throws TinkerforgeException;;
}
