import { DomainServiceResolution as DomainDescriptor } from "@ledgerhq/domain-service/types";
import { signAddressResolution, signDomainResolution } from "@ledgerhq/domain-service/signers/index";
import { parse as parseTransaction } from "@ethersproject/transactions";
export type LedgerEthTransactionResolution = {
    erc20Tokens: Array<string>;
    nfts: Array<string>;
    externalPlugin: Array<{
        payload: string;
        signature: string;
    }>;
    plugin: Array<string>;
    domains: DomainDescriptor[];
};
export type LoadConfig = {
    nftExplorerBaseURL?: string | null;
    pluginBaseURL?: string | null;
    extraPlugins?: any | null;
    cryptoassetsBaseURL?: string | null;
    calServiceURL?: string | null;
    staticERC20Signatures?: Record<number, string> | null;
    staticEIP712SignaturesV1?: Record<string, any> | null;
    staticEIP712SignaturesV2?: Record<string, any> | null;
};
/**
 * Allows to configure precisely what the service need to resolve.
 * for instance you can set nft:true if you need clear signing on NFTs. If you set it and it is not a NFT transaction, it should still work but will do a useless service resolution.
 */
export type ResolutionConfig = {
    nft?: boolean;
    externalPlugins?: boolean;
    erc20?: boolean;
    domains?: DomainDescriptor[];
    uniswapV3?: boolean;
};
export type LedgerEthTransactionService = {
    resolveTransaction: (rawTxHex: string, loadConfig: LoadConfig, resolutionConfig: ResolutionConfig, parseTx?: typeof parseTransaction, 
    /**
     * Resolves one more contract as an ERC20 token, on top of what the transaction itself needs
     * (e.g. the fee currency of a Celo CIP-64 transaction).
     * The provided blob is looked up first; on a miss the CAL signatures for the chain are fetched
     * and looked up too, so providing a blob does not guarantee that no network request is made.
     * @name additionalErc20SignaturesConfig
     */
    additionalErc20SignaturesConfig?: {
        additionalErc20SignaturesBlob: string;
        contractAddressToResolve: string;
    } | null) => Promise<LedgerEthTransactionResolution>;
    signDomainResolution: typeof signDomainResolution;
    signAddressResolution: typeof signAddressResolution;
    parseTransaction: typeof parseTransaction;
};
//# sourceMappingURL=types.d.ts.map