@lendasat/lendaswap-sdk-pure 0.0.2 → 0.0.3

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.
Files changed (111) hide show
  1. package/README.md +32 -7
  2. package/dist/api/client.d.ts +15 -18
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/arkade.d.ts +4 -0
  6. package/dist/arkade.d.ts.map +1 -1
  7. package/dist/arkade.js +29 -5
  8. package/dist/arkade.js.map +1 -1
  9. package/dist/client.d.ts +217 -125
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +1015 -273
  12. package/dist/client.js.map +1 -1
  13. package/dist/create/arkade.d.ts +13 -7
  14. package/dist/create/arkade.d.ts.map +1 -1
  15. package/dist/create/arkade.js +46 -53
  16. package/dist/create/arkade.js.map +1 -1
  17. package/dist/create/bitcoin-to-arkade.d.ts.map +1 -1
  18. package/dist/create/bitcoin-to-arkade.js.map +1 -1
  19. package/dist/create/bitcoin.d.ts +6 -3
  20. package/dist/create/bitcoin.d.ts.map +1 -1
  21. package/dist/create/bitcoin.js +34 -48
  22. package/dist/create/bitcoin.js.map +1 -1
  23. package/dist/create/evm-to-arkade.d.ts +12 -13
  24. package/dist/create/evm-to-arkade.d.ts.map +1 -1
  25. package/dist/create/evm-to-arkade.js +38 -59
  26. package/dist/create/evm-to-arkade.js.map +1 -1
  27. package/dist/create/evm-to-bitcoin.d.ts +35 -0
  28. package/dist/create/evm-to-bitcoin.d.ts.map +1 -0
  29. package/dist/create/evm-to-bitcoin.js +71 -0
  30. package/dist/create/evm-to-bitcoin.js.map +1 -0
  31. package/dist/create/evm-to-lightning.d.ts +12 -12
  32. package/dist/create/evm-to-lightning.d.ts.map +1 -1
  33. package/dist/create/evm-to-lightning.js +33 -50
  34. package/dist/create/evm-to-lightning.js.map +1 -1
  35. package/dist/create/index.d.ts +6 -5
  36. package/dist/create/index.d.ts.map +1 -1
  37. package/dist/create/index.js +5 -4
  38. package/dist/create/index.js.map +1 -1
  39. package/dist/create/lightning.d.ts +11 -8
  40. package/dist/create/lightning.d.ts.map +1 -1
  41. package/dist/create/lightning.js +36 -45
  42. package/dist/create/lightning.js.map +1 -1
  43. package/dist/create/types.d.ts +150 -29
  44. package/dist/create/types.d.ts.map +1 -1
  45. package/dist/delegate.d.ts +62 -0
  46. package/dist/delegate.d.ts.map +1 -0
  47. package/dist/delegate.js +284 -0
  48. package/dist/delegate.js.map +1 -0
  49. package/dist/evm/coordinator.d.ts +247 -0
  50. package/dist/evm/coordinator.d.ts.map +1 -0
  51. package/dist/evm/coordinator.js +414 -0
  52. package/dist/evm/coordinator.js.map +1 -0
  53. package/dist/evm/htlc.d.ts +93 -0
  54. package/dist/evm/htlc.d.ts.map +1 -1
  55. package/dist/evm/htlc.js +91 -0
  56. package/dist/evm/htlc.js.map +1 -1
  57. package/dist/evm/index.d.ts +3 -1
  58. package/dist/evm/index.d.ts.map +1 -1
  59. package/dist/evm/index.js +3 -1
  60. package/dist/evm/index.js.map +1 -1
  61. package/dist/evm/signing.d.ts +30 -0
  62. package/dist/evm/signing.d.ts.map +1 -0
  63. package/dist/evm/signing.js +91 -0
  64. package/dist/evm/signing.js.map +1 -0
  65. package/dist/generated/api.d.ts +1033 -970
  66. package/dist/generated/api.d.ts.map +1 -1
  67. package/dist/index.d.ts +8 -9
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -6
  70. package/dist/index.js.map +1 -1
  71. package/dist/price-calculations.d.ts +2 -28
  72. package/dist/price-calculations.d.ts.map +1 -1
  73. package/dist/price-calculations.js +2 -38
  74. package/dist/price-calculations.js.map +1 -1
  75. package/dist/redeem/arkade.js +2 -2
  76. package/dist/redeem/arkade.js.map +1 -1
  77. package/dist/redeem/ethereum.d.ts +26 -10
  78. package/dist/redeem/ethereum.d.ts.map +1 -1
  79. package/dist/redeem/ethereum.js +111 -26
  80. package/dist/redeem/ethereum.js.map +1 -1
  81. package/dist/redeem/gasless.d.ts +33 -14
  82. package/dist/redeem/gasless.d.ts.map +1 -1
  83. package/dist/redeem/gasless.js +60 -53
  84. package/dist/redeem/gasless.js.map +1 -1
  85. package/dist/redeem/index.d.ts +19 -22
  86. package/dist/redeem/index.d.ts.map +1 -1
  87. package/dist/redeem/index.js +110 -31
  88. package/dist/redeem/index.js.map +1 -1
  89. package/dist/redeem/types.d.ts +56 -4
  90. package/dist/redeem/types.d.ts.map +1 -1
  91. package/dist/redeem/types.js +13 -0
  92. package/dist/redeem/types.js.map +1 -1
  93. package/dist/refund/arkade.js +1 -1
  94. package/dist/refund/arkade.js.map +1 -1
  95. package/dist/refund/index.d.ts +1 -1
  96. package/dist/refund/index.d.ts.map +1 -1
  97. package/dist/refund/index.js +1 -1
  98. package/dist/refund/index.js.map +1 -1
  99. package/dist/refund/onchain.d.ts +54 -0
  100. package/dist/refund/onchain.d.ts.map +1 -1
  101. package/dist/refund/onchain.js +130 -0
  102. package/dist/refund/onchain.js.map +1 -1
  103. package/dist/signer/index.js +1 -1
  104. package/dist/signer/index.js.map +1 -1
  105. package/dist/storage/types.d.ts +2 -0
  106. package/dist/storage/types.d.ts.map +1 -1
  107. package/dist/tokens.d.ts +21 -16
  108. package/dist/tokens.d.ts.map +1 -1
  109. package/dist/tokens.js +80 -45
  110. package/dist/tokens.js.map +1 -1
  111. package/package.json +6 -1
