import { Availability } from './utils/createAdapterAvailability'; export declare enum WalletAdapterBitcoinNetwork { MAINNET = "mainnet", TESTNET = "testnet", UNKNOWN = "unknown" } export declare enum WalletAdapterAddressPurpose { Bitcoin = "bitcoin", Ordinals = "ordinals", BRC20 = "brc20", Runes = "runes" } export declare enum WalletAdapterAddressType { P2SH_P2WPKH = "p2sh-p2wpkh",// aka Nested SegWit P2WPKH = "p2wpkh",// aka Native SegWit P2TR = "p2tr",// aka Taproot P2PKH = "p2pkh" } export declare enum SignMessageAlgorithm { ECDSA = "ECDSA", BIP322 = "BIP322" } export type SignMessageResult = SignMessageResult.ECDSA | SignMessageResult.BIP322; export declare namespace SignMessageResult { interface ECDSA { algorithm: SignMessageAlgorithm.ECDSA; result: string; address: string; publicKey: string; } interface BIP322 { algorithm: SignMessageAlgorithm.BIP322; result: string; address: string; } } export interface WalletAdapterAddressBasic { addressType: WalletAdapterAddressType; address: string; scriptPubKey: string; } export interface WalletAdapterAddressWithPublicKey { /** * Some wallet may won't give us the public key of the address, like Xverse */ publicKey: string; } export interface WalletAdapterAddressWithRedeemScript { /** * Some address is SH address, which requires redeem script to spend, like Xverse */ redeemScript: string; } export interface WalletAdapterAddressWithTapInternalKey { /** * Some address is taproot address, which requires taproot internal key to spend. */ tapInternalKey: string; } export interface WalletAdapterAddress extends Partial { addressType: WalletAdapterAddressType; address: string; scriptPubKey: string; network: WalletAdapterBitcoinNetwork; purposes: WalletAdapterAddressPurpose[]; } export interface WalletAdapterMetadata { name: string; iconUrl: () => Promise; websiteUrl: string; downloadUrl: string; } export interface WalletAdapterFactory { adapterId: string; metadata: WalletAdapterMetadata; getAdapter(): Availability; } export interface WalletAdapter { connect(): Promise; disconnect(): Promise; getAddresses(): Promise; onAddressesChanged(callback: WalletAdapter_onAddressesChanged_callback): { unsubscribe: () => void; }; signMessage(address: string, message: string): Promise; signAndFinalizePsbt(psbtHex: string, signIndices: [address: string, signIndex: number][]): Promise<{ signedPsbtHex: string; }>; sendBitcoinFeeRateCapability: WalletAdapter_sendBitcoinFeeRateCapability; sendBitcoin(fromAddress: string, receiverAddress: string, satoshiAmount: bigint, options?: { feeRate?: number; }): Promise<{ txid: string; }>; } export type WalletAdapter_onAddressesChanged_callbackData = { addresses: WalletAdapterAddress[]; }; export type WalletAdapter_onAddressesChanged_callback = (data: WalletAdapter_onAddressesChanged_callbackData) => void; export type WalletAdapter_sendBitcoinFeeRateCapability = "unavailable" | "available" | "required"; export declare class WalletAdapterErrorBase extends Error { constructor(message: string); } export declare class WalletAdapterNotConnectedError extends WalletAdapterErrorBase { constructor(walletName: string, message?: string); }