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