import type { V2ExecutionContext, V2PermissionRequest } from "../tools/definitions/v2.js"; export type V2PermissionReply = "once" | "always" | "reject"; export interface V2PermissionCreateInput { sessionID: string; action: string; resources: string[]; save: string[]; metadata: Record; source: { type: "tool"; messageID: string; id: string; }; } interface V2PermissionCreateResult { id: string; effect: "allow" | "deny" | "ask"; } interface V2EventSubscription { stream: AsyncIterable; } export interface V2PermissionClient { permission: { create(input: V2PermissionCreateInput): Promise; }; event: { subscribe(): Promise; }; } export interface V2PermissionHostContext { client: V2PermissionClient; } export declare class PermissionDeniedError extends Error { readonly name = "PermissionDeniedError"; } export declare class PermissionRejectedError extends Error { readonly name = "PermissionRejectedError"; } /** * Ask OpenCode's Location-scoped permission service for a V2 tool operation. * * Subscribing before `permission.create` prevents a fast headless reply from * racing past the event listener. The create response handles saved-rule allows * and configured denies immediately; only an `ask` waits for its matching reply. */ export declare function requestPermission(host: V2PermissionHostContext, request: V2PermissionRequest, context: V2ExecutionContext): Promise; export {}; //# sourceMappingURL=v2.d.ts.map