import { TurboModuleRegistry, type TurboModule } from 'react-native'; import type { InvoiceData, Transfer, Unspent, AssetMetadata, AssetCfa, AssetIfa, AssetNia, } from './Interfaces'; export interface Spec extends TurboModule { generateKeys( bitcoinNetwork: 'MAINNET' | 'TESTNET' | 'TESTNET4' | 'REGTEST' | 'SIGNET' ): Promise<{ mnemonic: string; xpub: string; accountXpubVanilla: string; accountXpubColored: string; masterFingerprint: string; }>; restoreKeys( bitcoinNetwork: 'MAINNET' | 'TESTNET' | 'TESTNET4' | 'REGTEST' | 'SIGNET', mnemonic: string ): Promise<{ mnemonic: string; xpub: string; accountXpubVanilla: string; accountXpubColored: string; masterFingerprint: string; }>; restoreBackup(path: string, password: string): Promise; initializeWallet( network: string, accountXpubVanilla: string, accountXpubColored: string, mnemonic: string, masterFingerprint: string, supportedSchemas: string[], maxAllocationsPerUtxo: number, vanillaKeychain: number ): Promise; goOnline( walletId: number, skipConsistencyCheck: boolean, indexerUrl: string ): Promise; getBtcBalance( walletId: number, skipSync: boolean ): Promise<{ vanilla: { settled: number; future: number; spendable: number; }; colored: { settled: number; future: number; spendable: number; }; }>; walletClose(walletId: number): Promise; backup(walletId: number, backupPath: string, password: string): Promise; backupInfo(walletId: number): Promise; blindReceive( walletId: number, assetId: string | null, assignment: { type: | 'FUNGIBLE' | 'NON_FUNGIBLE' | 'INFLATION_RIGHT' | 'REPLACE_RIGHT' | 'ANY'; amount?: number; }, durationSeconds: number | null, transportEndpoints: string[], minConfirmations: number ): Promise<{ invoice: string; recipientId: string; expirationTimestamp: number | null; batchTransferIdx: number; }>; createUtxos( walletId: number, upTo: boolean, num: number | null, size: number | null, feeRate: number, skipSync: boolean ): Promise; createUtxosBegin( walletId: number, upTo: boolean, num: number | null, size: number | null, feeRate: number, skipSync: boolean ): Promise; createUtxosEnd( walletId: number, signedPsbt: string, skipSync: boolean ): Promise; deleteTransfers( walletId: number, batchTransferIdx: number | null, noAssetOnly: boolean ): Promise; drainTo( walletId: number, address: string, destroyAssets: boolean, feeRate: number ): Promise; drainToBegin( walletId: number, address: string, destroyAssets: boolean, feeRate: number ): Promise; drainToEnd(walletId: number, signedPsbt: string): Promise; failTransfers( walletId: number, batchTransferIdx: number | null, noAssetOnly: boolean, skipSync: boolean ): Promise; finalizePsbt(walletId: number, signedPsbt: string): Promise; getAddress(walletId: number): Promise; getAssetBalance( walletId: number, assetId: string ): Promise<{ settled: number; future: number; spendable: number; }>; getAssetMetadata(walletId: number, assetId: string): Promise; getFeeEstimation(walletId: number, blocks: number): Promise; getMediaDir(walletId: number): Promise; getWalletData(walletId: number): Promise<{ dataDir: string; bitcoinNetwork: string; databaseType: string; maxAllocationsPerUtxo: number; accountXpubVanilla: string; accountXpubColored: string; mnemonic?: string; masterFingerprint: string; vanillaKeychain?: number; supportedSchemas: string[]; }>; getWalletDir(walletId: number): Promise; inflate( walletId: number, assetId: string, inflationAmounts: number[], feeRate: number, minConfirmations: number ): Promise<{ txid: string; batchTransferIdx: number; }>; inflateBegin( walletId: number, assetId: string, inflationAmounts: number[], feeRate: number, minConfirmations: number ): Promise; inflateEnd( walletId: number, signedPsbt: string ): Promise<{ txid: string; batchTransferIdx: number; }>; issueAssetCfa( walletId: number, name: string, details: string | null, precision: number, amounts: number[], filePath: string | null ): Promise; issueAssetIfa( walletId: number, ticker: string, name: string, precision: number, amounts: number[], inflationAmounts: number[], replaceRightsNum: number, rejectListUrl: string | null ): Promise; issueAssetNia( walletId: number, ticker: string, name: string, precision: number, amounts: number[] ): Promise; issueAssetUda( walletId: number, ticker: string, name: string, details: string | null, precision: number, mediaFilePath: string | null, attachmentsFilePaths: string[] ): Promise<{ assetId: string; ticker: string; name: string; details?: string; precision: number; timestamp: number; addedAt: number; balance: { settled: number; future: number; spendable: number; }; media?: { filePath: string; mime: string; }; attachments: Array<{ filePath: string; mime: string; }>; }>; listAssets( walletId: number, filterAssetSchemas: string[] ): Promise<{ nia: Array<{ assetId: string; ticker: string; name: string; details?: string; precision: number; issuedSupply: number; timestamp: number; addedAt: number; balance: { settled: number; future: number; spendable: number; }; media?: { filePath: string; mime: string; digest: string; }; }>; uda: Array<{ assetId: string; ticker: string; name: string; details?: string; precision: number; timestamp: number; addedAt: number; balance: { settled: number; future: number; spendable: number; }; token?: { index: number; ticker?: string; name?: string; details?: string; embeddedMedia: boolean; media?: { filePath: string; mime: string; digest: string; }; attachments: Array<{ key: number; filePath: string; mime: string; digest: string; }>; reserves: boolean; }; }>; cfa: Array<{ assetId: string; name: string; details?: string; precision: number; issuedSupply: number; timestamp: number; addedAt: number; balance: { settled: number; future: number; spendable: number; }; media?: { filePath: string; mime: string; digest: string; }; }>; ifa: Array<{ assetId: string; ticker: string; name: string; details?: string; precision: number; initialSupply: number; maxSupply: number; knownCirculatingSupply: number; timestamp: number; addedAt: number; balance: { settled: number; future: number; spendable: number; }; media?: { filePath: string; mime: string; digest: string; }; rejectListUrl?: string; }>; }>; listTransactions( walletId: number, skipSync: boolean ): Promise< Array<{ transactionType: 'RGB_SEND' | 'DRAIN' | 'CREATE_UTXOS' | 'USER'; txid: string; received: number; sent: number; fee: number; confirmationTime?: number; }> >; listTransfers(walletId: number, assetId: string | null): Promise; listUnspents( walletId: number, settledOnly: boolean, skipSync: boolean ): Promise; refresh( walletId: number, assetId: string | null, filter: Array<{ status: 'WAITING_COUNTERPARTY' | 'WAITING_CONFIRMATIONS'; incoming: boolean; }>, skipSync: boolean ): Promise<{ [key: string]: { updatedStatus?: | 'WAITING_COUNTERPARTY' | 'WAITING_CONFIRMATIONS' | 'SETTLED' | 'FAILED'; failure?: string; }; }>; send( walletId: number, recipientMap: { [key: string]: Array<{ recipientId: string; witnessData?: { amountSat: number; blinding?: number; }; assignment: { type: | 'FUNGIBLE' | 'NON_FUNGIBLE' | 'INFLATION_RIGHT' | 'REPLACE_RIGHT' | 'ANY'; amount?: number; }; transportEndpoints: string[]; }>; }, donation: boolean, feeRate: number, minConfirmations: number, skipSync: boolean ): Promise<{ txid: string; batchTransferIdx: number; }>; sendBegin( walletId: number, recipientMap: { [key: string]: Array<{ recipientId: string; witnessData?: { amountSat: number; blinding?: number; }; assignment: { type: | 'FUNGIBLE' | 'NON_FUNGIBLE' | 'INFLATION_RIGHT' | 'REPLACE_RIGHT' | 'ANY'; amount?: number; }; transportEndpoints: string[]; }>; }, donation: boolean, feeRate: number, minConfirmations: number ): Promise; sendBtc( walletId: number, address: string, amount: number, feeRate: number, skipSync: boolean ): Promise; sendBtcBegin( walletId: number, address: string, amount: number, feeRate: number, skipSync: boolean ): Promise; sendBtcEnd( walletId: number, signedPsbt: string, skipSync: boolean ): Promise; sendEnd( walletId: number, signedPsbt: string, skipSync: boolean ): Promise<{ txid: string; batchTransferIdx: number; }>; signPsbt(walletId: number, unsignedPsbt: string): Promise; sync(walletId: number): Promise; witnessReceive( walletId: number, assetId: string | null, assignment: { type: | 'FUNGIBLE' | 'NON_FUNGIBLE' | 'INFLATION_RIGHT' | 'REPLACE_RIGHT' | 'ANY'; amount?: number; }, durationSeconds: number | null, transportEndpoints: string[], minConfirmations: number ): Promise<{ invoice: string; recipientId: string; expirationTimestamp: number | null; batchTransferIdx: number; }>; decodeInvoice(invoice: string): Promise; } export default TurboModuleRegistry.getEnforcing('Rgb');