import type { Entity, Relation } from './graph-model.js';
export interface IPFSConfig {
    privateKey?: string;
    rpcURL?: string;
    authorization?: string;
    withCDN?: boolean;
}
export interface GraphSnapshot {
    nodes: Map<string, Entity>;
    edges: Map<string, Relation>;
    timestamp: number;
    version: string;
    provenance: any[];
}
export declare class IPFSClient {
    private config;
    private synapse;
    private storage;
    constructor(config?: IPFSConfig);
    /**
     * Performs preflight checks to ensure sufficient USDFC balance and allowances
     * @param dataSize Size of data to be stored
     * @param withProofset Whether a new proofset needs to be created
     */
    private performPreflightCheck;
    /**
     * Initialize the IPFS client with Synapse SDK
     */
    initialize(): Promise<void>;
    /**
     * Upload graph snapshot to IPFS
     * @param snapshot Graph data to store
     * @returns CID of the stored content
     */
    uploadSnapshot(snapshot: GraphSnapshot): Promise<string>;
    /**
     * Retrieve graph snapshot from IPFS
     * @param cid Content identifier (CommP)
     * @returns Graph snapshot data
     */
    getSnapshot(cid: string): Promise<GraphSnapshot>;
    /**
     * Pin content to ensure persistence
     * @param cid Content identifier to pin
     */
    pinContent(cid: string): Promise<void>;
}
export declare function createIPFSClient(config?: IPFSConfig): IPFSClient;
//# sourceMappingURL=ipfs.d.ts.map