curvance 3.7.5 → 4.0.1
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/abis/ProtocolReader.json +24 -0
- package/dist/classes/Api.d.ts.map +1 -1
- package/dist/classes/Api.js +3 -2
- package/dist/classes/Api.js.map +1 -1
- package/dist/classes/CToken.d.ts +1 -0
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +16 -12
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/DexAggregators/Kuru.d.ts +2 -2
- package/dist/classes/DexAggregators/Kuru.d.ts.map +1 -1
- package/dist/classes/DexAggregators/Kuru.js +35 -12
- package/dist/classes/DexAggregators/Kuru.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +7 -4
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/Market.d.ts +1 -1
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +21 -13
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/ProtocolReader.d.ts +2 -0
- package/dist/classes/ProtocolReader.d.ts.map +1 -1
- package/dist/classes/ProtocolReader.js +3 -0
- package/dist/classes/ProtocolReader.js.map +1 -1
- package/dist/contracts/monad-mainnet.json +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/merkl.d.ts.map +1 -1
- package/dist/integrations/merkl.js +4 -3
- package/dist/integrations/merkl.js.map +1 -1
- package/dist/retry-provider.d.ts.map +1 -1
- package/dist/retry-provider.js +6 -8
- package/dist/retry-provider.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +3 -0
- package/dist/setup.js.map +1 -1
- package/dist/validation.d.ts +45 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +128 -0
- package/dist/validation.js.map +1 -0
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-provider.js","sourceRoot":"","sources":["../src/retry-provider.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"retry-provider.js","sourceRoot":"","sources":["../src/retry-provider.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAW,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAW,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,eAAO,IAAI,YAAY,EAAE;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACnD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,IAAI,WAAW,EAAE,MAAM,EAAO,CAAC;AAEtC,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,GAAE,iBAAiB,GAAG,IAAW,EAAE,mBAAmB,GAAE,OAAe,EAAE,OAAO,GAAE,MAAmC;;;;;GAwCpL"}
|
package/dist/setup.js
CHANGED
|
@@ -9,11 +9,14 @@ const OracleManager_1 = require("./classes/OracleManager");
|
|
|
9
9
|
const retry_provider_1 = require("./retry-provider");
|
|
10
10
|
const chains_1 = require("./chains");
|
|
11
11
|
const Api_1 = require("./classes/Api");
|
|
12
|
+
const validation_1 = require("./validation");
|
|
12
13
|
exports.all_markets = [];
|
|
13
14
|
async function setupChain(chain, provider = null, approval_protection = false, api_url = "https://api.curvance.com") {
|
|
14
15
|
if (!(chain in chains_1.chain_config)) {
|
|
15
16
|
throw new Error("Chain does not have a corresponding config");
|
|
16
17
|
}
|
|
18
|
+
// Validate api_url scheme before any network calls
|
|
19
|
+
(0, validation_1.validateApiUrl)(api_url);
|
|
17
20
|
if (provider == null) {
|
|
18
21
|
provider = chains_1.chain_config[chain].provider;
|
|
19
22
|
}
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;;AAoBA,gCAwCC;AA5DD,uCAAiE;AACjE,6CAA0C;AAE1C,6DAA0D;AAC1D,2DAAwD;AACxD,qDAA2D;AAC3D,qCAAwC;AACxC,uCAAoC;AACpC,6CAA8C;AAUnC,QAAA,WAAW,GAAa,EAAE,CAAC;AAE/B,KAAK,UAAU,UAAU,CAAC,KAAqB,EAAE,WAAqC,IAAI,EAAE,sBAA+B,KAAK,EAAE,UAAkB,0BAA0B;IACjL,IAAG,CAAC,CAAC,KAAK,IAAI,qBAAY,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IAED,mDAAmD;IACnD,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;IAExB,IAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QAClB,QAAQ,GAAG,qBAAY,CAAC,KAAK,CAAC,CAAC,QAAS,CAAC;IAC7C,CAAC;IAED,QAAQ,GAAG,IAAA,wCAAuB,EAAC,QAAQ,CAAC,CAAC;IAE7C,oBAAY,GAAG;QACX,KAAK;QACL,QAAQ;QACR,mBAAmB;QACnB,SAAS,EAAE,IAAA,8BAAoB,EAAC,KAAK,CAAC;QACtC,OAAO;KACV,CAAA;IAED,IAAG,CAAC,CAAC,gBAAgB,IAAI,oBAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,qCAAqC,CAAC,CAAC;IAC3F,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,IAAI,oBAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,oCAAoC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,SAAG,CAAC,UAAU,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,oBAAY,CAAC,SAAS,CAAC,cAAyB,CAAC,CAAA;IACnF,MAAM,cAAc,GAAG,IAAI,6BAAa,CAAC,oBAAY,CAAC,SAAS,CAAC,aAAwB,CAAC,CAAC;IAE1F,mBAAW,GAAG,MAAM,eAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,oBAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEzG,OAAO;QACH,OAAO,EAAE,mBAAW;QACpB,MAAM;QACN,MAAM,EAAE,qBAAY,CAAC,KAAK,CAAC,CAAC,MAAM;QAClC,gBAAgB,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI;KACjD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { address } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a string from an untrusted source (API response) into BigInt.
|
|
4
|
+
* Throws a descriptive error instead of raw SyntaxError on invalid input.
|
|
5
|
+
*
|
|
6
|
+
* @param value - Value to convert (string, number, bigint)
|
|
7
|
+
* @param context - Human-readable label for error messages (e.g. "KyberSwap amountOut")
|
|
8
|
+
*/
|
|
9
|
+
export declare function safeBigInt(value: unknown, context: string): bigint;
|
|
10
|
+
/**
|
|
11
|
+
* Validate and checksum an address from an untrusted source.
|
|
12
|
+
* The SDK `address` type is compile-time only — this adds runtime enforcement.
|
|
13
|
+
*
|
|
14
|
+
* @param raw - Address string to validate
|
|
15
|
+
* @param context - Human-readable label for error messages
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateAddress(raw: string, context: string): address;
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a router address from a DEX API matches the expected address.
|
|
20
|
+
*
|
|
21
|
+
* @param actual - Router address returned by the API
|
|
22
|
+
* @param expected - Known router address from SDK config
|
|
23
|
+
* @param aggregatorName - Name of the DEX aggregator for error messages
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateRouterAddress(actual: string, expected: string, aggregatorName: string): address;
|
|
26
|
+
/**
|
|
27
|
+
* Wrapper around fetch() that adds a timeout via AbortController.
|
|
28
|
+
* If the caller already provided a signal, the timeout races against it.
|
|
29
|
+
*
|
|
30
|
+
* @param url - Request URL
|
|
31
|
+
* @param options - Standard RequestInit options
|
|
32
|
+
* @param timeoutMs - Timeout in milliseconds (default 15s)
|
|
33
|
+
*/
|
|
34
|
+
export declare function fetchWithTimeout(url: string, options?: RequestInit, timeoutMs?: number): Promise<Response>;
|
|
35
|
+
/**
|
|
36
|
+
* Validate that an API URL uses HTTPS and is well-formed.
|
|
37
|
+
* Prevents SSRF when api_url is consumer-provided.
|
|
38
|
+
*/
|
|
39
|
+
export declare function validateApiUrl(url: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Validate that slippage is within valid BPS range [0, 10000].
|
|
42
|
+
* Prevents negative min_out calculations when slippage > 100%.
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateSlippageBps(slippage: bigint, context: string): bigint;
|
|
45
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYrE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACvB,OAAO,CAQT;AAMD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,EACzB,SAAS,GAAE,MAA2B,GACvC,OAAO,CAAC,QAAQ,CAAC,CAsBnB;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBlD;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7E"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safeBigInt = safeBigInt;
|
|
4
|
+
exports.validateAddress = validateAddress;
|
|
5
|
+
exports.validateRouterAddress = validateRouterAddress;
|
|
6
|
+
exports.fetchWithTimeout = fetchWithTimeout;
|
|
7
|
+
exports.validateApiUrl = validateApiUrl;
|
|
8
|
+
exports.validateSlippageBps = validateSlippageBps;
|
|
9
|
+
const ethers_1 = require("ethers");
|
|
10
|
+
/**
|
|
11
|
+
* Parse a string from an untrusted source (API response) into BigInt.
|
|
12
|
+
* Throws a descriptive error instead of raw SyntaxError on invalid input.
|
|
13
|
+
*
|
|
14
|
+
* @param value - Value to convert (string, number, bigint)
|
|
15
|
+
* @param context - Human-readable label for error messages (e.g. "KyberSwap amountOut")
|
|
16
|
+
*/
|
|
17
|
+
function safeBigInt(value, context) {
|
|
18
|
+
if (typeof value === 'bigint')
|
|
19
|
+
return value;
|
|
20
|
+
const str = String(value ?? '');
|
|
21
|
+
// BigInt() accepts integer strings only — reject floats, hex, empty, etc. early
|
|
22
|
+
// to give a useful error instead of generic SyntaxError
|
|
23
|
+
if (!/^-?\d+$/.test(str)) {
|
|
24
|
+
throw new Error(`Invalid numeric value from ${context}: "${str.slice(0, 50)}"`);
|
|
25
|
+
}
|
|
26
|
+
return BigInt(str);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate and checksum an address from an untrusted source.
|
|
30
|
+
* The SDK `address` type is compile-time only — this adds runtime enforcement.
|
|
31
|
+
*
|
|
32
|
+
* @param raw - Address string to validate
|
|
33
|
+
* @param context - Human-readable label for error messages
|
|
34
|
+
*/
|
|
35
|
+
function validateAddress(raw, context) {
|
|
36
|
+
if (!raw || typeof raw !== 'string') {
|
|
37
|
+
throw new Error(`Missing address from ${context}`);
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
// ethers v6 getAddress: validates format, length, checksum.
|
|
41
|
+
// Returns checksummed EIP-55 address.
|
|
42
|
+
return (0, ethers_1.getAddress)(raw);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new Error(`Invalid address from ${context}: "${raw.slice(0, 50)}"`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate that a router address from a DEX API matches the expected address.
|
|
50
|
+
*
|
|
51
|
+
* @param actual - Router address returned by the API
|
|
52
|
+
* @param expected - Known router address from SDK config
|
|
53
|
+
* @param aggregatorName - Name of the DEX aggregator for error messages
|
|
54
|
+
*/
|
|
55
|
+
function validateRouterAddress(actual, expected, aggregatorName) {
|
|
56
|
+
const validated = validateAddress(actual, `${aggregatorName} router`);
|
|
57
|
+
if (validated.toLowerCase() !== expected.toLowerCase()) {
|
|
58
|
+
throw new Error(`${aggregatorName} returned unexpected router address: ${actual} (expected ${expected})`);
|
|
59
|
+
}
|
|
60
|
+
return validated;
|
|
61
|
+
}
|
|
62
|
+
// ── Fetch with timeout ──────────────────────────────────────────────
|
|
63
|
+
const DEFAULT_TIMEOUT_MS = 15_000;
|
|
64
|
+
/**
|
|
65
|
+
* Wrapper around fetch() that adds a timeout via AbortController.
|
|
66
|
+
* If the caller already provided a signal, the timeout races against it.
|
|
67
|
+
*
|
|
68
|
+
* @param url - Request URL
|
|
69
|
+
* @param options - Standard RequestInit options
|
|
70
|
+
* @param timeoutMs - Timeout in milliseconds (default 15s)
|
|
71
|
+
*/
|
|
72
|
+
async function fetchWithTimeout(url, options = {}, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
73
|
+
const controller = new AbortController();
|
|
74
|
+
const id = setTimeout(() => controller.abort(), timeoutMs);
|
|
75
|
+
// If the caller provided their own signal, listen for its abort too
|
|
76
|
+
const externalSignal = options.signal;
|
|
77
|
+
if (externalSignal) {
|
|
78
|
+
if (externalSignal.aborted) {
|
|
79
|
+
controller.abort();
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
externalSignal.addEventListener('abort', () => controller.abort(), { once: true });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
return await fetch(url, {
|
|
87
|
+
...options,
|
|
88
|
+
signal: controller.signal
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
clearTimeout(id);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ── URL validation ──────────────────────────────────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Validate that an API URL uses HTTPS and is well-formed.
|
|
98
|
+
* Prevents SSRF when api_url is consumer-provided.
|
|
99
|
+
*/
|
|
100
|
+
function validateApiUrl(url) {
|
|
101
|
+
if (!url || typeof url !== 'string') {
|
|
102
|
+
throw new Error('api_url must be a non-empty string');
|
|
103
|
+
}
|
|
104
|
+
let parsed;
|
|
105
|
+
try {
|
|
106
|
+
parsed = new URL(url);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
throw new Error(`Invalid api_url: "${url.slice(0, 100)}"`);
|
|
110
|
+
}
|
|
111
|
+
if (parsed.protocol !== 'https:') {
|
|
112
|
+
throw new Error(`api_url must use HTTPS, got ${parsed.protocol} in "${url.slice(0, 100)}"`);
|
|
113
|
+
}
|
|
114
|
+
return url;
|
|
115
|
+
}
|
|
116
|
+
// ── Slippage validation ─────────────────────────────────────────────
|
|
117
|
+
const MAX_SLIPPAGE_BPS = 10000n; // 100%
|
|
118
|
+
/**
|
|
119
|
+
* Validate that slippage is within valid BPS range [0, 10000].
|
|
120
|
+
* Prevents negative min_out calculations when slippage > 100%.
|
|
121
|
+
*/
|
|
122
|
+
function validateSlippageBps(slippage, context) {
|
|
123
|
+
if (slippage < 0n || slippage > MAX_SLIPPAGE_BPS) {
|
|
124
|
+
throw new Error(`Slippage out of range (0-10000 BPS) in ${context}: ${slippage}`);
|
|
125
|
+
}
|
|
126
|
+
return slippage;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "curvance",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"scripts": {
|
|
26
26
|
"up": "npm run build && npm publish",
|
|
27
27
|
"fetch": "ts-node fetch-deployment.ts",
|
|
28
|
-
"build": "tsc",
|
|
28
|
+
"build": "node node_modules/typescript/bin/tsc",
|
|
29
29
|
"test": "node --test --test-concurrency=1 --require ts-node/register tests/*.test.ts",
|
|
30
30
|
"test:replay": "ts-node tests/replay.test.ts",
|
|
31
31
|
"test:leverage": "ts-node tests/leverage.test.ts",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"test:optimizer": "ts-node tests/optimizer.test.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@redstone-finance/sdk": "
|
|
40
|
-
"decimal.js": "
|
|
41
|
-
"ethers": "
|
|
39
|
+
"@redstone-finance/sdk": "0.9.0",
|
|
40
|
+
"decimal.js": "10.6.0",
|
|
41
|
+
"ethers": "6.16.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@types/node": "
|
|
45
|
-
"dotenv": "
|
|
46
|
-
"ts-node": "
|
|
47
|
-
"typescript": "
|
|
44
|
+
"@types/node": "24.12.2",
|
|
45
|
+
"dotenv": "17.4.1",
|
|
46
|
+
"ts-node": "10.9.2",
|
|
47
|
+
"typescript": "5.9.3"
|
|
48
48
|
}
|
|
49
49
|
}
|