@gvnrdao/dh-lit-actions 0.0.112 → 0.0.192
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/dist/admin-liquidation-validator.action.js +1 -0
- package/dist/admin-liquidation-validator.hash +1 -0
- package/dist/admin-liquidation-validator.meta.json +9 -0
- package/dist/always-signer.action.js +1 -0
- package/dist/always-signer.hash +1 -0
- package/dist/always-signer.meta.json +9 -0
- package/dist/authorization-dummy-b.action.js +1 -0
- package/dist/authorization-dummy-b.hash +1 -0
- package/dist/authorization-dummy-b.meta.json +9 -0
- package/dist/authorization-dummy.action.js +1 -0
- package/dist/authorization-dummy.hash +1 -0
- package/dist/authorization-dummy.meta.json +9 -0
- package/dist/btc-transaction-signer.action.js +1 -0
- package/dist/btc-transaction-signer.hash +1 -0
- package/dist/btc-transaction-signer.meta.json +9 -0
- package/dist/btc-withdrawal.action.js +1 -0
- package/dist/btc-withdrawal.hash +1 -0
- package/dist/btc-withdrawal.meta.json +9 -0
- package/dist/extend-position-validator.action.js +1 -0
- package/dist/extend-position-validator.hash +1 -0
- package/dist/extend-position-validator.meta.json +9 -0
- package/dist/liquidation-validator.action.js +1 -0
- package/dist/liquidation-validator.hash +1 -0
- package/dist/liquidation-validator.meta.json +9 -0
- package/dist/loan-vault-btc-balance.action.js +1 -0
- package/dist/loan-vault-btc-balance.hash +1 -0
- package/dist/loan-vault-btc-balance.meta.json +9 -0
- package/dist/pkp-validator-datil.action.js +1 -0
- package/dist/pkp-validator-datil.hash +1 -0
- package/dist/pkp-validator-datil.meta.json +9 -0
- package/dist/price-oracle.action.js +1 -0
- package/dist/price-oracle.hash +1 -0
- package/dist/price-oracle.meta.json +9 -0
- package/dist/process-payment-sign-only.action.js +1 -0
- package/dist/process-payment-sign-only.hash +1 -0
- package/dist/process-payment-sign-only.meta.json +9 -0
- package/dist/process-payment-validator.action.js +1 -0
- package/dist/process-payment-validator.hash +1 -0
- package/dist/process-payment-validator.meta.json +9 -0
- package/dist/ucd-mint-validator.action.js +1 -0
- package/dist/ucd-mint-validator.hash +1 -0
- package/dist/ucd-mint-validator.meta.json +9 -0
- package/package.json +4 -2
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.d.ts.map +1 -1
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.js +127 -108
- package/pkg-dist/pkg-src/constants/chunks/lit-actions-registry.js.map +1 -1
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.d.ts +47 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.d.ts.map +1 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.js +77 -0
- package/pkg-dist/pkg-src/executors/chunks/price-oracle-executor.js.map +1 -0
- package/pkg-dist/pkg-src/executors/index.d.ts +39 -0
- package/pkg-dist/pkg-src/executors/index.d.ts.map +1 -1
- package/pkg-dist/pkg-src/executors/index.js +41 -1
- package/pkg-dist/pkg-src/executors/index.js.map +1 -1
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.d.ts.map +1 -1
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.js +0 -5
- package/pkg-dist/pkg-src/utils/chunks/cid-utils.js.map +1 -1
- package/pkg-dist/src/constants/chunks/quantum-time.d.ts +5 -5
- package/pkg-dist/src/constants/chunks/quantum-time.js +5 -5
- package/pkg-dist/src/interfaces/chunks/vault-balance.i.d.ts +0 -1
- package/pkg-dist/src/interfaces/chunks/vault-balance.i.d.ts.map +1 -1
- package/pkg-dist/src/modules/bitcoin-data-provider.module.d.ts +7 -6
- package/pkg-dist/src/modules/bitcoin-data-provider.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/bitcoin-data-provider.module.js +93 -97
- package/pkg-dist/src/modules/bitcoin-data-provider.module.js.map +1 -1
- package/pkg-dist/src/modules/business-rules-math.module.d.ts +2 -0
- package/pkg-dist/src/modules/business-rules-math.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/business-rules-math.module.js +9 -2
- package/pkg-dist/src/modules/business-rules-math.module.js.map +1 -1
- package/pkg-dist/src/modules/lit-action-logger.module.d.ts +55 -0
- package/pkg-dist/src/modules/lit-action-logger.module.d.ts.map +1 -0
- package/pkg-dist/src/modules/lit-action-logger.module.js +184 -0
- package/pkg-dist/src/modules/lit-action-logger.module.js.map +1 -0
- package/pkg-dist/src/modules/price-oracle.module.d.ts +41 -3
- package/pkg-dist/src/modules/price-oracle.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/price-oracle.module.js +265 -122
- package/pkg-dist/src/modules/price-oracle.module.js.map +1 -1
- package/pkg-dist/src/modules/protocol-parameters.module.d.ts +10 -0
- package/pkg-dist/src/modules/protocol-parameters.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/protocol-parameters.module.js +49 -2
- package/pkg-dist/src/modules/protocol-parameters.module.js.map +1 -1
- package/pkg-dist/src/modules/quantum-time.module.d.ts +1 -1
- package/pkg-dist/src/modules/quantum-time.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/quantum-time.module.js +18 -9
- package/pkg-dist/src/modules/quantum-time.module.js.map +1 -1
- package/pkg-dist/src/modules/vault-balance.module.d.ts +37 -3
- package/pkg-dist/src/modules/vault-balance.module.d.ts.map +1 -1
- package/pkg-dist/src/modules/vault-balance.module.js +116 -63
- package/pkg-dist/src/modules/vault-balance.module.js.map +1 -1
- package/pkg-dist/src/modules/vault-snapshot.d.ts +5 -3
- package/pkg-dist/src/modules/vault-snapshot.d.ts.map +1 -1
- package/pkg-dist/src/modules/vault-snapshot.js +9 -6
- package/pkg-dist/src/modules/vault-snapshot.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid-utils.js","sourceRoot":"","sources":["../../../../pkg-src/utils/chunks/cid-utils.ts"],"names":[],"mappings":";;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"cid-utils.js","sourceRoot":"","sources":["../../../../pkg-src/utils/chunks/cid-utils.ts"],"names":[],"mappings":";;;;;AAMA,4BAqBC;AA3BD,gDAAwB;AAExB;;;GAGG;AACH,SAAgB,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,iCAAiC;YACjC,MAAM,KAAK,GAAG,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,wBAAwB;YACxB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,6DAA6D,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC/E,0BAA0B;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,yCAAyC;QACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpH,CAAC;AACH,CAAC"}
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
/**
|
|
11
11
|
* Quantum Window Duration (seconds)
|
|
12
12
|
*
|
|
13
|
-
* Each quantum window is
|
|
14
|
-
* Quantum timestamps always end in 00:
|
|
13
|
+
* Each quantum window is 100 seconds long.
|
|
14
|
+
* Quantum timestamps always end in 00: 100, 200, 300, 400...
|
|
15
15
|
*
|
|
16
|
-
* Value:
|
|
16
|
+
* Value: 100 seconds
|
|
17
17
|
*
|
|
18
18
|
* Purpose:
|
|
19
19
|
* - Provides time-bound validation windows
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*
|
|
25
25
|
* Governance-adjustable: NO (protocol-level constant)
|
|
26
26
|
*/
|
|
27
|
-
export declare const QUANTUM_WINDOW_SECONDS =
|
|
27
|
+
export declare const QUANTUM_WINDOW_SECONDS = 100;
|
|
28
28
|
/**
|
|
29
29
|
* Dead Zone Duration (seconds)
|
|
30
30
|
*
|
|
@@ -32,7 +32,7 @@ export declare const QUANTUM_WINDOW_SECONDS = 300;
|
|
|
32
32
|
* During this period, LIT Actions WAIT and Smart Contracts REJECT.
|
|
33
33
|
*
|
|
34
34
|
* Dead zone structure:
|
|
35
|
-
* - Seconds
|
|
35
|
+
* - Seconds 92-99: Last 8 seconds of quantum (before boundary)
|
|
36
36
|
* - Seconds 0-7: First 8 seconds of quantum (after boundary)
|
|
37
37
|
* - Total: 16 seconds
|
|
38
38
|
*
|
|
@@ -13,10 +13,10 @@ exports.SAFE_EXECUTION_WINDOW_SECONDS = exports.DEAD_ZONE_SECONDS = exports.QUAN
|
|
|
13
13
|
/**
|
|
14
14
|
* Quantum Window Duration (seconds)
|
|
15
15
|
*
|
|
16
|
-
* Each quantum window is
|
|
17
|
-
* Quantum timestamps always end in 00:
|
|
16
|
+
* Each quantum window is 100 seconds long.
|
|
17
|
+
* Quantum timestamps always end in 00: 100, 200, 300, 400...
|
|
18
18
|
*
|
|
19
|
-
* Value:
|
|
19
|
+
* Value: 100 seconds
|
|
20
20
|
*
|
|
21
21
|
* Purpose:
|
|
22
22
|
* - Provides time-bound validation windows
|
|
@@ -27,7 +27,7 @@ exports.SAFE_EXECUTION_WINDOW_SECONDS = exports.DEAD_ZONE_SECONDS = exports.QUAN
|
|
|
27
27
|
*
|
|
28
28
|
* Governance-adjustable: NO (protocol-level constant)
|
|
29
29
|
*/
|
|
30
|
-
exports.QUANTUM_WINDOW_SECONDS =
|
|
30
|
+
exports.QUANTUM_WINDOW_SECONDS = 100;
|
|
31
31
|
/**
|
|
32
32
|
* Dead Zone Duration (seconds)
|
|
33
33
|
*
|
|
@@ -35,7 +35,7 @@ exports.QUANTUM_WINDOW_SECONDS = 300;
|
|
|
35
35
|
* During this period, LIT Actions WAIT and Smart Contracts REJECT.
|
|
36
36
|
*
|
|
37
37
|
* Dead zone structure:
|
|
38
|
-
* - Seconds
|
|
38
|
+
* - Seconds 92-99: Last 8 seconds of quantum (before boundary)
|
|
39
39
|
* - Seconds 0-7: First 8 seconds of quantum (after boundary)
|
|
40
40
|
* - Total: 16 seconds
|
|
41
41
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-balance.i.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/chunks/vault-balance.i.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"vault-balance.i.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/chunks/vault-balance.i.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,IAAI,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,IAAI,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,CAAC;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -19,12 +19,10 @@ import { IBitcoinDataProvider } from "../interfaces/chunks/bitcoin-data-provider
|
|
|
19
19
|
export declare class BitcoinDataProvider implements IBitcoinDataProvider {
|
|
20
20
|
private config;
|
|
21
21
|
private timeout;
|
|
22
|
+
private logger;
|
|
22
23
|
constructor(config: BitcoinDataProviderConfig);
|
|
23
24
|
/**
|
|
24
25
|
* Get current Bitcoin block height from provider
|
|
25
|
-
*
|
|
26
|
-
* Returns null if block height cannot be fetched (e.g., provider doesn't support it).
|
|
27
|
-
* This allows graceful degradation for providers that don't implement the Esplora API fully.
|
|
28
26
|
*/
|
|
29
27
|
private getCurrentBlockHeight;
|
|
30
28
|
/**
|
|
@@ -56,7 +54,7 @@ export declare class BitcoinDataProvider implements IBitcoinDataProvider {
|
|
|
56
54
|
* - Blockstream format: {txid, vout, value, confirmations}
|
|
57
55
|
*
|
|
58
56
|
* @param data Raw response from provider API
|
|
59
|
-
* @param currentBlockHeight Current block height (for calculating confirmations from block_height)
|
|
57
|
+
* @param currentBlockHeight Current block height (for calculating confirmations from block_height)
|
|
60
58
|
* @returns Array of normalized UTXOs
|
|
61
59
|
*/
|
|
62
60
|
private parseBlockstreamUTXOs;
|
|
@@ -82,8 +80,11 @@ export declare class BitcoinDataProvider implements IBitcoinDataProvider {
|
|
|
82
80
|
/**
|
|
83
81
|
* Get balance for a Bitcoin address (fast, no UTXO details)
|
|
84
82
|
*
|
|
85
|
-
* This method
|
|
86
|
-
*
|
|
83
|
+
* WARNING: This method does NOT validate individual UTXOs.
|
|
84
|
+
* Use ONLY for non-critical balance display, never for authorization validation.
|
|
85
|
+
* For authorization/security: ALWAYS use getUTXOSet() with full UTXO validation.
|
|
86
|
+
*
|
|
87
|
+
* Uses Esplora /address/:address endpoint to get confirmed balance from chain_stats.
|
|
87
88
|
*
|
|
88
89
|
* @param address - Bitcoin address
|
|
89
90
|
* @returns Balance in satoshis (confirmed balance only)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-data-provider.module.d.ts","sourceRoot":"","sources":["../../../src/modules/bitcoin-data-provider.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,yBAAyB,EACzB,IAAI,EACJ,OAAO,EACR,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"bitcoin-data-provider.module.d.ts","sourceRoot":"","sources":["../../../src/modules/bitcoin-data-provider.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,yBAAyB,EACzB,IAAI,EACJ,OAAO,EACR,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAGpF;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,oBAAoB;IAC9D,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAA4C;gBAE9C,MAAM,EAAE,yBAAyB;IAO7C;;OAEG;YACW,qBAAqB;IAqDnC;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAuDhD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;YACW,iBAAiB;IAqB/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IA2C7B;;;;;;OAMG;YACW,sBAAsB;IA0DpC;;;;;;;;;OASG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC;IAkDnB;;;;;;;;;;;;OAYG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmElD;;;;;;;;OAQG;IACG,cAAc,CAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CA4E3D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CAErB"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.BitcoinDataProvider = void 0;
|
|
14
14
|
exports.createBitcoinDataProvider = createBitcoinDataProvider;
|
|
15
|
+
const lit_action_logger_module_1 = require("./lit-action-logger.module");
|
|
15
16
|
/**
|
|
16
17
|
* Bitcoin Data Provider
|
|
17
18
|
*
|
|
@@ -21,23 +22,19 @@ exports.createBitcoinDataProvider = createBitcoinDataProvider;
|
|
|
21
22
|
class BitcoinDataProvider {
|
|
22
23
|
constructor(config) {
|
|
23
24
|
this.config = config;
|
|
24
|
-
//
|
|
25
|
-
// Can be overridden via config.timeout
|
|
25
|
+
// 15 seconds to leave time for other operations in LIT action (30s total limit)
|
|
26
26
|
this.timeout = config.timeout || 15000;
|
|
27
|
+
this.logger = lit_action_logger_module_1.LitActionLogger.create("BitcoinDataProvider");
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Get current Bitcoin block height from provider
|
|
30
|
-
*
|
|
31
|
-
* Returns null if block height cannot be fetched (e.g., provider doesn't support it).
|
|
32
|
-
* This allows graceful degradation for providers that don't implement the Esplora API fully.
|
|
33
31
|
*/
|
|
34
32
|
async getCurrentBlockHeight() {
|
|
35
|
-
|
|
33
|
+
this.logger.stepStart("0", "getCurrentBlockHeight");
|
|
36
34
|
// If RPC helper is provided, use it
|
|
37
35
|
if (this.config.rpcHelper) {
|
|
38
36
|
const blockCount = await this.config.rpcHelper.getBlockCount();
|
|
39
|
-
|
|
40
|
-
console.log(`[Bitcoin Data] [Timing] getCurrentBlockHeight (RPC helper): ${duration}ms`);
|
|
37
|
+
this.logger.stepEnd("0");
|
|
41
38
|
return blockCount;
|
|
42
39
|
}
|
|
43
40
|
// Fetch from Esplora API
|
|
@@ -47,44 +44,30 @@ class BitcoinDataProvider {
|
|
|
47
44
|
const response = await fetch(`${this.config.providerUrl}/blocks/tip/height`, {
|
|
48
45
|
signal: controller.signal,
|
|
49
46
|
headers: {
|
|
50
|
-
// LIT runtime rejects custom User-Agent headers (gRPC invalid_argument)
|
|
51
|
-
// Match CryptoCompare working pattern - minimal headers only
|
|
52
47
|
Accept: "text/plain",
|
|
48
|
+
"User-Agent": "Mozilla/5.0 (compatible; DiamondHandsValidator/1.0)",
|
|
49
|
+
"ngrok-skip-browser-warning": "true",
|
|
53
50
|
},
|
|
54
51
|
});
|
|
55
52
|
clearTimeout(timeoutId);
|
|
56
53
|
if (!response.ok) {
|
|
57
|
-
|
|
58
|
-
// We'll use a fallback strategy in parseBlockstreamUTXOs
|
|
59
|
-
console.warn(`[Bitcoin Data] Block height endpoint not available (${response.status}), will use fallback confirmation calculation`);
|
|
60
|
-
const duration = Date.now() - getBlockHeightStartTime;
|
|
61
|
-
console.log(`[Bitcoin Data] [Timing] getCurrentBlockHeight (failed): ${duration}ms`);
|
|
62
|
-
return null;
|
|
54
|
+
throw new Error(`Failed to fetch block height: ${response.status} ${response.statusText}`);
|
|
63
55
|
}
|
|
64
56
|
const heightText = await response.text();
|
|
65
57
|
const height = parseInt(heightText.trim(), 10);
|
|
66
58
|
if (isNaN(height)) {
|
|
67
|
-
|
|
68
|
-
const duration = Date.now() - getBlockHeightStartTime;
|
|
69
|
-
console.log(`[Bitcoin Data] [Timing] getCurrentBlockHeight (invalid): ${duration}ms`);
|
|
70
|
-
return null;
|
|
59
|
+
throw new Error(`Invalid block height response: ${heightText}`);
|
|
71
60
|
}
|
|
72
|
-
|
|
73
|
-
console.log(`[Bitcoin Data] [Timing] getCurrentBlockHeight: ${duration}ms`);
|
|
61
|
+
this.logger.stepEnd("0");
|
|
74
62
|
return height;
|
|
75
63
|
}
|
|
76
64
|
catch (error) {
|
|
77
65
|
clearTimeout(timeoutId);
|
|
78
|
-
|
|
79
|
-
console.log(`[Bitcoin Data] [Timing] getCurrentBlockHeight (error): ${duration}ms`);
|
|
66
|
+
this.logger.stepEnd("0");
|
|
80
67
|
if (error.name === "AbortError") {
|
|
81
|
-
|
|
82
|
-
return null;
|
|
68
|
+
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
83
69
|
}
|
|
84
|
-
|
|
85
|
-
// This allows graceful degradation for providers that don't support block height
|
|
86
|
-
console.warn(`[Bitcoin Data] Could not fetch block height: ${error.message}, will use fallback`);
|
|
87
|
-
return null;
|
|
70
|
+
throw error;
|
|
88
71
|
}
|
|
89
72
|
}
|
|
90
73
|
/**
|
|
@@ -94,10 +77,10 @@ class BitcoinDataProvider {
|
|
|
94
77
|
* @returns Array of UTXOs
|
|
95
78
|
*/
|
|
96
79
|
async getUTXOs(address) {
|
|
97
|
-
|
|
80
|
+
this.logger.log("0", `Original address: "${address}"`);
|
|
98
81
|
// Strip network prefix if present (e.g., "REGTEST_address" -> "address")
|
|
99
82
|
const cleanAddress = this.stripNetworkPrefix(address);
|
|
100
|
-
|
|
83
|
+
this.logger.log("0", `Cleaned address: "${cleanAddress}"`);
|
|
101
84
|
// If RPC helper is provided (for regtest/testing), use it directly
|
|
102
85
|
if (this.config.rpcHelper) {
|
|
103
86
|
return await this.fetchUTXOsFromRPC(cleanAddress);
|
|
@@ -107,18 +90,18 @@ class BitcoinDataProvider {
|
|
|
107
90
|
return await this.fetchUTXOsFromProvider(this.config.providerUrl, cleanAddress);
|
|
108
91
|
}
|
|
109
92
|
catch (error) {
|
|
110
|
-
|
|
93
|
+
this.logger.warn("0", `Primary provider failed: ${error.message}`);
|
|
111
94
|
// Try fallback providers if available
|
|
112
95
|
if (this.config.fallbackProviders &&
|
|
113
96
|
this.config.fallbackProviders.length > 0) {
|
|
114
97
|
const sortedFallbacks = [...this.config.fallbackProviders].sort((a, b) => a.priority - b.priority);
|
|
115
98
|
for (const fallback of sortedFallbacks) {
|
|
116
99
|
try {
|
|
117
|
-
|
|
100
|
+
this.logger.log("0", `Trying fallback: ${fallback.name} (${fallback.url})`);
|
|
118
101
|
return await this.fetchUTXOsFromProvider(fallback.url, cleanAddress);
|
|
119
102
|
}
|
|
120
103
|
catch (fallbackError) {
|
|
121
|
-
|
|
104
|
+
this.logger.warn("0", `Fallback ${fallback.name} failed: ${fallbackError.message}`);
|
|
122
105
|
continue;
|
|
123
106
|
}
|
|
124
107
|
}
|
|
@@ -164,7 +147,7 @@ class BitcoinDataProvider {
|
|
|
164
147
|
* - Blockstream format: {txid, vout, value, confirmations}
|
|
165
148
|
*
|
|
166
149
|
* @param data Raw response from provider API
|
|
167
|
-
* @param currentBlockHeight Current block height (for calculating confirmations from block_height)
|
|
150
|
+
* @param currentBlockHeight Current block height (for calculating confirmations from block_height)
|
|
168
151
|
* @returns Array of normalized UTXOs
|
|
169
152
|
*/
|
|
170
153
|
parseBlockstreamUTXOs(data, currentBlockHeight) {
|
|
@@ -176,21 +159,17 @@ class BitcoinDataProvider {
|
|
|
176
159
|
// Calculate confirmations based on format
|
|
177
160
|
let confirmations = 0;
|
|
178
161
|
// Check for Esplora format (status.confirmed and status.block_height)
|
|
179
|
-
if (utxo.status && typeof utxo.status ===
|
|
162
|
+
if (utxo.status && typeof utxo.status === "object") {
|
|
180
163
|
if (utxo.status.confirmed) {
|
|
181
164
|
// For Esplora format: calculate confirmations from block heights
|
|
182
165
|
// confirmations = current_height - tx_block_height + 1
|
|
183
|
-
if (utxo.status.block_height !== undefined &&
|
|
184
|
-
|
|
166
|
+
if (utxo.status.block_height !== undefined &&
|
|
167
|
+
utxo.status.block_height > 0) {
|
|
185
168
|
confirmations = currentBlockHeight - utxo.status.block_height + 1;
|
|
186
|
-
// Ensure confirmations is at least 1 for confirmed transactions
|
|
187
|
-
if (confirmations < 1)
|
|
188
|
-
confirmations = 1;
|
|
189
169
|
}
|
|
190
170
|
else {
|
|
191
|
-
// Confirmed but no block_height or
|
|
192
|
-
//
|
|
193
|
-
// This is safe because confirmed=true means the transaction is in a block
|
|
171
|
+
// Confirmed but no block_height (or block_height is 0)
|
|
172
|
+
// This handles regtest where blocks are mined instantly
|
|
194
173
|
confirmations = 1;
|
|
195
174
|
}
|
|
196
175
|
}
|
|
@@ -217,23 +196,24 @@ class BitcoinDataProvider {
|
|
|
217
196
|
* - providerUrl must include full base path (e.g., "http://localhost:3002/api/esplora")
|
|
218
197
|
*/
|
|
219
198
|
async fetchUTXOsFromProvider(providerUrl, address) {
|
|
220
|
-
|
|
199
|
+
this.logger.stepStart("1", "fetchUTXOsFromProvider");
|
|
221
200
|
// Standard Esplora API format only
|
|
222
201
|
// providerUrl must include full base path (e.g., "http://localhost:3002/api/esplora")
|
|
223
202
|
const endpoint = `${providerUrl}/address/${address}/utxos`;
|
|
224
|
-
|
|
225
|
-
// Get current block height for confirmation calculation
|
|
203
|
+
this.logger.log("1", `Fetching UTXOs from ${endpoint}`);
|
|
204
|
+
// Get current block height for confirmation calculation
|
|
226
205
|
const currentBlockHeight = await this.getCurrentBlockHeight();
|
|
227
|
-
|
|
206
|
+
this.logger.log("1", `Current block height: ${currentBlockHeight}`);
|
|
228
207
|
const controller = new AbortController();
|
|
229
208
|
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
230
209
|
try {
|
|
231
210
|
const response = await fetch(endpoint, {
|
|
232
211
|
signal: controller.signal,
|
|
233
212
|
headers: {
|
|
234
|
-
// LIT runtime rejects custom User-Agent headers (gRPC invalid_argument)
|
|
235
|
-
// Match CryptoCompare working pattern - minimal headers only
|
|
236
213
|
Accept: "application/json",
|
|
214
|
+
"Content-Type": "application/json",
|
|
215
|
+
"User-Agent": "Mozilla/5.0 (compatible; DiamondHandsValidator/1.0)",
|
|
216
|
+
"ngrok-skip-browser-warning": "true", // Skip ngrok browser warning page
|
|
237
217
|
},
|
|
238
218
|
});
|
|
239
219
|
clearTimeout(timeoutId);
|
|
@@ -241,19 +221,16 @@ class BitcoinDataProvider {
|
|
|
241
221
|
throw new Error(`Bitcoin provider error: ${response.status} ${response.statusText}`);
|
|
242
222
|
}
|
|
243
223
|
const data = await response.json();
|
|
244
|
-
// Log
|
|
245
|
-
|
|
246
|
-
console.log(`[Bitcoin Data] Fetched ${utxoCount} UTXOs from provider`);
|
|
224
|
+
// Log the parsed data
|
|
225
|
+
this.logger.log("1", `Raw API Response: ${JSON.stringify(data, null, 2)}`);
|
|
247
226
|
// Parse standard Esplora/Blockstream format with current block height
|
|
248
227
|
const utxos = this.parseBlockstreamUTXOs(data, currentBlockHeight);
|
|
249
|
-
|
|
250
|
-
console.log(`[Bitcoin Data] [Timing] fetchUTXOsFromProvider: ${duration}ms`);
|
|
228
|
+
this.logger.stepEnd("1");
|
|
251
229
|
return utxos;
|
|
252
230
|
}
|
|
253
231
|
catch (error) {
|
|
254
232
|
clearTimeout(timeoutId);
|
|
255
|
-
|
|
256
|
-
console.log(`[Bitcoin Data] [Timing] fetchUTXOsFromProvider (failed): ${duration}ms`);
|
|
233
|
+
this.logger.stepEnd("1");
|
|
257
234
|
if (error.name === "AbortError") {
|
|
258
235
|
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
259
236
|
}
|
|
@@ -271,7 +248,32 @@ class BitcoinDataProvider {
|
|
|
271
248
|
* @returns Complete UTXO set with balance breakdown
|
|
272
249
|
*/
|
|
273
250
|
async getUTXOSet(address, minConfirmations) {
|
|
274
|
-
|
|
251
|
+
// Retry logic to handle transient failures from Bitcoin provider
|
|
252
|
+
let utxos = [];
|
|
253
|
+
let lastError = null;
|
|
254
|
+
const maxRetries = 3;
|
|
255
|
+
const retryDelay = 500; // 500ms between retries
|
|
256
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
257
|
+
try {
|
|
258
|
+
this.logger.log("2", `UTXO query attempt ${attempt}/${maxRetries}...`);
|
|
259
|
+
utxos = await this.getUTXOs(address);
|
|
260
|
+
this.logger.log("2", `UTXO query succeeded on attempt ${attempt}`);
|
|
261
|
+
lastError = null;
|
|
262
|
+
break; // Success - exit retry loop
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
lastError = error;
|
|
266
|
+
this.logger.error("2", `UTXO query failed on attempt ${attempt}: ${error.message}`);
|
|
267
|
+
if (attempt < maxRetries) {
|
|
268
|
+
this.logger.log("2", `Waiting ${retryDelay}ms before retry...`);
|
|
269
|
+
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// If all retries failed, throw the last error
|
|
274
|
+
if (lastError) {
|
|
275
|
+
throw new Error(`Failed to query UTXOs after ${maxRetries} attempts: ${lastError.message}`);
|
|
276
|
+
}
|
|
275
277
|
const totalBalance = utxos.reduce((sum, utxo) => sum + utxo.satoshis, 0n);
|
|
276
278
|
const confirmedBalance = utxos
|
|
277
279
|
.filter((utxo) => utxo.confirmations >= minConfirmations)
|
|
@@ -288,45 +290,37 @@ class BitcoinDataProvider {
|
|
|
288
290
|
/**
|
|
289
291
|
* Get balance for a Bitcoin address (fast, no UTXO details)
|
|
290
292
|
*
|
|
291
|
-
* This method
|
|
292
|
-
*
|
|
293
|
+
* WARNING: This method does NOT validate individual UTXOs.
|
|
294
|
+
* Use ONLY for non-critical balance display, never for authorization validation.
|
|
295
|
+
* For authorization/security: ALWAYS use getUTXOSet() with full UTXO validation.
|
|
296
|
+
*
|
|
297
|
+
* Uses Esplora /address/:address endpoint to get confirmed balance from chain_stats.
|
|
293
298
|
*
|
|
294
299
|
* @param address - Bitcoin address
|
|
295
300
|
* @returns Balance in satoshis (confirmed balance only)
|
|
296
301
|
* @throws Error if the request fails or response is invalid
|
|
297
302
|
*/
|
|
298
303
|
async getBalance(address) {
|
|
299
|
-
const
|
|
300
|
-
const endpoint = `${providerUrl}/address/${
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const
|
|
304
|
-
const controller = new AbortController();
|
|
305
|
-
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
306
|
-
try {
|
|
307
|
-
const res = await fetch(url, {
|
|
308
|
-
signal: controller.signal,
|
|
309
|
-
headers: {
|
|
310
|
-
// LIT runtime rejects custom User-Agent headers (gRPC invalid_argument)
|
|
311
|
-
Accept: "application/json",
|
|
312
|
-
},
|
|
313
|
-
});
|
|
314
|
-
clearTimeout(timeoutId);
|
|
315
|
-
if (!res.ok) {
|
|
316
|
-
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
317
|
-
}
|
|
318
|
-
return await res.json();
|
|
319
|
-
}
|
|
320
|
-
catch (error) {
|
|
321
|
-
clearTimeout(timeoutId);
|
|
322
|
-
if (error.name === "AbortError") {
|
|
323
|
-
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
324
|
-
}
|
|
325
|
-
throw error;
|
|
326
|
-
}
|
|
327
|
-
};
|
|
304
|
+
const cleanAddress = this.stripNetworkPrefix(address);
|
|
305
|
+
const endpoint = `${this.config.providerUrl}/address/${cleanAddress}`;
|
|
306
|
+
this.logger.log("3", `Fetching balance from ${endpoint}`);
|
|
307
|
+
const controller = new AbortController();
|
|
308
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
328
309
|
try {
|
|
329
|
-
const
|
|
310
|
+
const response = await fetch(endpoint, {
|
|
311
|
+
signal: controller.signal,
|
|
312
|
+
headers: {
|
|
313
|
+
Accept: "application/json",
|
|
314
|
+
"Content-Type": "application/json",
|
|
315
|
+
"User-Agent": "Mozilla/5.0 (compatible; DiamondHandsValidator/1.0)",
|
|
316
|
+
"ngrok-skip-browser-warning": "true",
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
clearTimeout(timeoutId);
|
|
320
|
+
if (!response.ok) {
|
|
321
|
+
throw new Error(`Bitcoin provider error: ${response.status} ${response.statusText}`);
|
|
322
|
+
}
|
|
323
|
+
const data = await response.json();
|
|
330
324
|
// Validate response structure
|
|
331
325
|
if (!data.chain_stats) {
|
|
332
326
|
throw new Error("Invalid response: missing chain_stats");
|
|
@@ -339,16 +333,18 @@ class BitcoinDataProvider {
|
|
|
339
333
|
// Calculate confirmed balance: funded - spent
|
|
340
334
|
const confirmedBalance = fundedTxoSum - spentTxoSum;
|
|
341
335
|
const balance = BigInt(confirmedBalance);
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
console.log(` - Spent: ${spentTxoSum} sats`);
|
|
336
|
+
this.logger.log("3", `Balance: ${balance.toString()} sats`);
|
|
337
|
+
this.logger.log("3", ` - Funded: ${fundedTxoSum} sats, Spent: ${spentTxoSum} sats`);
|
|
345
338
|
return balance;
|
|
346
339
|
}
|
|
347
340
|
catch (error) {
|
|
348
|
-
|
|
341
|
+
clearTimeout(timeoutId);
|
|
342
|
+
if (error.name === "AbortError") {
|
|
343
|
+
throw new Error(`Request timeout after ${this.timeout}ms`);
|
|
344
|
+
}
|
|
349
345
|
const errorMessage = error.message || "Unknown error";
|
|
350
|
-
|
|
351
|
-
throw new Error(`Failed to fetch Bitcoin balance for address ${
|
|
346
|
+
this.logger.log("3", `Balance fetch failed: ${errorMessage}`);
|
|
347
|
+
throw new Error(`Failed to fetch Bitcoin balance for address ${cleanAddress}: ${errorMessage}`);
|
|
352
348
|
}
|
|
353
349
|
}
|
|
354
350
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-data-provider.module.js","sourceRoot":"","sources":["../../../src/modules/bitcoin-data-provider.module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bitcoin-data-provider.module.js","sourceRoot":"","sources":["../../../src/modules/bitcoin-data-provider.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,6 +125,8 @@ export declare function calculateBtcValueUsd(btcSats: bigint, btcPriceUsd8Decima
|
|
|
125
125
|
* calculateCollateralRatioBps(9800000000000n, 4000000000000000000000n)
|
|
126
126
|
* // $98,000 collateral / $4,000 debt = 24.5 = 2450% = 24500 bps
|
|
127
127
|
* // Returns: 24500
|
|
128
|
+
*
|
|
129
|
+
* Note: Returns MAX_SAFE_INTEGER for extreme over-collateralization cases
|
|
128
130
|
*/
|
|
129
131
|
export declare function calculateCollateralRatioBps(collateralValueUsd8Decimals: bigint, debtUsd18Decimals: bigint): number;
|
|
130
132
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-rules-math.module.d.ts","sourceRoot":"","sources":["../../../src/modules/business-rules-math.module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAgBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CA4BA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,OAAO,EAClB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAwBR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;IACD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAyCA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,kBAAkB,EAAE,MAAM,EAC1B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAgBT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAcR;AAED
|
|
1
|
+
{"version":3,"file":"business-rules-math.module.d.ts","sourceRoot":"","sources":["../../../src/modules/business-rules-math.module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAgBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CA4BA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,OAAO,EAClB,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAwBR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;IACD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAyCA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,kBAAkB,EAAE,MAAM,EAC1B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAgBT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,GAC3B,MAAM,CAcR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,2BAA2B,EAAE,MAAM,EACnC,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAkCR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,2BAA2B,EAAE,MAAM,EACnC,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACtB,OAAO,CAaT;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
|
@@ -252,6 +252,8 @@ function calculateBtcValueUsd(btcSats, btcPriceUsd8Decimals) {
|
|
|
252
252
|
* calculateCollateralRatioBps(9800000000000n, 4000000000000000000000n)
|
|
253
253
|
* // $98,000 collateral / $4,000 debt = 24.5 = 2450% = 24500 bps
|
|
254
254
|
* // Returns: 24500
|
|
255
|
+
*
|
|
256
|
+
* Note: Returns MAX_SAFE_INTEGER for extreme over-collateralization cases
|
|
255
257
|
*/
|
|
256
258
|
function calculateCollateralRatioBps(collateralValueUsd8Decimals, debtUsd18Decimals) {
|
|
257
259
|
if (collateralValueUsd8Decimals < 0n) {
|
|
@@ -267,10 +269,15 @@ function calculateCollateralRatioBps(collateralValueUsd8Decimals, debtUsd18Decim
|
|
|
267
269
|
const ratioBps = (scaledCollateral * 10000n) / debtUsd18Decimals;
|
|
268
270
|
// Convert to number for comparison
|
|
269
271
|
const ratioBpsNumber = Number(ratioBps);
|
|
270
|
-
// Sanity check: ratio should be
|
|
271
|
-
|
|
272
|
+
// Sanity check: ratio should be non-negative
|
|
273
|
+
// Cap at MAX_SAFE_INTEGER for extreme over-collateralization (prevents Infinity)
|
|
274
|
+
if (ratioBpsNumber < 0) {
|
|
272
275
|
throw new Error(`Collateral ratio out of bounds: ${ratioBpsNumber} bps (${ratioBpsNumber / 100}%)`);
|
|
273
276
|
}
|
|
277
|
+
// Cap at MAX_SAFE_INTEGER to prevent Infinity edge cases
|
|
278
|
+
if (!isFinite(ratioBpsNumber) || ratioBpsNumber > Number.MAX_SAFE_INTEGER) {
|
|
279
|
+
return Number.MAX_SAFE_INTEGER;
|
|
280
|
+
}
|
|
274
281
|
return ratioBpsNumber;
|
|
275
282
|
}
|
|
276
283
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-rules-math.module.js","sourceRoot":"","sources":["../../../src/modules/business-rules-math.module.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAwBH,oEAmBC;AAcD,kDAqCC;AAiBD,sEA2BC;AAaD,gEAgDC;AAaD,wEAqBC;AAgBD,0CAaC;AAgBD,oDAiBC;
|
|
1
|
+
{"version":3,"file":"business-rules-math.module.js","sourceRoot":"","sources":["../../../src/modules/business-rules-math.module.ts"],"names":[],"mappings":"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"}
|