/**
 * Type definitions for OpenCode SDK integration
 */
import type { AskUserQuestionHandler } from '../../core/workflow/types.js';
import type { PermissionMode } from '../../core/models/index.js';
import type { StreamCallback } from '../../shared/types/provider.js';
/** OpenCode permission reply values */
export type OpenCodePermissionReply = 'once' | 'always' | 'reject';
export type OpenCodePermissionAction = 'ask' | 'allow' | 'deny';
/** Map TAKT PermissionMode to OpenCode permission reply */
export declare function mapToOpenCodePermissionReply(mode: PermissionMode): OpenCodePermissionReply;
declare const OPEN_CODE_PERMISSION_KEYS: readonly ["read", "glob", "grep", "edit", "write", "bash", "task", "websearch", "webfetch", "question"];
export type OpenCodePermissionKey = typeof OPEN_CODE_PERMISSION_KEYS[number];
export type OpenCodePermissionMap = Record<OpenCodePermissionKey, OpenCodePermissionAction>;
export declare function buildOpenCodePermissionConfig(mode?: PermissionMode, networkAccess?: boolean): OpenCodePermissionAction | Record<string, OpenCodePermissionAction>;
export declare function buildOpenCodePermissionRuleset(mode?: PermissionMode, networkAccess?: boolean): Array<{
    permission: string;
    pattern: string;
    action: OpenCodePermissionAction;
}>;
export declare function mapToOpenCodeTools(allowedTools?: string[]): Record<string, boolean> | undefined;
/** Options for calling OpenCode */
export interface OpenCodeCallOptions {
    cwd: string;
    abortSignal?: AbortSignal;
    sessionId?: string;
    model: string;
    systemPrompt?: string;
    allowedTools?: string[];
    permissionMode?: PermissionMode;
    networkAccess?: boolean;
    variant?: string;
    onStream?: StreamCallback;
    onAskUserQuestion?: AskUserQuestionHandler;
    opencodeApiKey?: string;
    outputSchema?: Record<string, unknown>;
    interactionTimeoutMs?: number;
}
export {};
//# sourceMappingURL=types.d.ts.map