import ipfsClient from 'ipfs-http-client';
import CID from 'cids';
import type { ClientOptions } from 'ipfs-http-client/src/lib/core';
import BigNumber from 'bignumber.js';
import type { Provider } from '../definitions';
import { Job, JobsManager } from '../jobs-manager';
declare type IpfsClient = ReturnType<typeof ipfsClient>;
interface DagStat {
    NumBlocks: number;
    Size: number;
}
export declare class PinJob extends Job {
    private readonly hash;
    private readonly ipfs;
    private readonly expectedSize;
    private swarmAddresses;
    constructor(ipfs: IpfsClient, hash: string, expectedSize: BigNumber, agreementReference: string);
    private getPeerIdByAgreement;
    private getPeer;
    private swarmConnect;
    private swarmDisconnect;
    private pinProcess;
    private getMetaFileSize;
    private getActualFileSize;
    _run(): Promise<void>;
}
export declare function getDagStat(nodeUrl: string): (cid: CID, options?: any) => Promise<DagStat>;
export declare class IpfsProvider implements Provider {
    private readonly ipfs;
    private jobsManager;
    constructor(jobsManager: JobsManager, ipfs: IpfsClient);
    static bootstrap(jobsManager: JobsManager, options?: ClientOptions | string): Promise<IpfsProvider>;
    /**
     *
     * @param hash
     * @param expectedSize
     * @param agreementReference
     */
    pin(hash: string, expectedSize: BigNumber, agreementReference: string): Promise<void>;
    unpin(hash: string): Promise<void>;
}
export {};
