@babylonlabs-io/ts-sdk 0.0.0-semantic-release.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +124 -6
- package/dist/MockEthereumWallet-CKQlH2AM.cjs +2 -0
- package/dist/MockEthereumWallet-CKQlH2AM.cjs.map +1 -0
- package/dist/MockEthereumWallet-ibdry7pZ.js +127 -0
- package/dist/MockEthereumWallet-ibdry7pZ.js.map +1 -0
- package/dist/PayoutManager-Dg_i_S7w.cjs +2 -0
- package/dist/PayoutManager-Dg_i_S7w.cjs.map +1 -0
- package/dist/PayoutManager-rMj54HDh.js +1112 -0
- package/dist/PayoutManager-rMj54HDh.js.map +1 -0
- package/dist/challengeAssert-34HqeVFH.cjs +2 -0
- package/dist/challengeAssert-34HqeVFH.cjs.map +1 -0
- package/dist/challengeAssert-DVErOd8l.js +423 -0
- package/dist/challengeAssert-DVErOd8l.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +62 -1
- package/dist/index.js.map +1 -1
- package/dist/shared/index.cjs +1 -1
- package/dist/shared/index.d.ts +3 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +5 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/wallets/__tests__/BitcoinWallet.test.d.ts +2 -0
- package/dist/shared/wallets/__tests__/BitcoinWallet.test.d.ts.map +1 -0
- package/dist/shared/wallets/__tests__/EthereumWallet.test.d.ts +2 -0
- package/dist/shared/wallets/__tests__/EthereumWallet.test.d.ts.map +1 -0
- package/dist/shared/wallets/index.d.ts +4 -0
- package/dist/shared/wallets/index.d.ts.map +1 -0
- package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts +106 -0
- package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts.map +1 -0
- package/dist/shared/wallets/interfaces/EthereumWallet.d.ts +6 -0
- package/dist/shared/wallets/interfaces/EthereumWallet.d.ts.map +1 -0
- package/dist/shared/wallets/interfaces/index.d.ts +4 -0
- package/dist/shared/wallets/interfaces/index.d.ts.map +1 -0
- package/dist/shared/wallets/mocks/MockBitcoinWallet.d.ts +29 -0
- package/dist/shared/wallets/mocks/MockBitcoinWallet.d.ts.map +1 -0
- package/dist/shared/wallets/mocks/MockEthereumWallet.d.ts +51 -0
- package/dist/shared/wallets/mocks/MockEthereumWallet.d.ts.map +1 -0
- package/dist/shared/wallets/mocks/index.d.ts +5 -0
- package/dist/shared/wallets/mocks/index.d.ts.map +1 -0
- package/dist/tbv/core/clients/index.d.ts +9 -0
- package/dist/tbv/core/clients/index.d.ts.map +1 -0
- package/dist/tbv/core/clients/mempool/index.d.ts +11 -0
- package/dist/tbv/core/clients/mempool/index.d.ts.map +1 -0
- package/dist/tbv/core/clients/mempool/mempoolApi.d.ts +94 -0
- package/dist/tbv/core/clients/mempool/mempoolApi.d.ts.map +1 -0
- package/dist/tbv/core/clients/mempool/types.d.ts +98 -0
- package/dist/tbv/core/clients/mempool/types.d.ts.map +1 -0
- package/dist/tbv/core/contracts/abis/BTCVaultsManager.abi.d.ts +187 -0
- package/dist/tbv/core/contracts/abis/BTCVaultsManager.abi.d.ts.map +1 -0
- package/dist/tbv/core/contracts/errors.d.ts +50 -0
- package/dist/tbv/core/contracts/errors.d.ts.map +1 -0
- package/dist/tbv/core/contracts/index.d.ts +11 -0
- package/dist/tbv/core/contracts/index.d.ts.map +1 -0
- package/dist/tbv/core/index.cjs +1 -1
- package/dist/tbv/core/index.d.ts +17 -1
- package/dist/tbv/core/index.d.ts.map +1 -1
- package/dist/tbv/core/index.js +59 -1
- package/dist/tbv/core/index.js.map +1 -1
- package/dist/tbv/core/managers/PayoutManager.d.ts +158 -0
- package/dist/tbv/core/managers/PayoutManager.d.ts.map +1 -0
- package/dist/tbv/core/managers/PeginManager.d.ts +327 -0
- package/dist/tbv/core/managers/PeginManager.d.ts.map +1 -0
- package/dist/tbv/core/managers/__tests__/PayoutManager.test.d.ts +8 -0
- package/dist/tbv/core/managers/__tests__/PayoutManager.test.d.ts.map +1 -0
- package/dist/tbv/core/managers/__tests__/PeginManager.test.d.ts +8 -0
- package/dist/tbv/core/managers/__tests__/PeginManager.test.d.ts.map +1 -0
- package/dist/tbv/core/managers/index.d.ts +75 -0
- package/dist/tbv/core/managers/index.d.ts.map +1 -0
- package/dist/tbv/core/primitives/index.cjs +2 -0
- package/dist/tbv/core/primitives/index.d.ts +77 -0
- package/dist/tbv/core/primitives/index.d.ts.map +1 -0
- package/dist/tbv/core/primitives/index.js +21 -0
- package/dist/tbv/{integrations/morpho → core/primitives}/index.js.map +1 -1
- package/dist/tbv/core/primitives/psbt/__tests__/constants.d.ts +137 -0
- package/dist/tbv/core/primitives/psbt/__tests__/constants.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/__tests__/helpers.d.ts +71 -0
- package/dist/tbv/core/primitives/psbt/__tests__/helpers.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/__tests__/payout.test.d.ts +8 -0
- package/dist/tbv/core/primitives/psbt/__tests__/payout.test.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/__tests__/pegin.test.d.ts +5 -0
- package/dist/tbv/core/primitives/psbt/__tests__/pegin.test.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/challengeAssert.d.ts +27 -0
- package/dist/tbv/core/primitives/psbt/challengeAssert.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/depositorPayout.d.ts +27 -0
- package/dist/tbv/core/primitives/psbt/depositorPayout.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/index.d.ts +27 -0
- package/dist/tbv/core/primitives/psbt/index.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/noPayout.d.ts +28 -0
- package/dist/tbv/core/primitives/psbt/noPayout.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/payout.d.ts +99 -0
- package/dist/tbv/core/primitives/psbt/payout.d.ts.map +1 -0
- package/dist/tbv/core/primitives/psbt/pegin.d.ts +88 -0
- package/dist/tbv/core/primitives/psbt/pegin.d.ts.map +1 -0
- package/dist/tbv/core/primitives/scripts/__tests__/payout.test.d.ts +5 -0
- package/dist/tbv/core/primitives/scripts/__tests__/payout.test.d.ts.map +1 -0
- package/dist/tbv/core/primitives/scripts/index.d.ts +10 -0
- package/dist/tbv/core/primitives/scripts/index.d.ts.map +1 -0
- package/dist/tbv/core/primitives/scripts/payout.d.ts +102 -0
- package/dist/tbv/core/primitives/scripts/payout.d.ts.map +1 -0
- package/dist/tbv/core/primitives/utils/__tests__/bitcoin.test.d.ts +5 -0
- package/dist/tbv/core/primitives/utils/__tests__/bitcoin.test.d.ts.map +1 -0
- package/dist/tbv/core/primitives/utils/bitcoin.d.ts +132 -0
- package/dist/tbv/core/primitives/utils/bitcoin.d.ts.map +1 -0
- package/dist/tbv/core/primitives/utils/index.d.ts +9 -0
- package/dist/tbv/core/primitives/utils/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/btc/index.d.ts +10 -0
- package/dist/tbv/core/utils/btc/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/btc/psbtInputFields.d.ts +41 -0
- package/dist/tbv/core/utils/btc/psbtInputFields.d.ts.map +1 -0
- package/dist/tbv/core/utils/btc/scriptType.d.ts +34 -0
- package/dist/tbv/core/utils/btc/scriptType.d.ts.map +1 -0
- package/dist/tbv/core/utils/fee/constants.d.ts +25 -0
- package/dist/tbv/core/utils/fee/constants.d.ts.map +1 -0
- package/dist/tbv/core/utils/fee/index.d.ts +7 -0
- package/dist/tbv/core/utils/fee/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/index.d.ts +16 -0
- package/dist/tbv/core/utils/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/__tests__/btcTxHash.test.d.ts +5 -0
- package/dist/tbv/core/utils/transaction/__tests__/btcTxHash.test.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/__tests__/createSplitTransaction.test.d.ts +5 -0
- package/dist/tbv/core/utils/transaction/__tests__/createSplitTransaction.test.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/__tests__/fundPeginTransaction.test.d.ts +5 -0
- package/dist/tbv/core/utils/transaction/__tests__/fundPeginTransaction.test.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/btcTxHash.d.ts +15 -0
- package/dist/tbv/core/utils/transaction/btcTxHash.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/createSplitTransaction.d.ts +106 -0
- package/dist/tbv/core/utils/transaction/createSplitTransaction.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/fundPeginTransaction.d.ts +70 -0
- package/dist/tbv/core/utils/transaction/fundPeginTransaction.d.ts.map +1 -0
- package/dist/tbv/core/utils/transaction/index.d.ts +9 -0
- package/dist/tbv/core/utils/transaction/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/utxo/__tests__/selectUtxos.test.d.ts +5 -0
- package/dist/tbv/core/utils/utxo/__tests__/selectUtxos.test.d.ts.map +1 -0
- package/dist/tbv/core/utils/utxo/index.d.ts +7 -0
- package/dist/tbv/core/utils/utxo/index.d.ts.map +1 -0
- package/dist/tbv/core/utils/utxo/selectUtxos.d.ts +65 -0
- package/dist/tbv/core/utils/utxo/selectUtxos.d.ts.map +1 -0
- package/dist/tbv/index.cjs +1 -1
- package/dist/tbv/index.js +59 -1
- package/dist/tbv/index.js.map +1 -1
- package/dist/tbv/integrations/aave/clients/__tests__/spoke.test.d.ts +2 -0
- package/dist/tbv/integrations/aave/clients/__tests__/spoke.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/clients/__tests__/transaction.test.d.ts +2 -0
- package/dist/tbv/integrations/aave/clients/__tests__/transaction.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/clients/abis/AaveIntegrationController.abi.json.d.ts +1879 -0
- package/dist/tbv/integrations/aave/clients/abis/AaveSpoke.abi.json.d.ts +1262 -0
- package/dist/tbv/integrations/aave/clients/index.d.ts +4 -0
- package/dist/tbv/integrations/aave/clients/index.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/clients/query.d.ts +27 -0
- package/dist/tbv/integrations/aave/clients/query.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/clients/spoke.d.ts +161 -0
- package/dist/tbv/integrations/aave/clients/spoke.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/clients/transaction.d.ts +110 -0
- package/dist/tbv/integrations/aave/clients/transaction.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/config.d.ts +7 -0
- package/dist/tbv/integrations/aave/config.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/constants.d.ts +113 -0
- package/dist/tbv/integrations/aave/constants.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/index.cjs +2 -0
- package/dist/tbv/integrations/aave/index.cjs.map +1 -0
- package/dist/tbv/integrations/aave/index.d.ts +53 -0
- package/dist/tbv/integrations/aave/index.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/index.js +307 -0
- package/dist/tbv/integrations/aave/index.js.map +1 -0
- package/dist/tbv/integrations/aave/types.d.ts +66 -0
- package/dist/tbv/integrations/aave/types.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/aaveConversions.test.d.ts +5 -0
- package/dist/tbv/integrations/aave/utils/__tests__/aaveConversions.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/borrowRatio.test.d.ts +5 -0
- package/dist/tbv/integrations/aave/utils/__tests__/borrowRatio.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/debtUtils.test.d.ts +5 -0
- package/dist/tbv/integrations/aave/utils/__tests__/debtUtils.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/healthFactor.test.d.ts +5 -0
- package/dist/tbv/integrations/aave/utils/__tests__/healthFactor.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/vaultSelection.test.d.ts +2 -0
- package/dist/tbv/integrations/aave/utils/__tests__/vaultSelection.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/__tests__/vaultSplit.test.d.ts +5 -0
- package/dist/tbv/integrations/aave/utils/__tests__/vaultSplit.test.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/aaveConversions.d.ts +24 -0
- package/dist/tbv/integrations/aave/utils/aaveConversions.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/borrowRatio.d.ts +15 -0
- package/dist/tbv/integrations/aave/utils/borrowRatio.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/debtUtils.d.ts +14 -0
- package/dist/tbv/integrations/aave/utils/debtUtils.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/healthFactor.d.ts +108 -0
- package/dist/tbv/integrations/aave/utils/healthFactor.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/index.d.ts +10 -0
- package/dist/tbv/integrations/aave/utils/index.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/vaultSelection.d.ts +33 -0
- package/dist/tbv/integrations/aave/utils/vaultSelection.d.ts.map +1 -0
- package/dist/tbv/integrations/aave/utils/vaultSplit.d.ts +191 -0
- package/dist/tbv/integrations/aave/utils/vaultSplit.d.ts.map +1 -0
- package/package.json +37 -7
- package/dist/shared/__tests__/example.test.d.ts +0 -6
- package/dist/shared/__tests__/example.test.d.ts.map +0 -1
- package/dist/tbv/core/__tests__/example.test.d.ts +0 -6
- package/dist/tbv/core/__tests__/example.test.d.ts.map +0 -1
- package/dist/tbv/integrations/morpho/index.cjs +0 -2
- package/dist/tbv/integrations/morpho/index.d.ts +0 -2
- package/dist/tbv/integrations/morpho/index.d.ts.map +0 -1
- package/dist/tbv/integrations/morpho/index.js +0 -2
- /package/dist/tbv/{integrations/morpho → core/primitives}/index.cjs.map +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { UTXO } from '../utxo/selectUtxos';
|
|
3
|
+
/**
|
|
4
|
+
* Transaction Funding Utility for Peg-in Transactions
|
|
5
|
+
*
|
|
6
|
+
* This module funds an unfunded transaction template from the SDK by adding
|
|
7
|
+
* UTXO inputs and change outputs, creating a transaction ready for wallet signing.
|
|
8
|
+
*
|
|
9
|
+
* Transaction Flow:
|
|
10
|
+
* 1. SDK buildPeginPsbt() → unfunded transaction (0 inputs, vault + depositor claim outputs)
|
|
11
|
+
* 2. selectUtxosForPegin() → select UTXOs and calculate fees
|
|
12
|
+
* 3. fundPeginTransaction() → add inputs/change, create funded transaction
|
|
13
|
+
*
|
|
14
|
+
* Technical Note:
|
|
15
|
+
* We manually extract the vault output from SDK hex instead of using bitcoinjs-lib
|
|
16
|
+
* parsing because bitcoinjs-lib cannot parse 0-input transactions (even witness format).
|
|
17
|
+
*/
|
|
18
|
+
import * as bitcoin from "bitcoinjs-lib";
|
|
19
|
+
export interface FundPeginTransactionParams {
|
|
20
|
+
/** Unfunded transaction hex from SDK (0 inputs, vault + depositor claim outputs) */
|
|
21
|
+
unfundedTxHex: string;
|
|
22
|
+
/** Selected UTXOs to use as inputs */
|
|
23
|
+
selectedUTXOs: UTXO[];
|
|
24
|
+
/** Change address (from wallet) */
|
|
25
|
+
changeAddress: string;
|
|
26
|
+
/** Change amount in satoshis */
|
|
27
|
+
changeAmount: bigint;
|
|
28
|
+
/** Bitcoin network */
|
|
29
|
+
network: bitcoin.Network;
|
|
30
|
+
}
|
|
31
|
+
/** A single parsed output from the unfunded WASM transaction */
|
|
32
|
+
interface ParsedOutput {
|
|
33
|
+
value: number;
|
|
34
|
+
script: Buffer;
|
|
35
|
+
}
|
|
36
|
+
/** Parsed data from an unfunded WASM transaction */
|
|
37
|
+
interface ParsedUnfundedTx {
|
|
38
|
+
version: number;
|
|
39
|
+
locktime: number;
|
|
40
|
+
outputs: ParsedOutput[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parses an unfunded transaction hex from WASM.
|
|
44
|
+
*
|
|
45
|
+
* WASM produces witness-format transactions with 0 inputs, which bitcoinjs-lib cannot parse.
|
|
46
|
+
* This function manually extracts the transaction components.
|
|
47
|
+
*
|
|
48
|
+
* Format: [version:4bytes][marker:0x00][flag:0x01][inputs:1byte=0x00][outputCount:1byte]
|
|
49
|
+
* [output1: value:8bytes + scriptLen:1byte + script:N bytes]
|
|
50
|
+
* [output2: ...]
|
|
51
|
+
* [locktime:4bytes]
|
|
52
|
+
*
|
|
53
|
+
* @param unfundedTxHex - Raw transaction hex from WASM
|
|
54
|
+
* @returns Parsed transaction components
|
|
55
|
+
* @throws Error if transaction structure is invalid
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseUnfundedWasmTransaction(unfundedTxHex: string): ParsedUnfundedTx;
|
|
58
|
+
/**
|
|
59
|
+
* Funds an unfunded peg-in transaction by adding inputs and change output.
|
|
60
|
+
*
|
|
61
|
+
* Takes an unfunded transaction template (0 inputs, 1 vault output) from the SDK
|
|
62
|
+
* and adds UTXO inputs and a change output to create a funded transaction ready
|
|
63
|
+
* for wallet signing.
|
|
64
|
+
*
|
|
65
|
+
* @param params - Transaction funding parameters
|
|
66
|
+
* @returns Transaction hex string ready for wallet signing
|
|
67
|
+
*/
|
|
68
|
+
export declare function fundPeginTransaction(params: FundPeginTransactionParams): string;
|
|
69
|
+
export { getNetwork } from '../../primitives/utils/bitcoin';
|
|
70
|
+
//# sourceMappingURL=fundPeginTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fundPeginTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/utils/transaction/fundPeginTransaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,0BAA0B;IACzC,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,aAAa,EAAE,IAAI,EAAE,CAAC;IACtB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;CAC1B;AAED,gEAAgE;AAChE,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,MAAM,GACpB,gBAAgB,CAmDlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,0BAA0B,GACjC,MAAM,CAgCR;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/utils/transaction/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectUtxos.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/utils/utxo/__tests__/selectUtxos.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/utils/utxo/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTXO selection utilities for peg-in transactions.
|
|
3
|
+
* Follows btc-staking-ts methodology with iterative fee calculation.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Unspent Transaction Output (UTXO) for funding peg-in transactions.
|
|
7
|
+
*/
|
|
8
|
+
export interface UTXO {
|
|
9
|
+
/**
|
|
10
|
+
* Transaction ID of the UTXO (64-char hex without 0x prefix).
|
|
11
|
+
*/
|
|
12
|
+
txid: string;
|
|
13
|
+
/**
|
|
14
|
+
* Output index within the transaction.
|
|
15
|
+
*/
|
|
16
|
+
vout: number;
|
|
17
|
+
/**
|
|
18
|
+
* Value in satoshis.
|
|
19
|
+
*/
|
|
20
|
+
value: number;
|
|
21
|
+
/**
|
|
22
|
+
* Script public key hex.
|
|
23
|
+
*/
|
|
24
|
+
scriptPubKey: string;
|
|
25
|
+
}
|
|
26
|
+
export interface UTXOSelectionResult {
|
|
27
|
+
selectedUTXOs: UTXO[];
|
|
28
|
+
totalValue: bigint;
|
|
29
|
+
fee: bigint;
|
|
30
|
+
changeAmount: bigint;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Selects UTXOs to fund a peg-in transaction with iterative fee calculation.
|
|
34
|
+
*
|
|
35
|
+
* This function implements the btc-staking-ts approach:
|
|
36
|
+
* 1. Filter UTXOs for script validity (no minimum value filter)
|
|
37
|
+
* 2. Sort by value (largest first) to minimize number of inputs
|
|
38
|
+
* 3. Iteratively add UTXOs and recalculate fee until we have enough
|
|
39
|
+
*
|
|
40
|
+
* The fee recalculation is critical because:
|
|
41
|
+
* - Each UTXO added increases transaction size → increases fee
|
|
42
|
+
* - More fee needed might require another UTXO
|
|
43
|
+
* - Change output detection affects fee (adds output size if needed)
|
|
44
|
+
*
|
|
45
|
+
* @param availableUTXOs - All available UTXOs from wallet
|
|
46
|
+
* @param peginAmount - Amount to peg in (satoshis)
|
|
47
|
+
* @param feeRate - Fee rate (sat/vbyte)
|
|
48
|
+
* @returns Selected UTXOs, total value, calculated fee, and change amount
|
|
49
|
+
* @throws Error if insufficient funds or no valid UTXOs
|
|
50
|
+
*/
|
|
51
|
+
export declare function selectUtxosForPegin(availableUTXOs: UTXO[], peginAmount: bigint, feeRate: number): UTXOSelectionResult;
|
|
52
|
+
/**
|
|
53
|
+
* Checks if change amount is above dust threshold.
|
|
54
|
+
*
|
|
55
|
+
* @param changeAmount - Change amount in satoshis
|
|
56
|
+
* @returns true if change should be added as output, false if it should go to miners
|
|
57
|
+
*/
|
|
58
|
+
export declare function shouldAddChangeOutput(changeAmount: bigint): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the dust threshold value.
|
|
61
|
+
*
|
|
62
|
+
* @returns Dust threshold in satoshis
|
|
63
|
+
*/
|
|
64
|
+
export declare function getDustThreshold(): number;
|
|
65
|
+
//# sourceMappingURL=selectUtxos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectUtxos.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/utils/utxo/selectUtxos.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,IAAI,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,IAAI,EAAE,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,mBAAmB,CAuErB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
package/dist/tbv/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../challengeAssert-34HqeVFH.cjs"),e=require("../PayoutManager-Dg_i_S7w.cjs");exports.buildChallengeAssertPsbt=t.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=t.buildDepositorPayoutPsbt;exports.buildNoPayoutPsbt=t.buildNoPayoutPsbt;exports.buildPayoutPsbt=t.buildPayoutPsbt;exports.buildPeginPsbt=t.buildPeginPsbt;exports.createPayoutScript=t.createPayoutScript;exports.deriveNativeSegwitAddress=t.deriveNativeSegwitAddress;exports.deriveTaprootAddress=t.deriveTaprootAddress;exports.extractPayoutSignature=t.extractPayoutSignature;exports.getNetwork=t.getNetwork;exports.hexToUint8Array=t.hexToUint8Array;exports.isAddressFromPublicKey=t.isAddressFromPublicKey;exports.isValidHex=t.isValidHex;exports.processPublicKeyToXOnly=t.processPublicKeyToXOnly;exports.stripHexPrefix=t.stripHexPrefix;exports.toXOnly=t.toXOnly;exports.uint8ArrayToHex=t.uint8ArrayToHex;exports.validateWalletPubkey=t.validateWalletPubkey;exports.BTCVaultsManagerABI=e.BTCVaultsManagerABI;exports.BTC_DUST_SAT=e.BTC_DUST_SAT;exports.BitcoinScriptType=e.BitcoinScriptType;exports.CONTRACT_ERRORS=e.CONTRACT_ERRORS;exports.DUST_THRESHOLD=e.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=e.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=e.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=e.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MEMPOOL_API_URLS=e.MEMPOOL_API_URLS;exports.P2TR_INPUT_SIZE=e.P2TR_INPUT_SIZE;exports.PayoutManager=e.PayoutManager;exports.PeginManager=e.PeginManager;exports.TX_BUFFER_SIZE_OVERHEAD=e.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=e.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.calculateBtcTxHash=e.calculateBtcTxHash;exports.createSplitTransaction=e.createSplitTransaction;exports.createSplitTransactionPsbt=e.createSplitTransactionPsbt;exports.extractErrorData=e.extractErrorData;exports.fundPeginTransaction=e.fundPeginTransaction;exports.getAddressTxs=e.getAddressTxs;exports.getAddressUtxos=e.getAddressUtxos;exports.getContractErrorMessage=e.getContractErrorMessage;exports.getDustThreshold=e.getDustThreshold;exports.getMempoolApiUrl=e.getMempoolApiUrl;exports.getNetworkFees=e.getNetworkFees;exports.getPsbtInputFields=e.getPsbtInputFields;exports.getScriptType=e.getScriptType;exports.getTxHex=e.getTxHex;exports.getTxInfo=e.getTxInfo;exports.getUtxoInfo=e.getUtxoInfo;exports.handleContractError=e.handleContractError;exports.isKnownContractError=e.isKnownContractError;exports.parseUnfundedWasmTransaction=e.parseUnfundedWasmTransaction;exports.pushTx=e.pushTx;exports.rateBasedTxBufferFee=e.rateBasedTxBufferFee;exports.selectUtxosForPegin=e.selectUtxosForPegin;exports.shouldAddChangeOutput=e.shouldAddChangeOutput;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/tbv/index.js
CHANGED
|
@@ -1,2 +1,60 @@
|
|
|
1
|
-
|
|
1
|
+
import { f as e, c as t, d as r, a as o, b as i, g as T, h as n, i as d, e as l, m as u, j as A, k as E, l as P, p as g, s as c, t as _, u as p, v as x } from "../challengeAssert-DVErOd8l.js";
|
|
2
|
+
import { x as b, B as y, e as R, C as U, D as C, F as O, L as F, M as I, v as f, P as h, k as M, j as B, T as H, W as L, c as N, b as D, d as m, y as v, f as k, l as w, m as W, z as X, g as Y, n as K, o as V, i as Z, h as j, q as G, t as q, u as z, E as J, A as Q, p as $, w as aa, r as sa, s as ea, a as ta } from "../PayoutManager-rMj54HDh.js";
|
|
3
|
+
export {
|
|
4
|
+
b as BTCVaultsManagerABI,
|
|
5
|
+
y as BTC_DUST_SAT,
|
|
6
|
+
R as BitcoinScriptType,
|
|
7
|
+
U as CONTRACT_ERRORS,
|
|
8
|
+
C as DUST_THRESHOLD,
|
|
9
|
+
O as FEE_SAFETY_MARGIN,
|
|
10
|
+
F as LOW_RATE_ESTIMATION_ACCURACY_BUFFER,
|
|
11
|
+
I as MAX_NON_LEGACY_OUTPUT_SIZE,
|
|
12
|
+
f as MEMPOOL_API_URLS,
|
|
13
|
+
h as P2TR_INPUT_SIZE,
|
|
14
|
+
M as PayoutManager,
|
|
15
|
+
B as PeginManager,
|
|
16
|
+
H as TX_BUFFER_SIZE_OVERHEAD,
|
|
17
|
+
L as WALLET_RELAY_FEE_RATE_THRESHOLD,
|
|
18
|
+
e as buildChallengeAssertPsbt,
|
|
19
|
+
t as buildDepositorPayoutPsbt,
|
|
20
|
+
r as buildNoPayoutPsbt,
|
|
21
|
+
o as buildPayoutPsbt,
|
|
22
|
+
i as buildPeginPsbt,
|
|
23
|
+
N as calculateBtcTxHash,
|
|
24
|
+
T as createPayoutScript,
|
|
25
|
+
D as createSplitTransaction,
|
|
26
|
+
m as createSplitTransactionPsbt,
|
|
27
|
+
n as deriveNativeSegwitAddress,
|
|
28
|
+
d as deriveTaprootAddress,
|
|
29
|
+
v as extractErrorData,
|
|
30
|
+
l as extractPayoutSignature,
|
|
31
|
+
k as fundPeginTransaction,
|
|
32
|
+
w as getAddressTxs,
|
|
33
|
+
W as getAddressUtxos,
|
|
34
|
+
X as getContractErrorMessage,
|
|
35
|
+
Y as getDustThreshold,
|
|
36
|
+
K as getMempoolApiUrl,
|
|
37
|
+
u as getNetwork,
|
|
38
|
+
V as getNetworkFees,
|
|
39
|
+
Z as getPsbtInputFields,
|
|
40
|
+
j as getScriptType,
|
|
41
|
+
G as getTxHex,
|
|
42
|
+
q as getTxInfo,
|
|
43
|
+
z as getUtxoInfo,
|
|
44
|
+
J as handleContractError,
|
|
45
|
+
A as hexToUint8Array,
|
|
46
|
+
E as isAddressFromPublicKey,
|
|
47
|
+
Q as isKnownContractError,
|
|
48
|
+
P as isValidHex,
|
|
49
|
+
$ as parseUnfundedWasmTransaction,
|
|
50
|
+
g as processPublicKeyToXOnly,
|
|
51
|
+
aa as pushTx,
|
|
52
|
+
sa as rateBasedTxBufferFee,
|
|
53
|
+
ea as selectUtxosForPegin,
|
|
54
|
+
ta as shouldAddChangeOutput,
|
|
55
|
+
c as stripHexPrefix,
|
|
56
|
+
_ as toXOnly,
|
|
57
|
+
p as uint8ArrayToHex,
|
|
58
|
+
x as validateWalletPubkey
|
|
59
|
+
};
|
|
2
60
|
//# sourceMappingURL=index.js.map
|
package/dist/tbv/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spoke.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/clients/__tests__/spoke.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.test.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/integrations/aave/clients/__tests__/transaction.test.ts"],"names":[],"mappings":""}
|