export type OfficeTableDecodePermission = "filesystem:read" | "office:read";
export type OfficeTableDecodeErrorBoundary = "input" | "scope" | "permission" | "contract";
export type OfficeTableDecodeContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    allowedFileRoots?: readonly string[];
    grantedPermissions?: readonly OfficeTableDecodePermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type OfficeTableDecodeValueMode = "display" | "raw";
export type OfficeTableDecodeTarget = {
    workbookPath: string;
    sheetName?: string;
    range?: string;
    valueMode: OfficeTableDecodeValueMode;
    includeFormulas: boolean;
    maxRows: number;
    maxColumns: number;
};
export type OfficeTableDecodeRequest = {
    target?: Partial<OfficeTableDecodeTarget>;
    context?: OfficeTableDecodeContext;
};
export type OfficeTableDecodedCell = {
    address: string;
    value: string | number | boolean | null;
    formula?: string;
};
export type OfficeTableDecodedEnvelope = {
    workbookPath: string;
    sheetName?: string;
    range?: string;
    rows: readonly (readonly OfficeTableDecodedCell[])[];
    truncated: false;
    metadata: {
        valueMode: OfficeTableDecodeValueMode;
        includeFormulas: boolean;
        maxRows: number;
        maxColumns: number;
    };
};
export type OfficeTableDecodeErrorCode = "MISSING_WORKBOOK_PATH" | "INVALID_RANGE" | "INVALID_VALUE_MODE" | "INVALID_RESOURCE_LIMIT" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED";
export type OfficeTableDecodeError = {
    code: OfficeTableDecodeErrorCode;
    message: string;
    boundary: OfficeTableDecodeErrorBoundary;
    publicSafe: true;
};
export type OfficeTableDecodeAuditEvent = {
    type: string;
    toolId: "office.tableDecode";
    invocationId: string;
    dryRun: boolean;
    targetPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeTableDecodeOutput = {
    kind: "agentCore.basicTool.office.tableDecode";
    target: OfficeTableDecodeTarget;
    dryRun: true;
    executionBlocked: true;
    permissionsRequired: readonly OfficeTableDecodePermission[];
    unsafeSideEffects: false;
    resultEnvelope: OfficeTableDecodedEnvelope;
};
export type OfficeTableDecodeResult = {
    ok: true;
    toolId: "office.tableDecode";
    output: OfficeTableDecodeOutput;
    audit: readonly OfficeTableDecodeAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.tableDecode";
    error: OfficeTableDecodeError;
    audit: readonly OfficeTableDecodeAuditEvent[];
    events: readonly string[];
};
export declare const officeTableDecodeDescriptor: {
    readonly toolId: "office.tableDecode";
    readonly capability: "decode-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 planOfficeTableDecode(request?: OfficeTableDecodeRequest): OfficeTableDecodeResult;
