import { StorageMediaData, StorageProviderBase, StorageProviderTypeEnum } from "./StorageProviderBase"; /** * Coordinates one or more storage providers and applies them as a prioritized persistence stack. */ export declare class StorageController { storageStack: StorageProviderBase[]; /** * Creates an empty storage controller. */ constructor(); /** * Adds a storage provider to the stack. * * @param provider Provider to register. * @returns Nothing. */ addProvider(provider: StorageProviderBase): void; /** * Removes a storage provider from the stack. * * @param provider Provider to remove. * @returns Nothing. */ removeProvider(provider: StorageProviderBase): void; /** * Returns the registered storage providers, optionally filtered by provider type. * * @param type Optional provider type mask to match. * @returns The matching providers. */ getProviders(type?: StorageProviderTypeEnum): StorageProviderBase[]; /** * Initializes each registered provider for the supplied project. * * @param projectId Project ID used to scope persisted data. * @returns A promise that resolves after all providers have been initialized. */ init(projectId: string): Promise; /** * Destroys all registered providers and clears the provider stack. * * @returns A promise that resolves after teardown finishes. */ destroy(): Promise; /** * Notifies providers that a batched write sequence is starting. * * @returns A promise that resolves after all providers have been notified. */ beginBatch(): Promise; /** * Notifies providers that a batched write sequence has finished. * * @returns A promise that resolves after all providers have been notified. */ endBatch(): Promise; /** * Stores a media payload using the provider stack. * * @param storageData Media payload to persist. * @returns A promise that resolves to `true` if at least one provider stored the media successfully. */ storeMedia(storageData: StorageMediaData): Promise; /** * Retrieves a media payload by hash. * * @param mediaHash Media hash to look up. * @returns A promise that resolves to the stored media payload, or `null` if no provider has it. */ getMedia(mediaHash: string): Promise; /** * Removes a media payload from all active providers. * * @param mediaHash Media hash to remove. * @returns A promise that resolves after the removal requests have been issued. */ removeMedia(mediaHash: string): Promise; /** * Checks whether any active provider contains the requested media hash. * * @param mediaHash Media hash to check. * @returns A promise that resolves to `true` if the media exists in at least one provider. */ hasMedia(mediaHash: string): Promise; /** * Synchronizes all active providers against a master provider. * * @param master Provider treated as the source of truth. * @returns A promise that resolves to `true` if any provider reported changes during sync. */ syncProviders(master: StorageProviderBase): Promise; /** * Returns the combined set of known media hashes from all registered providers. * * @returns A promise that resolves to the deduplicated media hash list. */ getMediaHashList(): Promise; }