import type { OpenClawConfig } from "../config/types.openclaw.js"; import type { ExecApprovalRequest, ExecApprovalResolved } from "./exec-approvals.js"; import type { PluginApprovalRequest, PluginApprovalResolved } from "./plugin-approvals.js"; type ApprovalRequestEvent = ExecApprovalRequest | PluginApprovalRequest; type ApprovalResolvedEvent = ExecApprovalResolved | PluginApprovalResolved; export type ExecApprovalChannelRuntimeEventKind = "exec" | "plugin"; export type ExecApprovalChannelRuntimeAdapter = { label: string; clientDisplayName: string; cfg: OpenClawConfig; gatewayUrl?: string; eventKinds?: readonly ExecApprovalChannelRuntimeEventKind[]; isConfigured: () => boolean; shouldHandle: (request: TRequest) => boolean; deliverRequested: (request: TRequest) => Promise; beforeGatewayClientStart?: () => Promise | void; finalizeResolved: (params: { request: TRequest; resolved: TResolved; entries: TPending[]; }) => Promise; finalizeExpired?: (params: { request: TRequest; entries: TPending[]; }) => Promise; onStopped?: () => Promise | void; nowMs?: () => number; }; export type ExecApprovalChannelRuntime = { start: () => Promise; stop: () => Promise; handleRequested: (request: TRequest) => Promise; handleResolved: (resolved: TResolved) => Promise; handleExpired: (approvalId: string) => Promise; request: (method: string, params: Record) => Promise; }; export {};