/// <reference types="node" />
/// <reference types="node" />
import { Entity } from '@dcl/schemas';
import { IFetchComponent, RequestOptions } from '@well-known-components/interfaces';
import FormData from 'form-data';
import { ClientOptions, DeploymentData, ParallelConfig } from './types';
export type AvailableContentResult = {
    cid: string;
    available: boolean;
}[];
export type ContentClient = {
    buildEntityFormDataForDeployment(deployData: DeploymentData, options?: RequestOptions): Promise<FormData>;
    /** Retrieve / Download */
    fetchEntitiesByPointers(pointers: string[], options?: RequestOptions): Promise<Entity[]>;
    fetchEntitiesByIds(ids: string[], options?: RequestOptions & {
        parallel?: ParallelConfig;
    }): Promise<Entity[]>;
    fetchEntityById(id: string, options?: RequestOptions & {
        parallel?: ParallelConfig;
    }): Promise<Entity>;
    downloadContent(contentHash: string, options?: RequestOptions & {
        avoidChecks?: boolean;
    }): Promise<Buffer>;
    isContentAvailable(cids: string[], options?: RequestOptions): Promise<AvailableContentResult>;
    /**
     * Deploys an entity to the content server.
     */
    deploy(deployData: DeploymentData, options?: RequestOptions): Promise<unknown>;
    /**
     * Checks if a pointer is consistent across multiple content servers
     */
    checkPointerConsistency(pointer: string, options?: RequestOptions & {
        parallel?: ParallelConfig;
    }): Promise<{
        isConsistent: boolean;
        upToDateEntities?: Entity[];
        outdatedEntities?: Entity[];
    }>;
};
export declare function downloadContent(fetcher: IFetchComponent, baseUrl: string, contentHash: string, options?: Partial<RequestOptions> & {
    avoidChecks?: boolean;
}): Promise<Buffer>;
export declare function createContentClient(options: ClientOptions): ContentClient;
//# sourceMappingURL=ContentClient.d.ts.map