import { PinoLogger } from 'nestjs-pino';
import { SolanaMintNft } from '@tatumio/tatum-solana';
import { TransferErc721 as CoreTransferErc721, MintErc721 as CoreMintErc721, BurnErc721 as CoreBurnErc721, DeployErc721 as CoreDeployErc721 } from '@tatumio/tatum-core';
import { Transaction, TransactionReceipt } from 'web3-eth';
import { ChainEgldEsdtTransaction } from './dto/ChainEgldEsdtTransaction';
import { AddMinter, BurnErc721, CeloBurnErc721, CeloDeployErc721, CeloMintErc721, CeloMintMultipleErc721, CeloTransferErc721, CeloUpdateCashbackErc721, Currency, DeployErc721, EgldTransaction, EthBurnErc721, EthDeployErc721, EthMintErc721, EthMintMultipleErc721, EthTransferErc721, FlowBurnNft, FlowDeployNft, FlowMintMultipleNft, FlowMintNft, FlowTransferNft, OneBurn721, OneDeploy721, OneMint721, OneMintMultiple721, OneTransfer721, OneUpdateCashback721, TransactionHash, TransferErc721, TronBurnTrc721, TronDeployTrc721, TronMintMultipleTrc721, TronMintTrc721, TronTransferTrc721, TronUpdateCashbackTrc721, UpdateCashbackErc721 } from '@tatumio/tatum';
export declare abstract class NftService {
    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 wrapFlowCall(operation: (proposer: any, payer: any) => Promise<any>): Promise<any>;
    protected abstract getTronClient(testnet: boolean): Promise<any>;
    protected abstract getNodesUrl(chain: Currency, testnet: boolean): Promise<string[]>;
    protected abstract broadcast(chain: Currency, txData: string, signatureId?: string): any;
    protected abstract deployFlowNft(testnet: boolean, body: FlowDeployNft): Promise<TransactionHash>;
    protected abstract getMintBuiltInData(body: CeloMintErc721 | EthMintErc721 | TronMintTrc721 | OneMint721): Promise<CeloMintErc721 | EthMintErc721 | TronMintTrc721 | OneMint721 | CoreMintErc721 | undefined>;
    getMetadataErc721(chain: Currency, token: string, contractAddress: string, account?: string, nonce?: string): Promise<{
        data?: string;
        onchainData?: any;
    }>;
    getRoyaltyErc721(chain: Currency, token: string, contractAddress: string, nonce?: string): Promise<{
        addresses: any;
        values: any;
    }>;
    getProvenanceData(chain: Currency, contractAddress: string, tokenId: string): Promise<any[]>;
    getTokensOfOwner(chain: Currency, address: string, contractAddress: string, nonce?: string | undefined): Promise<any>;
    getContractAddress(chain: Currency, txId: string): Promise<{
        contractAddress: any;
    }>;
    getTransaction(chain: Currency, txId: string): Promise<Transaction & TransactionReceipt | EgldTransaction>;
    transferErc721(body: CeloTransferErc721 | EthTransferErc721 | FlowTransferNft | TronTransferTrc721 | OneTransfer721 | ChainEgldEsdtTransaction | TransferErc721 | CoreTransferErc721): Promise<TransactionHash | {
        signatureId: string;
    }>;
    mintErc721(body: CeloMintErc721 | EthMintErc721 | FlowMintNft | TronMintTrc721 | OneMint721 | ChainEgldEsdtTransaction | SolanaMintNft | CoreMintErc721): Promise<TransactionHash | {
        signatureId: string;
    } | {
        txId: string;
        tokenId: number;
    }>;
    addMinter(body: AddMinter): Promise<TransactionHash | {
        signatureId: string;
    } | {
        txId: string;
        tokenId: number;
    }>;
    mintMultipleErc721(body: CeloMintMultipleErc721 | EthMintMultipleErc721 | FlowMintMultipleNft | TronMintMultipleTrc721 | OneMintMultiple721): Promise<TransactionHash | {
        signatureId: string;
    } | {
        txId: string;
        tokenId: number[];
    }>;
    updateCashbackForAuthor(body: CeloUpdateCashbackErc721 | UpdateCashbackErc721 | TronUpdateCashbackTrc721 | OneUpdateCashback721): Promise<TransactionHash | {
        signatureId: string;
    }>;
    burnErc721(body: CeloBurnErc721 | EthBurnErc721 | FlowBurnNft | TronBurnTrc721 | OneBurn721 | ChainEgldEsdtTransaction | BurnErc721 | CoreBurnErc721): Promise<TransactionHash | {
        signatureId: string;
    }>;
    deployErc721(body: CeloDeployErc721 | EthDeployErc721 | FlowDeployNft | TronDeployTrc721 | OneDeploy721 | ChainEgldEsdtTransaction | DeployErc721 | CoreDeployErc721): Promise<TransactionHash | {
        signatureId: string;
    }>;
    private getElrondNftDataForAddress;
    private getClient;
}
