curvance 3.1.11 → 3.1.12

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 (39) hide show
  1. package/dist/abis/SimpleZapper.json +11 -0
  2. package/dist/chains/index.d.ts +26 -24
  3. package/dist/chains/index.d.ts.map +1 -1
  4. package/dist/chains/monad-mainnet.json +14 -13
  5. package/dist/classes/CToken.d.ts +4 -5
  6. package/dist/classes/CToken.d.ts.map +1 -1
  7. package/dist/classes/CToken.js +8 -8
  8. package/dist/classes/CToken.js.map +1 -1
  9. package/dist/classes/DexAggregators/IDexAgg.d.ts +2 -1
  10. package/dist/classes/DexAggregators/IDexAgg.d.ts.map +1 -1
  11. package/dist/classes/DexAggregators/Kuru.d.ts +33 -0
  12. package/dist/classes/DexAggregators/Kuru.d.ts.map +1 -1
  13. package/dist/classes/DexAggregators/Kuru.js +167 -235
  14. package/dist/classes/DexAggregators/Kuru.js.map +1 -1
  15. package/dist/classes/DexAggregators/KyberSwap.d.ts +101 -0
  16. package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
  17. package/dist/classes/DexAggregators/KyberSwap.js +99 -2
  18. package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
  19. package/dist/classes/DexAggregators/index.d.ts +3 -0
  20. package/dist/classes/DexAggregators/index.d.ts.map +1 -0
  21. package/dist/classes/DexAggregators/index.js +19 -0
  22. package/dist/classes/DexAggregators/index.js.map +1 -0
  23. package/dist/classes/Market.js +1 -1
  24. package/dist/classes/Market.js.map +1 -1
  25. package/dist/classes/Zapper.d.ts +2 -2
  26. package/dist/classes/Zapper.d.ts.map +1 -1
  27. package/dist/classes/Zapper.js +6 -6
  28. package/dist/classes/Zapper.js.map +1 -1
  29. package/dist/helpers.d.ts +16 -15
  30. package/dist/helpers.d.ts.map +1 -1
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +1 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/setup.d.ts +5 -6
  36. package/dist/setup.d.ts.map +1 -1
  37. package/dist/setup.js +3 -7
  38. package/dist/setup.js.map +1 -1
  39. package/package.json +1 -1
@@ -1,237 +1,169 @@
1
1
  "use strict";
