export type OfficeTableEditPermission = "filesystem:read" | "filesystem:write" | "office:read" | "office:write";
export type OfficeTableEditErrorBoundary = "input" | "scope" | "permission" | "contract";
export type OfficeTableEditContext = {
    runtimeId?: string;
    invocationId?: string;
    dryRun?: boolean;
    allowedFileRoots?: readonly string[];
    grantedPermissions?: readonly OfficeTableEditPermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type OfficeTableCellValue = string | number | boolean | null;
export type OfficeTableEditOperation = {
    kind: "setCell";
    address: string;
    value: OfficeTableCellValue;
    formula?: string;
} | {
    kind: "clearRange";
    range: string;
};
export type OfficeTableEditOperationInput = {
    kind?: "setCell";
    address?: string;
    value?: OfficeTableCellValue;
    formula?: string;
} | {
    kind?: "clearRange";
    range?: string;
};
export type OfficeTableEditTarget = {
    workbookPath: string;
    sheetName: string;
    operations: readonly OfficeTableEditOperation[];
};
export type OfficeTableEditRequest = {
    target?: {
        workbookPath?: string;
        sheetName?: string;
        operations?: readonly OfficeTableEditOperationInput[];
    };
    context?: OfficeTableEditContext;
};
export type OfficeTableEditErrorCode = "MISSING_WORKBOOK_PATH" | "MISSING_SHEET_NAME" | "MISSING_OPERATIONS" | "INVALID_OPERATION" | "INVALID_CELL_ADDRESS" | "INVALID_RANGE" | "SCOPE_REJECTED" | "PERMISSION_DENIED" | "REAL_EXECUTION_BLOCKED";
export type OfficeTableEditError = {
    code: OfficeTableEditErrorCode;
    message: string;
    boundary: OfficeTableEditErrorBoundary;
    publicSafe: true;
};
export type OfficeTableEditAuditEvent = {
    type: string;
    toolId: "office.tableEdit";
    invocationId: string;
    dryRun: boolean;
    targetPath?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeTableEditOutput = {
    kind: "agentCore.basicTool.office.tableEdit";
    target: OfficeTableEditTarget;
    dryRun: true;
    executionBlocked: true;
    permissionsRequired: readonly OfficeTableEditPermission[];
    unsafeSideEffects: true;
    writePlan: {
        operationCount: number;
        affectedReferences: readonly string[];
        requiresBackup: true;
    };
};
export type OfficeTableEditResult = {
    ok: true;
    toolId: "office.tableEdit";
    output: OfficeTableEditOutput;
    audit: readonly OfficeTableEditAuditEvent[];
    events: readonly string[];
} | {
    ok: false;
    toolId: "office.tableEdit";
    error: OfficeTableEditError;
    audit: readonly OfficeTableEditAuditEvent[];
    events: readonly string[];
};
export declare const officeTableEditDescriptor: {
    readonly toolId: "office.tableEdit";
    readonly capability: "edit-table";
    readonly route: "toolabilityPool.officeBase.spreadsheet";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly permissionsRequired: readonly ["filesystem:read", "filesystem:write", "office:read", "office:write"];
    readonly unsafeSideEffects: true;
};
export declare function planOfficeTableEdit(request?: OfficeTableEditRequest): OfficeTableEditResult;
