/// <reference types="node" />
import { SignersCoordinatorSignResponse } from '@dfns/private-api-client';
import { SendNftTxParams, SendPaymentTxParams, SendTransactionParams } from './requests';
import { NftBalance, NonFungibleToken, TransactionsHistory } from './responses';
export interface WalletInterface {
    getAddress: () => Promise<string>;
    getBalance: (assets: string[]) => Promise<string>;
    getAssetBalance?: (contract: string, blockNumber?: number) => Promise<string>;
    getNativeBalance?: (blockNumber?: number) => Promise<string>;
    getTransactions: (assets: string[]) => Promise<TransactionsHistory>;
    sendPaymentTx: (paymentTxParams: SendPaymentTxParams) => Promise<string>;
    sendTx?: (txParams: SendTransactionParams) => Promise<{
        hash: string;
        response: unknown;
    }>;
    getNftBalance?: (contract: string, blockNumber?: number) => Promise<{
        balance: number;
        tokenIds: string[];
    }>;
    getNft?: (contract: string, tokenId: string) => Promise<NonFungibleToken>;
    sendNftTx?: (nftTxParams: SendNftTxParams) => Promise<string>;
}
export type WalletBalanceResponse = {
    walletId: string;
    balance: string;
};
export type WalletAddressResponse = {
    walletId: string;
    address: string;
};
export type WalletTransactionsResponse = {
    walletId: string;
    transactions: TransactionsHistory;
};
export type WalletPostTransactionResponse = {
    walletId: string;
    tx: string;
    response?: unknown;
};
export type WalletNftBalanceResponse = {
    walletId: string;
    balance: NftBalance;
};
export type WalletNftResponse = {
    walletId: string;
    nft: NonFungibleToken;
};
export type GenerateWalletResponse = {
    key: string;
    id: string;
    parties: string;
    threshold: string;
};
export interface DfnsSigner {
    getPublicKey(): Buffer;
    sign(hash: Buffer): Promise<SignersCoordinatorSignResponse>;
}
