import { type MessageFormat } from "./sendrecv.ts"; import { type TaggedWebSocket } from "./taggedws.ts"; export interface Procedure { (helpers: ProcedureHelpers): Generator, R, TRecv>; } export interface ProcedureHelpers { send: (payload: TSend) => SendCommand; recv: () => RecvCommand; expect: (predicate: (message: TRecv) => boolean) => RecvCommand; settle: (promise: Promise) => SettleCommand; } export type ProcedureCommand = SendCommand | RecvCommand | SettleCommand; export interface SendCommand { action: "send"; payload: TSend; } export interface RecvCommand { action: "recv"; predicate?: (payload: TRecv) => boolean; strict: boolean; } export interface SettleCommand { action: "settle"; promise: Promise; } export interface ExecProcedureOptions { ws: TaggedWebSocket; procedure: Procedure; format: MessageFormat; } export declare function execProcedure(options: ExecProcedureOptions): Promise; //# sourceMappingURL=procedure.d.ts.map