UNPKG

filecoin-pin

Version:

Bridge IPFS content to Filecoin Onchain Cloud using familiar tools

112 lines 5.04 kB
import type { Synapse } from '@filoz/synapse-sdk'; import type { CID } from 'multiformats/cid'; import type { Logger } from 'pino'; import { checkFILBalance, checkUSDFCBalance, type PaymentCapacityCheck } from '../payments/index.js'; import { type SynapseService } from '../synapse/index.js'; import type { ProgressEvent, ProgressEventHandler } from '../utils/types.js'; import { type ValidateIPNIProgressEvents, type WaitForIpniProviderResultsOptions } from '../utils/validate-ipni-advertisement.js'; import { type SynapseUploadResult, type UploadProgressEvents } from './synapse.js'; export type { SynapseUploadOptions, SynapseUploadResult, UploadProgressEvents } from './synapse.js'; export { getDownloadURL, getServiceURL, uploadToSynapse } from './synapse.js'; /** * Options for evaluating whether an upload can proceed. */ export type UploadReadinessProgressEvents = ProgressEvent<'checking-balances'> | ProgressEvent<'checking-allowances'> | ProgressEvent<'configuring-allowances'> | ProgressEvent<'allowances-configured', { transactionHash?: string; }> | ProgressEvent<'validating-capacity'>; export interface UploadReadinessOptions { /** Initialized Synapse instance. */ synapse: Synapse; /** Size of the CAR file (bytes). */ fileSize: number; /** * Automatically configure allowances when they are missing. * Defaults to `true` to match current CLI/action behaviour. */ autoConfigureAllowances?: boolean; /** Optional callback for progress updates. */ onProgress?: ProgressEventHandler<UploadReadinessProgressEvents>; } /** * Result of the payment readiness check prior to upload. */ export interface UploadReadinessResult { /** Overall status of the readiness check. */ status: 'ready' | 'blocked'; /** Gas + USDFC validation outcome. */ validation: { isValid: boolean; errorMessage?: string; helpMessage?: string; }; /** FIL/gas balance status. */ filStatus: Awaited<ReturnType<typeof checkFILBalance>>; /** Wallet USDFC balance. */ walletUsdfcBalance: Awaited<ReturnType<typeof checkUSDFCBalance>>; /** Allowance update information. */ allowances: { needsUpdate: boolean; updated: boolean; transactionHash?: string | undefined; }; /** Capacity check from Synapse (present even when blocked). */ capacity?: PaymentCapacityCheck; /** Suggestions returned by the capacity check. */ suggestions: string[]; } /** * Check readiness for uploading a CAR file. * * This performs the same validation chain previously used by the CLI/action: * 1. Ensure basic wallet requirements (FIL for gas, USDFC balance) * 2. Confirm or configure WarmStorage allowances * 3. Validate that the current deposit can cover the upload * * The function only mutates state when `autoConfigureAllowances` is enabled * (default), in which case it will call {@link setMaxAllowances} as needed. * * **Session Key Authentication**: When using session key authentication, * `autoConfigureAllowances` is automatically disabled since payment operations * require the owner wallet to sign. Allowances must be configured separately * by the owner wallet before uploads can proceed. */ export declare function checkUploadReadiness(options: UploadReadinessOptions): Promise<UploadReadinessResult>; export interface UploadExecutionOptions { /** Logger used for structured upload events. */ logger: Logger; /** Optional identifier to help correlate logs. */ contextId?: string; /** Optional umbrella onProgress receiving child progress events. */ onProgress?: ProgressEventHandler<(UploadProgressEvents | ValidateIPNIProgressEvents) & {}>; /** Optional metadata to associate with the upload. */ pieceMetadata?: Record<string, string>; /** * Optional IPNI validation behaviour. When enabled (default), the upload flow will wait for the IPFS Root CID to be announced to IPNI. */ ipniValidation?: { /** * Enable the IPNI validation wait. * * @default: true */ enabled?: boolean; } & Omit<WaitForIpniProviderResultsOptions, 'onProgress'>; } export interface UploadExecutionResult extends SynapseUploadResult { /** Active network derived from the Synapse instance. */ network: string; /** Transaction hash from the piece-addition step (if available). */ transactionHash?: string | undefined; /** * True if the IPFS Root CID was observed on filecoinpin.contact (IPNI). * * You should block any displaying, or attempting to access, of IPFS download URLs unless the IPNI validation is successful. */ ipniValidated: boolean; } /** * Execute the upload to Synapse, returning the same structured data used by the * CLI and GitHub Action. */ export declare function executeUpload(synapseService: SynapseService, carData: Uint8Array, rootCid: CID, options: UploadExecutionOptions): Promise<UploadExecutionResult>; //# sourceMappingURL=index.d.ts.map