import { AirGapTransaction, AirGapTransactionsWithCursor, Amount, Balance, CryptoDerivative, ExtendedKeyPair, ExtendedPublicKey, ExtendedSecretKey, FeeDefaults, KeyPair, ProtocolMetadata, PublicKey, RecursivePartial, SecretKey, Signature, TransactionFullConfiguration, TransactionDetails, TransactionSimpleConfiguration } from '@airgap/module-kit'; import * as bitcoin from 'bitcoinjs-lib'; import { BitcoinCryptoConfiguration } from '../types/crypto'; import { BitcoinProtocolNetwork, BitcoinProtocolOptions, BitcoinUnits } from '../types/protocol'; import { BitcoinSegwitSignedTransaction, BitcoinSegwitUnsignedTransaction, BitcoinTransactionCursor, SegwitTransactionFullConfiguration } from '../types/transaction'; import { BitcoinProtocol, BitcoinProtocolImpl } from './BitcoinProtocol'; export interface BitcoinSegwitProtocol extends BitcoinProtocol { _isBitcoinSegwitProtocol: true; prepareTransactionWithPublicKey(publicKey: PublicKey | ExtendedPublicKey, details: TransactionDetails[], configuration: SegwitTransactionFullConfiguration): Promise; } export declare class BitcoinSegwitProtocolImpl implements BitcoinSegwitProtocol { readonly _isBitcoinProtocol: true; readonly _isBitcoinSegwitProtocol: true; readonly legacy: BitcoinProtocolImpl; private readonly options; private readonly bitcoinJS; constructor(options?: RecursivePartial, bitcoinJS?: typeof bitcoin); private readonly bip32; private readonly metadata; getMetadata(): Promise>; getAddressFromPublicKey(publicKey: PublicKey | ExtendedPublicKey): Promise; private getAddressFromNonExtendedPublicKey; private getAddressFromExtendedPublicKey; deriveFromExtendedPublicKey(publicKey: ExtendedPublicKey, visibilityIndex: number, addressIndex: number): Promise; getDetailsFromTransaction(transaction: BitcoinSegwitSignedTransaction | BitcoinSegwitUnsignedTransaction, _publicKey: PublicKey | ExtendedPublicKey): Promise[]>; private getDetailsFromPSBT; verifyMessageWithPublicKey(message: string, signature: Signature, publicKey: PublicKey | ExtendedPublicKey): Promise; encryptAsymmetricWithPublicKey(payload: string, publicKey: PublicKey | ExtendedPublicKey): Promise; getCryptoConfiguration(): Promise; getKeyPairFromDerivative(derivative: CryptoDerivative): Promise; getExtendedKeyPairFromDerivative(derivative: CryptoDerivative): Promise; deriveFromExtendedSecretKey(extendedSecretKey: ExtendedSecretKey, visibilityIndex: number, addressIndex: number): Promise; signTransactionWithSecretKey(transaction: BitcoinSegwitUnsignedTransaction, secretKey: SecretKey | ExtendedSecretKey): Promise; private signTransactionWithNonExtendedSecretKey; private signTransactionWithExtendedSecretKey; signMessageWithKeyPair(message: string, keyPair: ExtendedKeyPair | KeyPair): Promise; decryptAsymmetricWithKeyPair(payload: string, keyPair: ExtendedKeyPair | KeyPair): Promise; encryptAESWithSecretKey(payload: string, secretKey: SecretKey | ExtendedSecretKey): Promise; decryptAESWithSecretKey(payload: string, secretKey: SecretKey | ExtendedSecretKey): Promise; getNetwork(): Promise; getTransactionsForPublicKey(publicKey: PublicKey | ExtendedPublicKey, limit: number, cursor?: BitcoinTransactionCursor): Promise>; getTransactionsForAddress(address: string, limit: number, cursor?: BitcoinTransactionCursor): Promise>; getTransactionsForAddresses(addresses: string[], limit: number, cursor?: BitcoinTransactionCursor): Promise>; getBalanceOfPublicKey(publicKey: PublicKey | ExtendedPublicKey): Promise>; getBalanceOfAddress(address: string): Promise>; getBalanceOfAddresses(addresses: string[]): Promise>; getTransactionMaxAmountWithPublicKey(publicKey: PublicKey | ExtendedPublicKey, to: string[], configuration?: TransactionFullConfiguration): Promise>; getTransactionFeeWithPublicKey(publicKey: PublicKey | ExtendedPublicKey, details: TransactionDetails[], configuration?: TransactionSimpleConfiguration): Promise>; prepareTransactionWithPublicKey(publicKey: PublicKey | ExtendedPublicKey, details: TransactionDetails[], configuration?: SegwitTransactionFullConfiguration): Promise; private prepareTransactionWithNonExtendedPublicKey; private prepareTransactionWithExtendedPublicKey; broadcastTransaction(transaction: BitcoinSegwitSignedTransaction): Promise; private convertCryptoDerivative; private derivativeToBip32Node; } export declare function createBitcoinSegwitProtocol(options?: RecursivePartial): BitcoinSegwitProtocol;