export type OfficeTableEncodePermission = "filesystem:write" | "office:write";
export type OfficeTableEncodeErrorBoundary = "input" | "scope" | "permission" | "contract";
export type OfficeTableEncodeContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    allowedFileRoots?: readonly string[];
    grantedPermissions?: readonly OfficeTableEncodePermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type OfficeTableEncodeFormat = "xlsx" | "csv" | "tsv";
export type OfficeTableEncodeCellValue = string | number | boolean | null;
export type OfficeTableEncodeRow = readonly OfficeTableEncodeCellValue[];
export type OfficeTableEncodeSheet = {
    name: string;
    rows: readonly OfficeTableEncodeRow[];
};
export type OfficeTableEncodeSheetInput = {
    name?: string;
    rows?: readonly (readonly OfficeTableEncodeCellValue[])[];
};
export type OfficeTableEncodeTarget = {
    outputPath: string;
    format: OfficeTableEncodeFormat;
    sheets: readonly OfficeTableEncodeSheet[];
    overwrite: boolean;
};
export type OfficeTableEncodeRequest = {
    target?: {
        outputPath?: string;
        format?: OfficeTableEncodeFormat;
        sheets?: readonly OfficeTableEncodeSheetInput[];
        overwrite?: boolean;
    };
    context?: OfficeTableEncodeContext;
};
export type OfficeTableEncodeErrorCode = "MISSING_OUTPUT_PATH" | "INVALID_FORMAT" | "MISSING_SHEETS" | "MISSING_SHEET_NAME" | "MISSING_ROWS" | "RESOURCE_LIMIT_EXCEEDED" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED";
export type OfficeTableEncodeError = {
    code: OfficeTableEncodeErrorCode;
    message: string;
    boundary: OfficeTableEncodeErrorBoundary;
    publicSafe: true;
};
export type OfficeTableEncodeAuditEvent = {
    type: string;
    toolId: "office.tableEncode";
    invocationId: string;
    dryRun: boolean;
    targetPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeTableEncodeOutput = {
    kind: "agentCore.basicTool.office.tableEncode";
    target: OfficeTableEncodeTarget;
    dryRun: true;
    executionBlocked: true;
    permissionsRequired: readonly OfficeTableEncodePermission[];
    unsafeSideEffects: true;
    writePlan: {
        format: OfficeTableEncodeFormat;
        sheetCount: number;
        rowCount: number;
        cellCount: number;
        overwrite: boolean;
    };
};
export type OfficeTableEncodeResult = {
    ok: true;
    toolId: "office.tableEncode";
    output: OfficeTableEncodeOutput;
    audit: readonly OfficeTableEncodeAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.tableEncode";
    error: OfficeTableEncodeError;
    audit: readonly OfficeTableEncodeAuditEvent[];
    events: readonly string[];
};
export declare const officeTableEncodeDescriptor: {
    readonly toolId: "office.tableEncode";
    readonly capability: "encode-table";
    readonly route: "toolabilityPool.officeBase.spreadsheet";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly permissionsRequired: readonly ["filesystem:write", "office:write"];
    readonly unsafeSideEffects: true;
};
export declare function planOfficeTableEncode(request?: OfficeTableEncodeRequest): OfficeTableEncodeResult;
