export type OfficeSlidesRipgrepPermission = "filesystem:read" | "office:slides:read";
export type OfficeSlidesRipgrepErrorBoundary = "input" | "scope" | "permission" | "contract";
export type OfficeSlidesRipgrepContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    allowedPresentationRoots?: readonly string[];
    grantedPermissions?: readonly OfficeSlidesRipgrepPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type OfficeSlidesRipgrepTarget = {
    presentationPath: string;
    query: string;
    matchCase: boolean;
    includeSpeakerNotes: boolean;
    maxMatches: number;
};
export type OfficeSlidesRipgrepRequest = {
    target?: Partial<OfficeSlidesRipgrepTarget>;
    context?: OfficeSlidesRipgrepContext;
};
export type OfficeSlidesRipgrepErrorCode = "MISSING_PRESENTATION_PATH" | "MISSING_QUERY" | "INVALID_MAX_MATCHES" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED";
export type OfficeSlidesRipgrepError = {
    code: OfficeSlidesRipgrepErrorCode;
    message: string;
    boundary: OfficeSlidesRipgrepErrorBoundary;
    publicSafe: true;
};
export type OfficeSlidesRipgrepAuditEvent = {
    type: string;
    toolId: "office.slidesRipgrep";
    invocationId: string;
    dryRun: boolean;
    presentationPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeSlidesRipgrepOutput = {
    kind: "agentCore.basicTool.office.slidesRipgrep";
    target: OfficeSlidesRipgrepTarget;
    actionPreview: readonly string[];
    dryRun: true;
    executionBlocked: true;
    permissionsRequired: readonly OfficeSlidesRipgrepPermission[];
    unsafeSideEffects: false;
    resultEnvelope: {
        matches: readonly {
            slideNumber: number;
            field: "title" | "body" | "speaker-notes" | "alt-text";
            snippet: string;
        }[];
        metadata: Readonly<Record<string, unknown>>;
    };
};
export type OfficeSlidesRipgrepResult = {
    ok: true;
    toolId: "office.slidesRipgrep";
    output: OfficeSlidesRipgrepOutput;
    audit: readonly OfficeSlidesRipgrepAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.slidesRipgrep";
    error: OfficeSlidesRipgrepError;
    audit: readonly OfficeSlidesRipgrepAuditEvent[];
    events: readonly string[];
};
export declare const officeSlidesRipgrepDescriptor: {
    readonly toolId: "office.slidesRipgrep";
    readonly capability: "search-presentation-text";
    readonly route: "toolabilityPool.officeBase.presentations";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly unsafeSideEffects: false;
    readonly permissionsRequired: readonly ["filesystem:read", "office:slides:read"];
};
export declare function planOfficeSlidesRipgrep(request?: OfficeSlidesRipgrepRequest): OfficeSlidesRipgrepResult;
