import type { PoolQueryClient } from "../../generated/storage-kit/query.js"; import { loadTenantBackfillBundle } from "./tenant-backfill.js"; export declare const TENANT_BACKFILL_MAX_BYTES: number; export interface TenantBackfillS3Client { list(input: { prefix: string; maxKeys: number; }): Promise<{ contents?: Array<{ key: string; size?: number; }>; isTruncated?: boolean; }>; file(key: string): { bytes(): Promise; }; delete(key: string): Promise; } interface TaskRoleCredentials { accessKeyId: string; secretAccessKey: string; sessionToken: string; } export type TenantBackfillFetch = (input: string, init?: RequestInit) => Promise; interface TenantBackfillS3Options { bucket: string; region: string; credentialsRelativeUri: string; } interface TenantBackfillS3Dependencies { fetch?: TenantBackfillFetch; createS3Client?: (options: TaskRoleCredentials & { bucket: string; region: string; endpoint: string; }) => TenantBackfillS3Client; loadBundle?: typeof loadTenantBackfillBundle; } export interface TenantBackfillS3Result { digest: string; counts: { tenants: number; principals: number; memberships: number; keyBindings: number; rowAssignments: number; }; } export declare function fetchEcsTaskRoleCredentials(relativeUri: string, fetchImpl?: TenantBackfillFetch): Promise; export declare function loadApprovedTenantBackfillBundle(queryClient: PoolQueryClient, options: TenantBackfillS3Options, dependencies?: TenantBackfillS3Dependencies): Promise; export declare function logTenantBackfillS3Success(result: TenantBackfillS3Result): void; export {};