filecoin-pin
Version:
IPFS Pinning Service API implementation that pins to Filecoin's PDP service
82 lines • 2.56 kB
TypeScript
import { EventEmitter } from 'node:events';
import type { CARBlockstoreStats } from './car-blockstore.js';
import type { Config } from './config.js';
import type { CID } from 'multiformats/cid';
import type { Logger } from 'pino';
import type { SynapseService } from './synapse-service.js';
export interface PinningServiceUser {
id: string;
name: string;
}
export interface PinOptions {
name?: string;
origins?: string[];
meta?: Record<string, string>;
}
export interface StoredPinStatus {
id: string;
status: 'queued' | 'pinning' | 'pinned' | 'failed';
created: number;
pin: {
cid: string;
name?: string;
origins?: string[];
meta?: Record<string, string>;
};
info?: Record<string, string>;
}
export interface FilecoinPinMetadata {
carFilePath: string;
carStats: CARBlockstoreStats;
pinStarted: number;
pinCompleted?: number;
synapseCommP?: string;
synapseRootId?: number;
synapseProofSetId?: string;
}
export interface FilecoinStoredPinStatus extends StoredPinStatus {
filecoin?: FilecoinPinMetadata;
}
export interface FilecoinPinStoreInit {
config: Config;
logger: Logger;
synapseService: SynapseService;
}
/**
* Filecoin-specific pin store that creates CAR files for each pin operation
*/
export declare class FilecoinPinStore extends EventEmitter {
private readonly config;
private readonly logger;
private readonly synapseService;
private readonly pins;
private readonly activePins;
private pinCounter;
constructor(init: FilecoinPinStoreInit);
start(): Promise<void>;
stop(): Promise<void>;
pin(user: PinningServiceUser, cid: CID, options?: PinOptions): Promise<FilecoinStoredPinStatus>;
private _processPinInBackground;
get(_user: PinningServiceUser, id: string): Promise<FilecoinStoredPinStatus | undefined>;
update(_user: PinningServiceUser, id: string, options: PinOptions): Promise<FilecoinStoredPinStatus | undefined>;
cancel(_user: PinningServiceUser, id: string): Promise<void>;
list(_user: PinningServiceUser, query?: {
cid?: string;
name?: string;
status?: string;
limit?: number;
}): Promise<{
count: number;
results: FilecoinStoredPinStatus[];
}>;
/**
* Get statistics for all active pins
*/
getActivePinStats(): Array<{
pinId: string;
cid: string;
stats: CARBlockstoreStats;
duration: number;
}>;
}
//# sourceMappingURL=filecoin-pin-store.d.ts.map