2
- // import Decimal from "decimal.js";
3
- // import { address, bytes, curvance_provider, TokenInput } from "../../types";
4
- // import { ERC20 } from "../ERC20";
5
- // import { toBigInt, toDecimal, validateProviderAsSigner, WAD } from "../../helpers";
6
- // import { ZapToken } from "../CToken";
7
- // import { Swap } from "../Zapper";
8
- // import IDexAgg from "./IDexAgg";
9
- // interface KuruJWTResponse {
10
- // token: string;
11
- // expires_at: number;
12
- // rate_limit: {
13
- // rps: number;
14
- // burst: number;
15
- // }
16
- // }
17
- // interface KuruQuoteResponse {
18
- // type: string;
19
- // status: string;
20
- // output: string;
21
- // minOut: string;
22
- // transaction: {
23
- // calldata: string;
24
- // value: string;
25
- // to: string;
26
- // };
27
- // gasPrices: {
28
- // slow: string;
29
- // standard: string;
30
- // fast: string;
31
- // rapid: string;
32
- // extreme: string;
33
- // };
34
- // }
35
- // const cached_jwt = new Map<string, KuruJWTResponse>();
36
- // const cached_requests = new Map<string, number[]>();
37
- // export default class Kuru implements IDexAgg {
38
- // api: string;
39
- // router: address;
40
- // jwt: string | null = null;
41
- // rps: number;
42
- // dao: address;
43
- // constructor(
44
- // dao: address = "0x0Acb7eF4D8733C719d60e0992B489b629bc55C02",
45
- // rps: number = 1,
46
- // router: address = "0x96eaC98928437496DdD0Cd2080E54Fe78BaC99b6",
47
- // apiUrl: string = "https://ws.kuru.io/api"
48
- // ) {
49
- // this.api = apiUrl;
50
- // this.router = router;
51
- // this.rps = rps;
52
- // this.dao = dao;
53
- // }
54
- // async loadJWT(wallet: string) {
55
- // if(cached_jwt.has(wallet)) {
56
- // const cached = cached_jwt.get(wallet)!;
57
- // const currentTime = Kuru.getCurrentTime();
58
- // if(cached.expires_at > currentTime) {
59
- // this.jwt = cached.token;
60
- // this.rps = cached.rate_limit.rps;
61
- // return;
62
- // } else {
63
- // cached_jwt.delete(wallet);
64
- // }
65
- // }
66
- // const resp = await fetch(`${this.api}/generate-token`, {
67
- // method: "POST",
68
- // headers: {
69
- // "Content-Type": "application/json",
70
- // },
71
- // body: JSON.stringify({
72
- // user_address: wallet,
73
- // }),
74
- // keepalive: true
75
- // });
76
- // if(!resp.ok) {
77
- // throw new Error(`Failed to fetch JWT: ${resp.status} ${resp.statusText}`);
78
- // }
79
- // const data = await resp.json() as KuruJWTResponse;
80
- // this.jwt = data.token;
81
- // this.rps = data.rate_limit.rps;
82
- // cached_jwt.set(wallet, data);
83
- // }
84
- // async rateLimitSleep(wallet: string) {
85
- // const now = Kuru.getCurrentTime();
86
- // const requests = cached_requests.get(wallet) || [];
87
- // const windowStart = now - 2;
88
- // const recentRequests = requests.filter(timestamp => timestamp > windowStart);
89
- // if(recentRequests.length >= this.rps) {
90
- // const earliestRequest = Math.min(...recentRequests);
91
- // const sleepTime = (earliestRequest + 2) - now;
92
- // await new Promise(resolve => setTimeout(resolve, sleepTime * 2000));
93
- // }
94
- // }
95
- // async getAvailableTokens(provider: curvance_provider, query: string | null = null) {
96
- // const signer = validateProviderAsSigner(provider);
97
- // const userAddress = signer.address;
98
- // let endpoint = `https://api.kuru.io/api/v2/tokens/search?limit=20&userAddress=${userAddress}`;
99
- // if(query) {
100
- // endpoint += `&q=${encodeURIComponent(query)}`;
101
- // }
102
- // const resp = await fetch(endpoint, {
103
- // method: "GET",
104
- // headers: {
105
- // "Content-Type": "application/json",
106
- // }
107
- // });
108
- // if(!resp.ok) {
109
- // throw new Error(`Failed to fetch available tokens: ${resp.status} ${resp.statusText}`);
110
- // }
111
- // const list = await resp.json() as {
112
- // success: boolean;
113
- // code: number;
114
- // timestamp: number;
115
- // data: {
116
- // data: Array<{
117
- // address: string;
118
- // decimals: number;
119
- // name: string;
120
- // ticker: string;
121
- // imageurl: string,
122
- // twitter: string,
123
- // website: string,
124
- // is_verified: boolean,
125
- // contract_renounced: boolean,
126
- // is_erc20: boolean,
127
- // is_mintable: boolean,
128
- // is_strict: boolean,
129
- // balance: string,
130
- // last_price: string,
131
- // quote_asset: string,
132
- // market_address: string,
133
- // total_supply: string,
134
- // burned_supply: string
135
- // }>
136
- // }
137
- // };
138
- // let tokens: ZapToken[] = [];
139
- // for(const token of list.data.data) {
140
- // const erc20 = new ERC20(
141
- // provider,
142
- // token.address as address,
143
- // {
144
- // address: token.address as address,
145
- // name: token.name,
146
- // symbol: token.ticker,
147
- // decimals: BigInt(token.decimals ?? 18),
148
- // totalSupply: BigInt(token.total_supply ?? 0),
149
- // balance: BigInt(token.balance ?? 0),
150
- // image: token.imageurl,
151
- // price: Decimal(token.last_price).div(WAD)
152
- // },
153
- // );
154
- // tokens.push({
155
- // interface: erc20,
156
- // type: 'simple',
157
- // quote: async(tokenIn: string, tokenOut: string, amount: TokenInput, slippageTolerance: bigint | null = null) => {
158
- // const raw_amount = toBigInt(amount, 18n);
159
- // const data = await Kuru.quote(signer.address, tokenIn, tokenOut, raw_amount.toString(), slippageTolerance);
160
- // return {
161
- // output: toDecimal(BigInt(data.output ?? 0), BigInt(token.decimals ?? 18)),
162
- // minOut: toDecimal(BigInt(data.minOut ?? 0), BigInt(token.decimals ?? 18)),
163
- // max_slippage: data.max_slippage
164
- // };
165
- // }
166
- // });
167
- // }
168
- // return tokens;
169
- // }
170
- // // Get current time in seconds
171
- // getCurrentTime() {
172
- // return Math.floor(Date.now() / 1000);
173
- // }
174
- // async quoteAction(wallet: string, tokenIn: string, tokenOut: string, amount: string, slippageTolerance: bigint | null = null) {
175
- // const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippageTolerance);
176
- // const action = {
177
- // inputToken: tokenIn,
178
- // inputAmount: BigInt(amount),
179
- // outputToken: tokenOut,
180
- // target: quote.transaction.to,
181
- // slippage: slippageTolerance ?? 0n,
182
- // call: `0x${quote.transaction.calldata}`
183
- // } as Swap;
184
- // return { action, quote };
185
- // }
186
- // async quoteMin(wallet: string, tokenIn: string, tokenOut: string, amount: string, slippage: bigint) {
187
- // const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippage);
188
- // return quote.out;
189
- // }
190
- // async quote(wallet: string, tokenIn: string, tokenOut: string, amount: string, slippage: bigint) {
191
- // await this.loadJWT(wallet);
192
- // await this.rateLimitSleep(wallet);
193
- // const payload: {
194
- // userAddress: string;
195
- // tokenIn: string;
196
- // tokenOut: string;
197
- // amount: string;
198
- // referrerAddress?: string;
199
- // referrerFeeBps?: number;
200
- // slippage_tolerance?: number;
201
- // autoSlippage?: boolean;
202
- // } = {
203
- // userAddress: wallet,
204
- // tokenIn: tokenIn,
205
- // tokenOut: tokenOut,
206
- // amount: amount,
207
- // referrerAddress: this.dao,
208
- // referrerFeeBps: 10,
209
- // slippage_tolerance: Number(slippage)
210
- // };
211
- // cached_requests.set(wallet, (cached_requests.get(wallet) || []).concat(this.getCurrentTime()));
212
- // const resp = await fetch(`${this.api}/quote`, {
213
- // method: "POST",
214
- // headers: {
215
- // "Content-Type": "application/json",
216
- // "Authorization": `Bearer ${this.jwt}`
217
- // },
218
- // body: JSON.stringify(payload),
219
- // });
220
- // if(!resp.ok) {
221
- // throw new Error(`Failed to fetch quote: ${resp.status} ${resp.statusText}`);
222
- // }
223
- // const data = await resp.json() as KuruQuoteResponse;
224
- // return {
225
- // to: data.transaction.to as address,
226
- // calldata: `0x${data.transaction.calldata}` as bytes,
227
- // min_out: BigInt(data.minOut),
228
- // out: BigInt(data.output)
229
- // };
230
- // }
231
- // private getSlippage(output: bigint, min_output: bigint) {
232
- // const diff = output - min_output;
233
- // const decimal = Decimal(diff).div(output).mul(100);
234
- // return decimal ?? Decimal(100);
235
- // }
236
- // }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Kuru = void 0;
7
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
+ const ERC20_1 = require("../ERC20");
9
+ const helpers_1 = require("../../helpers");
10
+ const cached_jwt = new Map();
11
+ const cached_requests = new Map();
12
+ class Kuru {
13
+ api;
14
+ router;
15
+ jwt = null;
16
+ rps;
17
+ dao;
18
+ constructor(dao = "0x0Acb7eF4D8733C719d60e0992B489b629bc55C02", rps = 1, router = "0xb3e6778480b2E488385E8205eA05E20060B813cb", apiUrl = "https://ws.kuru.io/api") {
19
+ this.api = apiUrl;
20
+ this.router = router;
21
+ this.rps = rps;
22
+ this.dao = dao;
23
+ }
24
+ async loadJWT(wallet) {
25
+ if (cached_jwt.has(wallet)) {
26
+ const cached = cached_jwt.get(wallet);
27
+ const currentTime = this.getCurrentTime();
28
+ if (cached.expires_at > currentTime) {
29
+ this.jwt = cached.token;
30
+ this.rps = cached.rate_limit.rps;
31
+ return;
32
+ }
33
+ else {
34
+ cached_jwt.delete(wallet);
35
+ }
36
+ }
37
+ const resp = await fetch(`${this.api}/generate-token`, {
38
+ method: "POST",
39
+ headers: {
40
+ "Content-Type": "application/json",
41
+ },
42
+ body: JSON.stringify({
43
+ user_address: wallet,
44
+ }),
45
+ keepalive: true
46
+ });
47
+ if (!resp.ok) {
48
+ throw new Error(`Failed to fetch JWT: ${resp.status} ${resp.statusText}`);
49
+ }
50
+ const data = await resp.json();
51
+ this.jwt = data.token;
52
+ this.rps = data.rate_limit.rps;
53
+ cached_jwt.set(wallet, data);
54
+ }
55
+ async rateLimitSleep(wallet) {
56
+ const now = this.getCurrentTime();
57
+ const requests = cached_requests.get(wallet) || [];
58
+ const windowStart = now - 2;
59
+ const recentRequests = requests.filter(timestamp => timestamp > windowStart);
60
+ if (recentRequests.length >= this.rps) {
61
+ const earliestRequest = Math.min(...recentRequests);
62
+ const sleepTime = (earliestRequest + 2) - now;
63
+ await new Promise(resolve => setTimeout(resolve, sleepTime * 2000));
64
+ }
65
+ }
66
+ async getAvailableTokens(provider, query = null) {
67
+ const signer = (0, helpers_1.validateProviderAsSigner)(provider);
68
+ const userAddress = signer.address;
69
+ let endpoint = `https://api.kuru.io/api/v2/tokens/search?limit=20&userAddress=${userAddress}`;
70
+ if (query) {
71
+ endpoint += `&q=${encodeURIComponent(query)}`;
72
+ }
73
+ const resp = await fetch(endpoint, {
74
+ method: "GET",
75
+ headers: {
76
+ "Content-Type": "application/json",
77
+ }
78
+ });
79
+ if (!resp.ok) {
80
+ throw new Error(`Failed to fetch available tokens: ${resp.status} ${resp.statusText}`);
81
+ }
82
+ const list = await resp.json();
83
+ let tokens = [];
84
+ for (const token of list.data.data) {
85
+ const erc20 = new ERC20_1.ERC20(provider, token.address, {
86
+ address: token.address,
87
+ name: token.name,
88
+ symbol: token.ticker,
89
+ decimals: BigInt(token.decimals ?? 18),
90
+ totalSupply: BigInt(token.total_supply ?? 0),
91
+ balance: BigInt(token.balance ?? 0),
92
+ image: token.imageurl,
93
+ price: (0, decimal_js_1.default)(token.last_price).div(helpers_1.WAD)
94
+ });
95
+ tokens.push({
96
+ interface: erc20,
97
+ type: 'simple',
98
+ quote: async (tokenIn, tokenOut, amount, slippage) => {
99
+ const raw_amount = (0, helpers_1.toBigInt)(amount, 18n);
100
+ const data = await this.quote(signer.address, tokenIn, tokenOut, raw_amount, slippage);
101
+ return {
102
+ out: (0, helpers_1.toDecimal)(BigInt(data.out ?? 0), BigInt(token.decimals ?? 18)),
103
+ min_out: (0, helpers_1.toDecimal)(BigInt(data.min_out ?? 0), BigInt(token.decimals ?? 18)),
104
+ };
105
+ }
106
+ });
107
+ }
108
+ return tokens;
109
+ }
110
+ // Get current time in seconds
111
+ getCurrentTime() {
112
+ return Math.floor(Date.now() / 1000);
113
+ }
114
+ async quoteAction(wallet, tokenIn, tokenOut, amount, slippage) {
115
+ const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippage);
116
+ const action = {
117
+ inputToken: tokenIn,
118
+ inputAmount: BigInt(amount),
119
+ outputToken: tokenOut,
120
+ target: quote.to,
121
+ slippage: slippage ?? 0n,
122
+ call: quote.calldata
123
+ };
124
+ return { action, quote };
125
+ }
126
+ async quoteMin(wallet, tokenIn, tokenOut, amount, slippage) {
127
+ const quote = await this.quote(wallet, tokenIn, tokenOut, amount, slippage);
128
+ return quote.out;
129
+ }
130
+ async quote(wallet, tokenIn, tokenOut, amount, slippage) {
131
+ await this.loadJWT(wallet);
132
+ await this.rateLimitSleep(wallet);
133
+ const payload = {
134
+ userAddress: wallet,
135
+ tokenIn: tokenIn,
136
+ tokenOut: tokenOut,
137
+ amount: amount.toString(),
138
+ referrerAddress: this.dao,
139
+ referrerFeeBps: 10,
140
+ slippage_tolerance: Number(slippage)
141
+ };
142
+ cached_requests.set(wallet, (cached_requests.get(wallet) || []).concat(this.getCurrentTime()));
143
+ const resp = await fetch(`${this.api}/quote`, {
144
+ method: "POST",
145
+ headers: {
146
+ "Content-Type": "application/json",
147
+ "Authorization": `Bearer ${this.jwt}`
148
+ },
149
+ body: JSON.stringify(payload),
150
+ });
151
+ if (!resp.ok) {
152
+ throw new Error(`Failed to fetch quote: ${resp.status} ${resp.statusText}`);
153
+ }
154
+ const data = await resp.json();
155
+ return {
156
+ to: data.transaction.to,
157
+ calldata: `0x${data.transaction.calldata}`,
158
+ min_out: BigInt(data.minOut),
159
+ out: BigInt(data.output)
160
+ };
161
+ }
162
+ getSlippage(output, min_output) {
163
+ const diff = output - min_output;
164
+ const decimal = (0, decimal_js_1.default)(diff).div(output).mul(100);
165
+ return decimal ?? (0, decimal_js_1.default)(100);
166
+ }
167
+ }
168
+ exports.Kuru = Kuru;
237
169
  //# sourceMappingURL=Kuru.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Kuru.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/Kuru.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Kuru.js","sourceRoot":"","sources":["../../../src/classes/DexAggregators/Kuru.ts"],"names":[],"mappings":"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"}
