export type ShellInteractiveControlPermission = "shell:interactive:control";
export type ShellInteractiveControlBoundary = "input" | "permission" | "approval" | "scope" | "contract";
export type ShellInteractiveControlAction = "send-input" | "interrupt" | "terminate" | "resize" | "resume";
export type ShellInteractiveControlContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    grantedPermissions?: readonly ShellInteractiveControlPermission[];
    allowedSessionIds?: readonly string[];
    approval?: {
        accepted: boolean;
        approvalId?: string;
        reason?: string;
    };
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type ShellInteractiveControlTarget = {
    sessionId: string;
    action: ShellInteractiveControlAction;
    input?: string;
    signal?: "SIGINT" | "SIGTERM";
    terminalSize?: {
        columns: number;
        rows: number;
    };
};
export type ShellInteractiveControlRequest = {
    target?: Partial<ShellInteractiveControlTarget>;
    context?: ShellInteractiveControlContext;
};
export type ShellInteractiveControlErrorCode = "MISSING_SESSION_ID" | "MISSING_ACTION" | "MISSING_INPUT" | "INVALID_ACTION" | "INVALID_SIGNAL" | "INVALID_TERMINAL_SIZE" | "PERMISSION_DENIED" | "SCOPE_REJECTED" | "APPROVAL_REQUIRED" | "APPROVAL_REJECTED" | "REAL_CONTROL_BLOCKED";
export type ShellInteractiveControlError = {
    code: ShellInteractiveControlErrorCode;
    message: string;
    boundary: ShellInteractiveControlBoundary;
    publicSafe: true;
    internalDetailExposed: false;
};
export type ShellInteractiveControlAuditEvent = {
    type: string;
    toolId: "shell.interactiveControl";
    invocationId: string;
    dryRun: boolean;
    sessionId?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type ShellInteractiveControlOutput = {
    kind: "agentCore.basicTool.shell.interactiveControl";
    target: Omit<ShellInteractiveControlTarget, "input"> & {
        inputPreview?: string;
        inputBytes?: number;
    };
    requiredPermission: ShellInteractiveControlPermission;
    requiresTapApproval: boolean;
    approvalId?: string;
    dryRun: boolean;
    controlBlocked: boolean;
    unsafeSideEffects: true;
};
export type ShellInteractiveControlResult = {
    ok: true;
    toolId: "shell.interactiveControl";
    output: ShellInteractiveControlOutput;
    audit: readonly ShellInteractiveControlAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "shell.interactiveControl";
    error: ShellInteractiveControlError;
    audit: readonly ShellInteractiveControlAuditEvent[];
    events: readonly string[];
};
export declare const shellInteractiveControlDescriptor: {
    readonly toolId: "shell.interactiveControl";
    readonly capability: "shell-interactive-process-control";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.shellBase.shellInteraction";
    readonly defaultDryRun: true;
    readonly requiredPermission: "shell:interactive:control";
    readonly tapOwnsApproval: true;
    readonly unsafeSideEffects: true;
};
export declare function planShellInteractiveControl(request?: ShellInteractiveControlRequest): ShellInteractiveControlResult;
