import { BlockSize } from '../enumerations/blockSize'; import { IBlockStore } from '../interfaces/storage/blockStore'; import { ICloudBlockStoreConfig } from '../interfaces/storage/cloudBlockStoreConfig'; /** * Type for a pluggable disk store factory function. * Accepts a config with storePath and supportedBlockSizes, returns an IBlockStore. */ export type DiskStoreFactoryFn = (config: { storePath: string; supportedBlockSizes: readonly BlockSize[]; }) => IBlockStore; /** * Type for a pluggable Azure Blob Storage store factory function. */ export type AzureStoreFactoryFn = (config: ICloudBlockStoreConfig) => IBlockStore; /** * Type for a pluggable Amazon S3 store factory function. */ export type S3StoreFactoryFn = (config: ICloudBlockStoreConfig) => IBlockStore; /** * Factory for creating block store implementations. * * Supports a pluggable disk store factory so that Node.js-specific * implementations (e.g. DiskBlockStore in brightchain-api-lib) can be * registered without brightchain-lib depending on Node.js APIs. */ export declare class BlockStoreFactory { private static diskStoreFactory; private static azureStoreFactory; private static s3StoreFactory; /** * Register a factory function for creating disk-based block stores. * Call this at import time from brightchain-api-lib to wire in the * Node.js-specific DiskBlockStore implementation. */ static registerDiskStoreFactory(factory: DiskStoreFactoryFn): void; /** * Clear the registered disk store factory. * Primarily useful for testing. */ static clearDiskStoreFactory(): void; /** * Create a memory-based block store (browser-compatible) */ static createMemoryStore(config: { supportedBlockSizes: readonly BlockSize[]; }): IBlockStore; /** * Create a disk-based block store (Node.js only). * * If a disk store factory has been registered via `registerDiskStoreFactory`, * it will be used. Otherwise falls back to MemoryBlockStore. */ static createDiskStore(config: { storePath: string; supportedBlockSizes: readonly BlockSize[]; }): IBlockStore; /** * Register a factory function for creating Azure Blob Storage block stores. * Call this at import time from brightchain-api-lib to wire in the * AzureBlobBlockStore implementation. */ static registerAzureStoreFactory(factory: AzureStoreFactoryFn): void; /** * Clear the registered Azure store factory. * Primarily useful for testing. */ static clearAzureStoreFactory(): void; /** * Create an Azure Blob Storage block store. * * Requires a factory to be registered via `registerAzureStoreFactory`. * Throws StoreError(FactoryNotRegistered) if no factory is registered. */ static createAzureStore(config: ICloudBlockStoreConfig): IBlockStore; /** * Register a factory function for creating Amazon S3 block stores. * Call this at import time from brightchain-api-lib to wire in the * S3BlockStore implementation. */ static registerS3StoreFactory(factory: S3StoreFactoryFn): void; /** * Clear the registered S3 store factory. * Primarily useful for testing. */ static clearS3StoreFactory(): void; /** * Create an Amazon S3 block store. * * Requires a factory to be registered via `registerS3StoreFactory`. * Throws StoreError(FactoryNotRegistered) if no factory is registered. */ static createS3Store(config: ICloudBlockStoreConfig): IBlockStore; } //# sourceMappingURL=blockStoreFactory.d.ts.map