package/README.md CHANGED
@@ -101,16 +101,30 @@ console.log(`Swap ID: ${result.response.id}`);
101
101
  #### Arkade to EVM
102
102
 
103
103
  ```typescript
104
- const result = await client.createArkadeToEvmSwap({
104
+ // Create an Arkade-to-EVM swap (any ERC-20 token via 1inch)
105
+ const result = await client.createArkadeToEvmSwapGeneric({
105
106
  targetAddress: "0x1234567890abcdef1234567890abcdef12345678",
106
- targetToken: "usdc_arb",
107
- targetChain: "arbitrum",
108
- sourceAmount: 100000,
107
+ tokenAddress: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", // USDC on Polygon
108
+ evmChainId: 137,
109
+ sourceAmount: 100000, // sats
109
110
  });
110
111
 
111
112
  // Send BTC to the Arkade VHTLC address
112
- console.log(`Send BTC to: ${result.response.htlc_address_arkade}`);
113
+ console.log(`Send BTC to: ${result.response.btc_vhtlc_address}`);
113
114
  console.log(`Swap ID: ${result.response.id}`);
115
+
116
+ // Once the server has funded the EVM HTLC (status: "serverfunded"),
117
+ // claim gaslessly — the server submits the tx on your behalf:
118
+ const claimResult = await client.claimViaGasless(
119
+ result.response.id,
120
+ async (digest) => {
121
+ // Sign the EIP-712 digest with your EVM wallet
122
+ // e.g. using ethers.js: wallet.signMessage(ethers.getBytes(digest))
123
+ return { v: 27, r: "0x...", s: "0x..." };
124
+ },
125
+ "0x1234567890abcdef1234567890abcdef12345678", // destination
126
+ );
127
+ console.log(`Claimed! TX: ${claimResult.txHash}`);
114
128
  ```
115
129
 
116
130
  #### On-chain BTC to EVM
@@ -175,8 +189,19 @@ console.log(`Status: ${swap.status}`);
175
189
  Once the server has funded the EVM HTLC (`serverfunded` status), claim your tokens:
176
190
 
177
191
  ```typescript
178
- const claimResult = await client.claimEvmSwap("swap-uuid");
179
- console.log(`Claim tx: ${claimResult.tx_hash}`);
192
+ // Gasless claim for Arkade-to-EVM swaps — the server submits the tx
193
+ const claimResult = await client.claimViaGasless(
194
+ "swap-uuid",
195
+ async (digest) => {
196
+ // Sign the EIP-712 digest with your EVM wallet
197
+ return { v: 27, r: "0x...", s: "0x..." };
198
+ },
199
+ "0xYourDestinationAddress",
200
+ );
201
+ console.log(`Claim tx: ${claimResult.txHash}`);
202
+
203
+ // For other swap types (Lightning/On-chain to EVM), use the existing claim:
204
+ const result = await client.claim("swap-uuid");
180
205
  ```
181
206
 
182
207
  ### Refund (if swap times out)
