///
import { IAirGapSignedTransaction } from '../../interfaces/IAirGapSignedTransaction';
import { AirGapTransactionStatus, IAirGapTransaction } from '../../interfaces/IAirGapTransaction';
import { SignedBitcoinTransaction } from '../../serializer/schemas/definitions/signed-transaction-bitcoin';
import { UnsignedTransaction } from '../../serializer/schemas/definitions/unsigned-transaction';
import { RawBitcoinTransaction } from '../../serializer/types';
import { ProtocolSymbols } from '../../utils/ProtocolSymbols';
import { CurrencyUnit, FeeDefaults, ICoinProtocol } from '../ICoinProtocol';
import { ICoinSubProtocol } from '../ICoinSubProtocol';
import { BitcoinBlockbookTransactionCursor, BitcoinBlockbookTransactionResult } from './BitcoinTypes';
import { BitcoinAddress } from './BitcoinAddress';
import { BitcoinProtocolOptions } from './BitcoinProtocolOptions';
import { BitcoinCryptoClient } from './BitcoinCryptoClient';
export interface UTXOResponse {
txid: string;
vout: number;
value: string;
height: number;
confirmations: number;
address: string;
path: string;
}
export interface Vin {
txid: string;
sequence: any;
n: number;
addresses: string[];
value: string;
hex: string;
}
export interface Vout {
value: string;
n: number;
hex: string;
addresses: string[];
spent?: boolean;
}
export interface Transaction {
txid: string;
version: number;
vin: Vin[];
vout: Vout[];
blockhash: string;
blockHeight: number;
confirmations: number;
blockTime: number;
value: string;
valueIn: string;
fees: string;
hex: string;
}
export interface Token {
type: string;
name: string;
path: string;
transfers: number;
decimals: number;
balance: string;
totalReceived: string;
totalSent: string;
}
export interface XPubResponse {
page: number;
totalPages: number;
itemsOnPage: number;
address: string;
balance: string;
totalReceived: string;
totalSent: string;
unconfirmedBalance: string;
unconfirmedTxs: number;
txs: number;
transactions?: Transaction[];
totalTokens?: number;
tokens?: Token[];
}
export interface AddressResponse {
page: number;
totalPages: number;
itemsOnPage: number;
address: string;
balance: string;
totalReceived: string;
totalSent: string;
unconfirmedBalance: string;
unconfirmedTxs: number;
txs: number;
transactions?: Transaction[];
}
export declare class BitcoinProtocol implements ICoinProtocol {
readonly options: BitcoinProtocolOptions;
symbol: string;
name: string;
marketSymbol: string;
feeSymbol: string;
subProtocols: never[];
feeDefaults: FeeDefaults;
decimals: number;
feeDecimals: number;
identifier: ProtocolSymbols;
units: CurrencyUnit[];
supportsHD: boolean;
standardDerivationPath: string;
addressIsCaseSensitive: boolean;
addressValidationPattern: string;
addressPlaceholder: string;
readonly cryptoClient: BitcoinCryptoClient;
constructor(options?: BitcoinProtocolOptions);
getBlockExplorerLinkForAddress(address: string): Promise;
getBlockExplorerLinkForTxId(txId: string): Promise;
getPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getExtendedPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getExtendedPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getAddressFromPublicKey(publicKey: string): Promise;
getAddressesFromPublicKey(publicKey: string): Promise;
getAddressFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressDerivationIndex: number): Promise;
getAddressesFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressCount: number, offset: number): Promise;
getNextAddressFromPublicKey(publicKey: string, current: BitcoinAddress): Promise;
signWithPrivateKey(privateKey: Buffer, transaction: RawBitcoinTransaction): Promise;
signWithExtendedPrivateKey(extendedPrivateKey: string, transaction: RawBitcoinTransaction): Promise;
getTransactionDetails(unsignedTx: UnsignedTransaction): Promise;
getTransactionDetailsFromSigned(signedTx: SignedBitcoinTransaction): Promise;
getBalanceOfAddresses(addresses: string[]): Promise;
getBalanceOfPublicKey(publicKey: string): Promise;
getBalanceOfExtendedPublicKey(extendedPublicKey: string, offset?: number): Promise;
getBalanceOfPublicKeyForSubProtocols(publicKey: string, subProtocols: ICoinSubProtocol[]): Promise;
getAvailableBalanceOfAddresses(addresses: string[]): Promise;
estimateMaxTransactionValueFromExtendedPublicKey(extendedPublicKey: string, recipients: string[], fee?: string): Promise;
estimateMaxTransactionValueFromPublicKey(publicKey: string, recipients: string[], fee?: string): Promise;
estimateFeeDefaultsFromExtendedPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise;
estimateFeeDefaultsFromPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise;
prepareTransactionFromExtendedPublicKey(extendedPublicKey: string, offset: number, recipients: string[], values: string[], fee: string, extras: unknown): Promise;
prepareTransactionFromPublicKey(publicKey: string, recipients: string[], values: string[], fee: string): Promise;
broadcastTransaction(rawTransaction: string): Promise;
getTransactionsFromExtendedPublicKey(extendedPublicKey: string, limit: number, cursor?: BitcoinBlockbookTransactionCursor, addressOffset?: number): Promise;
getTransactionsFromPublicKey(publicKey: string, limit: number, cursor?: BitcoinBlockbookTransactionCursor): Promise;
getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: BitcoinBlockbookTransactionCursor): Promise;
private containsSome;
signMessage(message: string, keypair: {
privateKey: Buffer;
}): Promise;
verifyMessage(message: string, signature: string, publicKey: string): Promise;
encryptAsymmetric(message: string, publicKey: string): Promise;
decryptAsymmetric(message: string, keypair: {
publicKey: string;
privateKey: Buffer;
}): Promise;
encryptAES(message: string, privateKey: Buffer): Promise;
decryptAES(message: string, privateKey: Buffer): Promise;
getTransactionStatuses(transactionHashes: string[]): Promise;
}