import { PinoLogger } from 'nestjs-pino';
import { AlgoTransaction } from '@tatumio/tatum';
import { AlgoNodeType } from '@tatumio/blockchain-connector-common';
import { Request } from 'express';
export declare abstract class AlgoService {
    protected readonly logger: PinoLogger;
    private static mapBlock;
    private static mapTransaction;
    protected constructor(logger: PinoLogger);
    protected abstract isTestnet(): Promise<boolean>;
    abstract getNodesUrl(nodeType: AlgoNodeType): Promise<string[]>;
    protected abstract storeKMSTransaction(txData: string, currency: string, signatureId: string[], index?: number): Promise<string>;
    protected abstract completeKMSTransaction(txId: string, signatureId: string): Promise<void>;
    getClient(testnet?: boolean): Promise<any>;
    getIndexerClient(): Promise<any>;
    generateWallet(mnem?: string): Promise<{
        address: any;
        secret: any;
    }>;
    generateAddress(fromPrivateKey: string): Promise<any>;
    sendTransaction(tx: AlgoTransaction): Promise<{
        txId: string;
        failed?: boolean;
    } | {
        signatureId: string;
    }>;
    getBalance(address: string): Promise<number>;
    private broadcastOrStoreKMSTransaction;
    private waitForConfirmation;
    broadcast(txData: string, signatureId?: string): Promise<{
        txId: string;
        failed?: boolean;
    }>;
    getCurrentBlock(testnet?: boolean): Promise<number>;
    getBlock(roundNumber: number): Promise<{
        genesisHash: any;
        genesisId: any;
        previousBlockHash: any;
        rewards: any;
        round: any;
        seed: any;
        timestamp: any;
        txns: any;
        txn: any;
        txnc: any;
        upgradeState: any;
        upgradeVote: any;
    }>;
    getTransaction(txid: string): Promise<{
        closeRewards: any;
        closingAmount: any;
        confirmedRound: any;
        fee: number;
        firstValid: any;
        genesisHash: any;
        genesisId: any;
        id: any;
        intraRoundOffset: any;
        lastValid: any;
        note: any;
        paymentTransaction: any;
        receiverRewards: any;
        roundTime: any;
        sender: any;
        senderRewards: any;
        signature: any;
        txType: any;
    }>;
    getPayTransactions(from: string, to: string, limit?: string, next?: string, testnet?: boolean): Promise<{
        nextToken: any;
        transactions: any;
    }>;
    getPayTransactionsByBlockRange(from: number, to: number, testnet?: boolean): Promise<{
        transactions: any;
    }>;
    nodeMethod(req: Request, key: string, algoNodeType: AlgoNodeType): Promise<any>;
}
