export type PdfReadBoundary = "input" | "contract" | "governance" | "scope" | "resource";
export type PdfReadPermission = "filesystem:read";
export type PdfReadView = "text" | "metadata" | "outline" | "page-preview";
export type PdfReadGate = {
    accepted: boolean;
    reason?: string;
};
export type PdfReadPageRange = {
    startPage: number;
    endPage: number;
};
export type PdfReadTarget = {
    sourcePath: string;
    view?: PdfReadView;
    pageRange?: PdfReadPageRange;
    maxPages?: number;
};
export type PdfReadContext = {
    runtimeId?: string;
    invocationId?: string;
    workspaceRoot?: string;
    dryRun?: boolean;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: PdfReadGate;
    governance?: PdfReadGate;
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type PdfReadRequest = {
    target?: Partial<PdfReadTarget>;
    context?: PdfReadContext;
};
export type PdfReadEnvelope = {
    pages: readonly {
        pageNumber: number;
        text: string;
    }[];
    metadata: Readonly<Record<string, unknown>>;
    outline: readonly string[];
};
export type PdfReadErrorCode = "MISSING_WORKSPACE_ROOT" | "MISSING_SOURCE_PATH" | "SOURCE_OUT_OF_SCOPE" | "INVALID_READ_VIEW" | "INVALID_PAGE_RANGE" | "INVALID_MAX_PAGES" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_EXECUTION_BLOCKED";
export type PdfReadError = {
    code: PdfReadErrorCode;
    message: string;
    boundary: PdfReadBoundary;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type PdfReadAuditEvent = {
    type: string;
    toolId: "office.pdfRead";
    invocationId: string;
    dryRun: true;
    sourcePath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type PdfReadPlan = {
    kind: "agentCore.basicTool.office.pdfRead";
    toolId: "office.pdfRead";
    capability: "read-pdf";
    workspaceRoot: string;
    target: PdfReadTarget;
    operationPreview: readonly string[];
    dryRun: true;
    executionBlocked: true;
    requiredPermissions: readonly PdfReadPermission[];
    requiresTapApproval: false;
    unsafeSideEffects: false;
    acceptedScopes: readonly string[];
    resultEnvelope: PdfReadEnvelope;
};
export type PdfReadResult = {
    ok: true;
    toolId: "office.pdfRead";
    plan: PdfReadPlan;
    audit: readonly PdfReadAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.pdfRead";
    error: PdfReadError;
    audit: readonly PdfReadAuditEvent[];
    events: readonly string[];
};
export declare const pdfReadDescriptor: {
    readonly toolId: "office.pdfRead";
    readonly capability: "read-pdf";
    readonly route: "toolabilityPool.officeBase.Portable_Document_Format";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly permissionsRequired: readonly ["filesystem:read"];
    readonly unsafeSideEffects: false;
};
export declare function planPdfRead(request?: PdfReadRequest): PdfReadResult;