@@ -4,28 +4,25 @@ export type ApiClient = ReturnType<typeof createClient<paths>>;
4
4
  export type { paths, components };
5
5
  export type TokenId = components["schemas"]["TokenId"];
6
6
  export type TokenInfo = components["schemas"]["TokenInfo"];
7
- export type AssetPair = components["schemas"]["AssetPair"];
7
+ export type TokenInfos = components["schemas"]["TokenInfos"];
8
8
  export type SwapStatus = components["schemas"]["SwapStatus"];
9
9
  export type QuoteResponse = components["schemas"]["QuoteResponse"];
10
+ export type Chain = components["schemas"]["Chain"];
10
11
  export type GetSwapResponse = components["schemas"]["GetSwapResponse"];
11
- export type BtcToEvmSwapResponse = components["schemas"]["BtcToEvmSwapResponse"];
12
- export type OnchainToEvmSwapResponse = components["schemas"]["OnchainToEvmSwapResponse"];
13
- export type EvmToBtcSwapResponse = components["schemas"]["EvmToBtcSwapResponse"];
14
12
  export type BtcToArkadeSwapResponse = components["schemas"]["BtcToArkadeSwapResponse"];
15
- export type ArkadeToPolygonSwapRequest = components["schemas"]["ArkadeToPolygonSwapRequest"];
16
- export type ArkadeToEthereumSwapRequest = components["schemas"]["ArkadeToEthereumSwapRequest"];
17
- export type ArkadeToArbitrumSwapRequest = components["schemas"]["ArkadeToArbitrumSwapRequest"];
18
- export type LightningToPolygonSwapRequest = components["schemas"]["LightningToPolygonSwapRequest"];
19
- export type LightningToEthereumSwapRequest = components["schemas"]["LightningToEthereumSwapRequest"];
20
- export type LightningToArbitrumSwapRequest = components["schemas"]["LightningToArbitrumSwapRequest"];
21
- export type BitcoinToPolygonSwapRequest = components["schemas"]["BitcoinToPolygonSwapRequest"];
22
- export type BitcoinToEthereumSwapRequest = components["schemas"]["BitcoinToEthereumSwapRequest"];
23
- export type BitcoinToArbitrumSwapRequest = components["schemas"]["BitcoinToArbitrumSwapRequest"];
24
- export type PolygonToArkadeSwapRequest = components["schemas"]["PolygonToArkadeSwapRequest"];
25
- export type ArbitrumToArkadeSwapRequest = components["schemas"]["ArbitrumToArkadeSwapRequest"];
26
- export type EthereumToArkadeSwapRequest = components["schemas"]["EthereumToArkadeSwapRequest"];
27
- export type ClaimGelatoRequest = components["schemas"]["ClaimGelatoRequest"];
28
- export type ClaimGelatoResponse = components["schemas"]["ClaimGelatoResponse"];
13
+ export type EvmToArkadeSwapResponse = components["schemas"]["EvmToArkadeSwapResponse"];
14
+ export type ClaimGaslessRequest = components["schemas"]["ClaimGaslessRequest"];
15
+ export type ClaimGaslessResponse = components["schemas"]["ClaimGaslessResponse"];
16
+ export type ArkadeToEvmSwapRequest = components["schemas"]["ArkadeToEvmSwapRequest"];
17
+ export type ArkadeToEvmSwapResponse = components["schemas"]["ArkadeToEvmSwapResponse"];
18
+ export type DexCallData = components["schemas"]["DexCallData"];
19
+ export type BitcoinToEvmSwapRequest = components["schemas"]["BitcoinToEvmSwapRequest"];
20
+ export type BitcoinToEvmSwapResponse = components["schemas"]["BitcoinToEvmSwapResponse"];
21
+ export type EvmToArkadeGenericSwapRequest = components["schemas"]["EvmToArkadeGenericSwapRequest"];
22
+ export type EvmToBitcoinSwapRequest = components["schemas"]["EvmToBitcoinSwapRequest"];
23
+ export type EvmToBitcoinSwapResponse = components["schemas"]["EvmToBitcoinSwapResponse"];
24
+ export type EvmToLightningSwapResponse = components["schemas"]["EvmToLightningSwapResponse"];
25
+ export type LightningToEvmSwapResponse = components["schemas"]["LightningToEvmSwapResponse"];
29
26
  export interface ApiClientOptions {
30
27
  baseUrl: string;
31
28
  apiKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAE/D,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAGlC,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;AACnE,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACvE,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AAGnD,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAC9B,UAAU,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAGhD,MAAM,MAAM,sBAAsB,GAChC,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAClD,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAG/D,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,wBAAwB,GAClC,UAAU,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAGpD,MAAM,MAAM,6BAA6B,GACvC,UAAU,CAAC,SAAS,CAAC,CAAC,+BAA+B,CAAC,CAAC;AAGzD,MAAM,MAAM,uBAAuB,GACjC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,wBAAwB,GAClC,UAAU,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAC;AAGpD,MAAM,MAAM,0BAA0B,GACpC,UAAU,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAGtD,MAAM,MAAM,0BAA0B,GACpC,UAAU,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAUpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AA2DzC,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAQ;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AA6DzC,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,OAAO,YAAY,CAAQ;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
package/dist/arkade.d.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * Provides functions for querying VHTLC state from the Arkade indexer.
5
5
  */
6
+ /** Overall VTXO lifecycle status */
7
+ export type VtxoStatus = "not_funded" | "spendable" | "recoverable" | "spent" | "mixed";
6
8
  /** VHTLC amounts breakdown */
7
9
  export interface VhtlcAmounts {
8
10
  /** Amount that can be spent (in satoshis) */
@@ -11,6 +13,8 @@ export interface VhtlcAmounts {
11
13
  spent: number;
12
14
  /** Amount that can be recovered via refund (in satoshis) */
13
15
  recoverable: number;
16
+ /** Overall status derived from VTXO states */
17
+ vtxoStatus: VtxoStatus;
14
18
  }
15
19
  /** Parameters for querying VHTLC amounts */
16
20
  export interface GetVhtlcAmountsParams {
@@ -1 +1 @@
1
- {"version":3,"file":"arkade.d.ts","sourceRoot":"","sources":["../src/arkade.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,YAAY,CAAC,CA8BvB"}
1
+ {"version":3,"file":"arkade.d.ts","sourceRoot":"","sources":["../src/arkade.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,oCAAoC;AACpC,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,WAAW,GACX,aAAa,GACb,OAAO,GACP,OAAO,CAAC;AAEZ,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAyDvB"}
package/dist/arkade.js CHANGED
@@ -35,10 +35,34 @@ export async function getVhtlcAmounts(params) {
35
35
  indexerProvider.getVtxos({ scripts: [pkScript], recoverableOnly: true }),
36
36
  ]);
37
37
  const sum = (vtxos) => vtxos.reduce((acc, v) => acc + v.value, 0);
38
- return {
39
- spendable: sum(spendableResult.vtxos),
40
- spent: sum(spentResult.vtxos),
41
- recoverable: sum(recoverableResult.vtxos),
42
- };
38
+ // The indexer's spendableOnly filter doesn't account for expired batches.
39
+ // A preconfirmed VTXO with batchExpiry in the past is effectively expired
40
+ // and can only be spent via delegated settlement, not offchain spend.
41
+ // Reclassify such VTXOs from spendable to recoverable.
42
+ const now = Date.now();
43
+ let actualSpendable = 0;
44
+ let expiredSpendable = 0;
45
+ for (const v of spendableResult.vtxos) {
46
+ const expiry = v.virtualStatus?.batchExpiry;
47
+ if (expiry && expiry <= now) {
48
+ expiredSpendable += v.value;
49
+ }
50
+ else {
51
+ actualSpendable += v.value;
52
+ }
53
+ }
54
+ const spendable = actualSpendable;
55
+ const spent = sum(spentResult.vtxos);
56
+ const recoverable = sum(recoverableResult.vtxos) + expiredSpendable;
57
+ const vtxoStatus = spendable === 0 && spent === 0 && recoverable === 0
58
+ ? "not_funded"
59
+ : spendable > 0 && recoverable > 0
60
+ ? "mixed"
61
+ : spendable > 0
62
+ ? "spendable"
63
+ : recoverable > 0
64
+ ? "recoverable"
65
+ : "spent";
66
+ return { spendable, spent, recoverable, vtxoStatus };
43
67
  }
44
68
  //# sourceMappingURL=arkade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arkade.js","sourceRoot":"","sources":["../src/arkade.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EAEV,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,4CAA4C;AAC5C,MAAM,mBAAmB,GAA2B;IAClD,OAAO,EAAE,yBAAyB;IAClC,MAAM,EAAE,gCAAgC;CACzC,CAAC;AAsBF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA6B;IAE7B,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAE1D,oEAAoE;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9C,mEAAmE;IACnE,MAAM,SAAS,GAAG,eAAe,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,eAAe,GAAoB,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAE5E,iCAAiC;IACjC,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1E,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACtE,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAClE,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;KACzE,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,KAA0B,EAAE,EAAE,CACzC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7C,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC;QACrC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;QAC7B,WAAW,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC;KAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"arkade.js","sourceRoot":"","sources":["../src/arkade.ts"],"names":[],"mappings":"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"}