import { type FirebaseStorageAccessorFolder, type StorageListFilesOptions, type StorageListFilesResult } from './accessor'; import { type FetchPageFactory, type IterateFetchPagesByEachItemConfig, type IterateFetchPagesConfigWithFactoryAndInput } from '@dereekb/util/fetch'; /** * Configuration for {@link iterateStorageListFilesFactory}. Excludes `pageToken` since it is managed internally during iteration. */ export type IterateStorageListFilesFactoryConfig = Omit; /** * Input for a single page fetch during storage file iteration. */ export interface IterateStorageListFilesInput extends StorageListFilesOptions { /** * The folder to iterate files within. */ readonly folder: FirebaseStorageAccessorFolder; } /** * A {@link FetchPageFactory} specialized for paginating through files in a storage folder. * * Produced by {@link iterateStorageListFilesFactory}. */ export type IterateStorageListFilesFactory = FetchPageFactory; /** * Creates an {@link IterateStorageListFilesFactory} for paginated iteration over files in a storage folder. * * Wraps the folder's `list()` API with cursor-based pagination via {@link fetchPageFactory}. * * @param config - Default listing options (e.g., maxResults) * @returns An {@link IterateStorageListFilesFactory} for paginated file listing. * * @example * ```ts * const factory = iterateStorageListFilesFactory({ maxResults: 100 }); * ``` * * @__NO_SIDE_EFFECTS__ */ export declare function iterateStorageListFilesFactory(config: IterateStorageListFilesFactoryConfig): IterateStorageListFilesFactory; /** * Configuration for {@link iterateStorageListFilesByEachFile}, extending the per-item iteration config * with folder and listing options. */ export type IterateStorageListFilesByEachFileConfig = Omit, 'fetchPageFactory'> & Pick; /** * Iterates through every file in a storage folder, invoking a callback for each individual file result. * * Convenience wrapper around {@link iterateFetchPagesByEachItem} pre-configured for storage listing. * * @param input - Iteration configuration including folder, listing options, and per-item callback. * @returns The result of the paginated per-item iteration. */ export declare function iterateStorageListFilesByEachFile(input: IterateStorageListFilesByEachFileConfig): Promise<{ totalItemsLoaded: number; totalItemsVisited: number; totalPages: number; totalPagesLimitReached: boolean; }>; /** * Configuration for {@link iterateStorageListFiles}, extending the page-level iteration config * with folder and listing options. */ export type IterateStorageListFilesConfig = Omit, 'fetchPageFactory'> & Pick; /** * Iterates through pages of file results in a storage folder, invoking a callback for each page. * * Convenience wrapper around {@link iterateFetchPages} pre-configured for storage listing. * * @param input - Iteration configuration including folder, listing options, and per-page callback. * @returns The result of the paginated page-level iteration. */ export declare function iterateStorageListFiles(input: IterateStorageListFilesConfig): Promise;