export type OfficeTableRipgrepPermission = "filesystem:read" | "office:read";
export type OfficeTableRipgrepErrorBoundary = "input" | "scope" | "permission" | "contract";
export type OfficeTableRipgrepContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    allowedFileRoots?: readonly string[];
    grantedPermissions?: readonly OfficeTableRipgrepPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type OfficeTableRipgrepTarget = {
    workbookPath: string;
    sheetName?: string;
    pattern: string;
    regex: boolean;
    caseSensitive: boolean;
    ranges: readonly string[];
    maxMatches: number;
};
export type OfficeTableRipgrepRequest = {
    target?: {
        workbookPath?: string;
        sheetName?: string;
        pattern?: string;
        regex?: boolean;
        caseSensitive?: boolean;
        ranges?: readonly string[];
        maxMatches?: number;
    };
    context?: OfficeTableRipgrepContext;
};
export type OfficeTableRipgrepMatch = {
    sheetName?: string;
    address: string;
    valuePreview: string;
    matchStart?: number;
    matchEnd?: number;
};
export type OfficeTableRipgrepEnvelope = {
    workbookPath: string;
    sheetName?: string;
    pattern: string;
    matches: readonly OfficeTableRipgrepMatch[];
    truncated: false;
    metadata: {
        regex: boolean;
        caseSensitive: boolean;
        ranges: readonly string[];
        maxMatches: number;
    };
};
export type OfficeTableRipgrepErrorCode = "MISSING_WORKBOOK_PATH" | "MISSING_PATTERN" | "INVALID_PATTERN" | "INVALID_RANGE" | "INVALID_RESOURCE_LIMIT" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED";
export type OfficeTableRipgrepError = {
    code: OfficeTableRipgrepErrorCode;
    message: string;
    boundary: OfficeTableRipgrepErrorBoundary;
    publicSafe: true;
};
export type OfficeTableRipgrepAuditEvent = {
    type: string;
    toolId: "office.tableRipgrep";
    invocationId: string;
    dryRun: boolean;
    targetPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeTableRipgrepOutput = {
    kind: "agentCore.basicTool.office.tableRipgrep";
    target: OfficeTableRipgrepTarget;
    dryRun: true;
    executionBlocked: true;
    permissionsRequired: readonly OfficeTableRipgrepPermission[];
    unsafeSideEffects: false;
    resultEnvelope: OfficeTableRipgrepEnvelope;
};
export type OfficeTableRipgrepResult = {
    ok: true;
    toolId: "office.tableRipgrep";
    output: OfficeTableRipgrepOutput;
    audit: readonly OfficeTableRipgrepAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.tableRipgrep";
    error: OfficeTableRipgrepError;
    audit: readonly OfficeTableRipgrepAuditEvent[];
    events: readonly string[];
};
export declare const officeTableRipgrepDescriptor: {
    readonly toolId: "office.tableRipgrep";
    readonly capability: "ripgrep-table";
    readonly route: "toolabilityPool.officeBase.spreadsheet";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly permissionsRequired: readonly ["filesystem:read", "office:read"];
    readonly unsafeSideEffects: false;
};
export declare function planOfficeTableRipgrep(request?: OfficeTableRipgrepRequest): OfficeTableRipgrepResult;
