import { Spec } from '../..';
import { UnitDestroyData, UnitGetAllInputDataData, UnitGetAllPinDataData, UnitGetAllRefInputDataData, UnitGetPinDataData, UnitGetSpecData, UnitGetUnitBundleSpecData, UnitHasPinData, UnitPauseData, UnitPlayData, UnitPullInputData, UnitPushData, UnitRemovePinDataData, UnitResetData, UnitRestoreData, UnitSetPinDataData, UnitTakeErrData, UnitTakeInputData } from '../../../Class/Unit/interface';
import { Memory } from '../../../Class/Unit/Memory';
import { Callback } from '../../Callback';
import { Dict } from '../../Dict';
import { GlobalRefSpec } from '../../GlobalRefSpec';
import { IO } from '../../IO';
import { UnitBundleSpec } from '../../UnitBundleSpec';
import { Unlisten } from '../../Unlisten';
export declare const U_METHOD_GET: string[];
export declare const U_METHOD_CALL: string[];
export declare const U_METHOD_WATCH: string[];
export declare const U_METHOD_REF: string[];
export interface $U_G {
    $getSpec(data: UnitGetSpecData, callback: Callback<Spec>): void;
    $paused(data: UnitPauseData, callback: Callback<boolean>): void;
    $hasPin(data: UnitHasPinData, callback: Callback<boolean>): void;
    $getPinData(data: UnitGetPinDataData, callback: (data: any) => void): void;
    $getAllPinData(data: UnitGetAllPinDataData, callback: (data: {
        input: Dict<any>;
        output: Dict<any>;
    }) => void): void;
    $getAllInputData({}: UnitGetAllInputDataData, callback: (data: Dict<any>) => void): void;
    $getAllRefInputData({}: UnitGetAllRefInputDataData, callback: (data: Dict<GlobalRefSpec>) => void): void;
    $getUnitBundleSpec({}: UnitGetUnitBundleSpecData, callback: (data: UnitBundleSpec) => void): void;
    $snapshot(data: {}, callback: (state: Memory) => void): void;
}
export interface $U_C {
    $play(data: UnitPlayData): void;
    $pause(data: UnitPauseData): void;
    $push(data: UnitPushData): void;
    $pullInput(data: UnitPullInputData): void;
    $takeInput(data: UnitTakeInputData): void;
    $takeErr(data: UnitTakeErrData): void;
    $setPinData(data: UnitSetPinDataData): void;
    $removePinData(data: UnitRemovePinDataData): void;
    $reset(data: UnitResetData): void;
    $restore(data: UnitRestoreData): void;
    $destroy(data: UnitDestroyData): void;
}
export interface $U_W {
    $watch(data: {
        events: string[];
    }, callback: (moment: any) => void): Unlisten;
}
export interface $U_R {
    $refPin(data: {
        type: IO;
        pinId: string;
    }): any;
    $refGlobalObj(data: {
        globalId: string;
        __: string[];
    }): any;
}
export interface $U extends $U_G, $U_C, $U_W, $U_R {
}
