import * as Errors from "../common/error-space"; import * as IOTileTypes from "../common/iotile-types"; export interface RPCData { rpcID: number; address: number; timeout: number; internalTimeout: number; timeoutHandler: number | null; payload: ArrayBuffer; headerReceived: boolean; expectedPayloadLength: number; success: (value: ArrayBuffer) => void; failure: (reason: Errors.RPCError) => void; } export declare enum RPCError { OK = 0, UnexpectedRPCTimeout = 1, ErrorWritingRPC = 2, IncorrectReceivedLength = 3, ResponseReceivedAtInvalidTime = 4, BluetoothErrorWritingRPC = 5, StoppedFromPreviousErrors = 6 } export declare class IOTileRPCInterface { private channel; private removeReceiveHeaderHandler; private removeReceivePayloadHandler; private rpcQueue; private processing; private currentRPC; stoppedFromErrors: boolean; lastError: RPCError | null; constructor(); open(channel: IOTileTypes.BLEChannel): Promise; rpc(address: number, rpcID: number, payload: ArrayBuffer, timeout?: number): Promise; close(): Promise; private receiveHeader; /** * Cleanup after an RPC is finished, removing its timeout handler and restarting the command queue */ private finishRPC; private receivePayload; private fatalRPCError; private processOne; }