import { CID } from 'multiformats/cid';
import type { HeliaRemotePinnerInit, RemoteAddOptions, RemoteIsPinnedOptions, RemoteLsOptions, RemotePin, RemotePins } from './index.js';
import type { RemotePinningServiceClient } from '@ipfs-shipyard/pinning-service-client';
import type { AbortOptions, Libp2p } from '@libp2p/interface';
import type { HeliaLibp2p, RmOptions } from 'helia';
import type { Version } from 'multiformats/cid';
export declare class HeliaRemotePins<T extends Libp2p = Libp2p> implements RemotePins {
    #private;
    private readonly helia;
    private readonly remotePinningClient;
    private readonly originFilter;
    private readonly delegateFilter;
    private readonly pollInterval;
    constructor(helia: HeliaLibp2p<T>, remotePinningClient: RemotePinningServiceClient, init?: HeliaRemotePinnerInit);
    /**
     * When starting a pinning operation the remote pinning service can send us a
     * list of nodes to which it will delegate the fetching of data.
     *
     * We need to dial them for the pinning operation to complete.
     */
    private connectToDelegates;
    add(cid: CID, options?: RemoteAddOptions): AsyncGenerator<CID>;
    rm(cid: CID, options?: RmOptions): AsyncGenerator<CID, void, undefined>;
    ls(options?: RemoteLsOptions): AsyncGenerator<RemotePin, void, undefined>;
    get(cid: CID<unknown, number, number, Version>, options?: AbortOptions): Promise<RemotePin>;
    setMetadata(cid: CID<unknown, number, number, Version>, metadata: Record<string, string> | undefined, options?: AbortOptions): Promise<void>;
    isPinned(cid: CID, options?: RemoteIsPinnedOptions): Promise<boolean>;
}
//# sourceMappingURL=helia-remote-pins.d.ts.map