@@ -1 +1,102 @@
1
+ import { address, bytes, curvance_provider } from "../../types";
2
+ import { ZapToken } from "../CToken";
3
+ import IDexAgg from "./IDexAgg";
4
+ import { Swap } from "../Zapper";
5
+ export interface KyperSwapErrorResponse {
6
+ code: number;
7
+ message: string;
8
+ requestId: string;
9
+ }
10
+ export interface KyberSwapQuoteResponse {
11
+ message: string;
12
+ data: {
13
+ routeSummary: {
14
+ tokenIn: string;
15
+ amountIn: string;
16
+ amountInUsd: string;
17
+ tokenOut: string;
18
+ amountOut: string;
19
+ amountOutUsd: string;
20
+ gas: string;
21
+ gasPrice: string;
22
+ gasUsd: string;
23
+ l1FeeUsd: string;
24
+ routeID: string;
25
+ checksum: string;
26
+ timestamp: number;
27
+ extraFee: {
28
+ feeAmount: string;
29
+ chargeFeeBy: string;
30
+ isInBps: boolean;
31
+ feeReceiver: string;
32
+ };
33
+ route: [
34
+ {
35
+ pool: string;
36
+ tokenIn: string;
37
+ tokenOut: string;
38
+ swapAmount: string;
39
+ amountOut: string;
40
+ exchange: string;
41
+ poolType: string;
42
+ poolExtra: any;
43
+ extra: any;
44
+ }[]
45
+ ];
46
+ };
47
+ routerAddress: string;
48
+ };
49
+ requestId: string;
50
+ }
51
+ export interface KyperSwapBuildResponse {
52
+ code: number;
53
+ message: string;
54
+ data: {
55
+ amountIn: string;
56
+ amountInUsd: string;
57
+ amountOut: string;
58
+ amountOutUsd: string;
59
+ gas: string;
60
+ gasUsd: string;
61
+ additionalCostUsd: string;
62
+ additionalCostMessage: string;
63
+ outputChange: {
64
+ amount: string;
65
+ percent: number;
66
+ level: number;
67
+ };
68
+ data: string;
69
+ routerAddress: string;
70
+ transactionValue: string;
71
+ };
72
+ requestId: string;
73
+ }
74
+ export declare class KyberSwap implements IDexAgg {
75
+ api: string;
76
+ dao: address;
77
+ router: address;
78
+ chain: string;
79
+ client_id: string;
80
+ constructor(dao?: address, router?: address, // TODO: Replace with actual KyberSwap router address
81
+ chain?: string, api?: string);
82
+ getAvailableTokens(provider: curvance_provider, query?: string | null): Promise<ZapToken[]>;
83
+ quoteAction(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint): Promise<{
84
+ action: Swap;
85
+ quote: {
86
+ to: address;
87
+ calldata: bytes;
88
+ min_out: bigint;
89
+ out: bigint;
90
+ raw: KyperSwapBuildResponse;
91
+ };
92
+ }>;
93
+ quoteMin(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint): Promise<bigint>;
94
+ quote(wallet: string, tokenIn: string, tokenOut: string, amount: bigint, slippage: bigint): Promise<{
95
+ to: address;
96
+ calldata: bytes;
97
+ min_out: bigint;
98
+ out: bigint;
99
+ raw: KyperSwapBuildResponse;
100
+ }>;
101
+ }
1
102
  //# sourceMappingURL=KyberSwap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KyberSwap.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/KyberSwap.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"KyberSwap.d.ts","sourceRoot":"","sources":["../../../src/classes/DexAggregators/KyberSwap.ts"],"names":[],"mappings":"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"}