filecoin-pin
Version:
Bridge IPFS content to Filecoin Onchain Cloud using familiar tools
51 lines • 2.37 kB
TypeScript
/**
* Helper: createStorageContextFromDataSetId
*
* Optimized helper to create a StorageContext for an existing dataset ID without
* triggering the expensive "scan all client datasets" hotpath.
*
* This is a workaround for https://github.com/FilOzone/synapse-sdk/issues/435
* until https://github.com/FilOzone/synapse-sdk/pull/438 is merged and published.
*
* Benefits:
* - Reuses Synapse's existing WarmStorageService (no extra initialization)
* - Only fetches data for the single dataset needed (~5-6 RPC calls vs 1500+)
* - Validates ownership, isLive, and isManaged
*
* TODO: Replace with synapse.storage.createContextFromDataSetId() once PR #438 is published
*/
import type { Synapse, WarmStorageService } from '@filoz/synapse-sdk';
import { StorageContext } from '@filoz/synapse-sdk';
import { type ProviderInfo, SPRegistryService } from '@filoz/synapse-sdk/sp-registry';
import type { Logger } from 'pino';
export type StorageContextHelperResult = {
storage: StorageContext;
providerInfo: ProviderInfo;
};
export type CreateStorageContextFromDataSetIdOptions = {
/**
* Whether to check if the provider is approved or not. We default to false here because for many read operations,
* we might want to re-use the dataset even if it's not owned by an approved provider.
* @default false
*/
checkProviderApproval?: boolean;
};
/**
* Create a StorageContext for an existing dataSetId without scanning all datasets.
*/
export declare function createStorageContextFromDataSetId(synapse: Synapse, dataSetId: number, options?: CreateStorageContextFromDataSetIdOptions): Promise<StorageContextHelperResult>;
export type CreateNewStorageContextOptions = {
providerId?: number;
providerAddress?: string;
warmStorage?: WarmStorageService;
spRegistry?: SPRegistryService;
logger?: Logger;
};
/**
* Create a StorageContext configured for creating a brand new dataset without scanning all
* existing datasets. Provider selection favors explicit overrides and otherwise randomly selects
* an active provider that exposes a PDP endpoint.
*/
export declare function createStorageContextForNewDataSet(synapse: Synapse, options?: CreateNewStorageContextOptions): Promise<StorageContextHelperResult>;
export default createStorageContextFromDataSetId;
//# sourceMappingURL=storage-context-helper.d.ts.map