export type LspCompleteCodeBoundary = "input" | "contract" | "governance" | "scope" | "environment";
export type LspCompleteCodeGate = {
    accepted: boolean;
    reason?: string;
};
export type LspCompletionPosition = {
    line: number;
    character: number;
};
export type LspCompleteCodeRequest = {
    runtimeId?: string;
    sessionId?: string;
    workspaceRoot?: string;
    documentUri?: string;
    position?: LspCompletionPosition;
    triggerCharacter?: string;
    prefix?: string;
    maxItems?: number;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    lspClientReady?: boolean;
    dryRun?: boolean;
    contract?: LspCompleteCodeGate;
    governance?: LspCompleteCodeGate;
    auditContext?: Record<string, unknown>;
};
export type LspCompleteCodeErrorCode = "MISSING_RUNTIME_ID" | "MISSING_SESSION_ID" | "MISSING_WORKSPACE_ROOT" | "MISSING_DOCUMENT_URI" | "MISSING_POSITION" | "INVALID_POSITION" | "INVALID_MAX_ITEMS" | "LSP_CLIENT_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_SIDE_EFFECT_NOT_ALLOWED";
export type LspCompleteCodeError = {
    code: LspCompleteCodeErrorCode;
    message: string;
    boundary: LspCompleteCodeBoundary;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type LspCompletionPlan = {
    toolId: "code.lsp_completeCode";
    capability: "complete-lsp-code";
    runtimeId: string;
    sessionId: string;
    workspaceRoot: string;
    documentUri: string;
    position: LspCompletionPosition;
    completionContext: {
        triggerCharacter?: string;
        prefix?: string;
        maxItems: number;
    };
    permissions: {
        required: readonly ["tool:lsp", "workspace:read"];
        acceptedScopes: readonly string[];
        approvalRequired: false;
    };
    execution: {
        dryRun: true;
        lspInvoked: false;
        completionApplied: false;
        unsafeSideEffects: false;
    };
    audit: {
        event: "basicTool.lsp.completeCode.planned";
        auditContext: Readonly<Record<string, unknown>>;
    };
};
export type LspCompleteCodeResult = {
    ok: true;
    plan: LspCompletionPlan;
    events: readonly string[];
} | {
    ok: false;
    error: LspCompleteCodeError;
    events: readonly string[];
};
export declare const lspCompleteCodeDescriptor: {
    readonly toolId: "code.lsp_completeCode";
    readonly capability: "complete-lsp-code";
    readonly layer: "agent_executionEngine.basic_toolLayer.baseTools.codeBase.lsp";
    readonly purpose: "plan a semantic completion lookup without applying a completion item";
    readonly sideEffectPolicy: "dry-run-only";
    readonly requiresApproval: false;
};
export declare function planLspCodeCompletion(request?: LspCompleteCodeRequest): LspCompleteCodeResult;
