import { PinoLogger } from 'nestjs-pino';
import { ChainBurnCeloErc20, ChainBurnErc20, ChainBurnKcsErc20, ChainDeployCeloErc20, ChainDeployErc20, ChainDeployKcsErc20, ChainEgldEsdtTransaction, ChainMintCeloErc20, ChainMintErc20, ChainMintKcsErc20, ChainTransferAlgoErc20, ChainTransferBscBep20, ChainTransferCeloErc20Token, ChainTransferErc20, ChainTransferEthErc20, ChainTransferHrm20, ChainTransferKcsErc20, ChainTransferPolygonErc20 } from './Erc20Base';
import { ApproveErc20, Currency, TransactionHash } from '@tatumio/tatum';
export declare abstract class Erc20Service {
    protected readonly logger: PinoLogger;
    protected constructor(logger: PinoLogger);
    protected abstract storeKMSTransaction(txData: string, currency: string, signatureId: string[], index?: number): Promise<string>;
    protected abstract isTestnet(): Promise<boolean>;
    protected abstract getNodesUrl(chain: Currency, testnet: boolean): Promise<string[]>;
    protected abstract broadcast(chain: Currency, txData: string, signatureId?: string): Promise<TransactionHash>;
    private getFirstNodeUrl;
    private getClient;
    getErc20Balance(chain: Currency, address: string, contractAddress: string): Promise<{
        balance: string;
    }>;
    transferErc20(body: ChainTransferEthErc20 | ChainTransferBscBep20 | ChainTransferCeloErc20Token | ChainTransferErc20 | ChainTransferHrm20 | ChainTransferPolygonErc20 | ChainEgldEsdtTransaction | ChainTransferAlgoErc20 | ChainTransferKcsErc20): Promise<TransactionHash | {
        signatureId: string;
    }>;
    burnErc20(body: ChainBurnErc20 | ChainBurnCeloErc20 | ChainEgldEsdtTransaction | ChainBurnKcsErc20): Promise<TransactionHash | {
        signatureId: string;
    }>;
    mintErc20(body: ChainMintErc20 | ChainMintCeloErc20 | ChainEgldEsdtTransaction | ChainMintKcsErc20): Promise<TransactionHash | {
        signatureId: string;
    }>;
    deployErc20(body: ChainDeployErc20 | ChainDeployCeloErc20 | ChainEgldEsdtTransaction | ChainDeployKcsErc20): Promise<TransactionHash | {
        signatureId: string;
    }>;
    approveErc20(body: ApproveErc20 | ChainEgldEsdtTransaction): Promise<TransactionHash | {
        signatureId: string;
    }>;
}
