import { Certificate, type HttpAgentOptions, type SubmitResponse } from '@dfinity/agent';
import type { IcrcCallCanisterRequestParams } from '../types/icrc-requests';
import { HttpAgentProvider } from './http-agent-provider';
export type CustomHttpAgentResponse = Pick<Required<SubmitResponse>, 'requestDetails'> & {
    certificate: Certificate;
};
export declare class UndefinedRequestDetailsError extends Error {
}
export declare class RequestError extends Error {
}
export declare class InvalidCertificateReplyError extends Error {
}
export declare class InvalidCertificateStatusError extends Error {
}
export declare class UndefinedRootKeyError extends Error {
}
export declare class CustomHttpAgent extends HttpAgentProvider {
    private constructor();
    static create(options?: HttpAgentOptions & {
        shouldFetchRootKey?: boolean;
    }): Promise<CustomHttpAgent>;
    request: ({ arg, canisterId, method: methodName, nonce }: Omit<IcrcCallCanisterRequestParams, 'sender'>) => Promise<CustomHttpAgentResponse>;
    private readResponse;
    private assertRequestDetails;
    private assertReply;
    private pollForResponse;
}
