@scallop-io/sui-scallop-sdk 1.4.15-rc.3 → 1.4.16
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/constants/common.d.ts +6 -6
- package/dist/constants/enum.d.ts +2 -2
- package/dist/constants/index.d.ts +0 -1
- package/dist/constants/poolAddress.d.ts +2 -1
- package/dist/constants/queryKeys.d.ts +3 -4
- package/dist/index.d.ts +0 -1
- package/dist/index.js +2009 -1627
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2088 -1701
- package/dist/index.mjs.map +1 -1
- package/dist/models/scallop.d.ts +1 -2
- package/dist/models/scallopBuilder.d.ts +2 -1
- package/dist/models/scallopCache.d.ts +18 -12
- package/dist/models/scallopQuery.d.ts +95 -10
- package/dist/models/scallopUtils.d.ts +4 -4
- package/dist/queries/borrowIncentiveQuery.d.ts +6 -1
- package/dist/queries/coreQuery.d.ts +2 -0
- package/dist/queries/objectsQuery.d.ts +1 -2
- package/dist/queries/poolAddressesQuery.d.ts +4 -2
- package/dist/queries/portfolioQuery.d.ts +71 -5
- package/dist/queries/priceQuery.d.ts +4 -0
- package/dist/queries/sCoinQuery.d.ts +1 -1
- package/dist/types/builder/core.d.ts +3 -3
- package/dist/types/model.d.ts +8 -2
- package/dist/utils/index.d.ts +0 -2
- package/package.json +7 -7
- package/src/builders/borrowIncentiveBuilder.ts +11 -5
- package/src/builders/coreBuilder.ts +61 -32
- package/src/builders/loyaltyProgramBuilder.ts +3 -2
- package/src/builders/referralBuilder.ts +16 -6
- package/src/builders/sCoinBuilder.ts +6 -4
- package/src/builders/spoolBuilder.ts +14 -7
- package/src/builders/vescaBuilder.ts +13 -7
- package/src/constants/coinGecko.ts +2 -0
- package/src/constants/common.ts +7 -1
- package/src/constants/enum.ts +46 -20
- package/src/constants/index.ts +0 -1
- package/src/constants/poolAddress.ts +163 -41
- package/src/constants/pyth.ts +2 -0
- package/src/constants/queryKeys.ts +7 -9
- package/src/constants/testAddress.ts +24 -0
- package/src/index.ts +0 -1
- package/src/models/scallop.ts +9 -13
- package/src/models/scallopAddress.ts +2 -9
- package/src/models/scallopBuilder.ts +62 -8
- package/src/models/scallopCache.ts +220 -114
- package/src/models/scallopClient.ts +3 -6
- package/src/models/scallopIndexer.ts +1 -5
- package/src/models/scallopQuery.ts +53 -19
- package/src/models/scallopUtils.ts +9 -13
- package/src/queries/borrowIncentiveQuery.ts +6 -13
- package/src/queries/coreQuery.ts +62 -48
- package/src/queries/loyaltyProgramQuery.ts +1 -3
- package/src/queries/objectsQuery.ts +1 -3
- package/src/queries/poolAddressesQuery.ts +13 -10
- package/src/queries/portfolioQuery.ts +252 -20
- package/src/queries/priceQuery.ts +2 -7
- package/src/queries/sCoinQuery.ts +2 -2
- package/src/queries/spoolQuery.ts +21 -20
- package/src/queries/vescaQuery.ts +3 -7
- package/src/types/builder/core.ts +21 -3
- package/src/types/model.ts +13 -2
- package/src/utils/index.ts +0 -2
- package/src/utils/indexer.ts +3 -1
- package/src/utils/query.ts +2 -2
- package/dist/constants/tokenBucket.d.ts +0 -2
- package/dist/utils/tokenBucket.d.ts +0 -11
- package/src/constants/tokenBucket.ts +0 -2
- package/src/utils/tokenBucket.ts +0 -68
package/src/utils/tokenBucket.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_INTERVAL_IN_MS } from 'src/constants/tokenBucket';
|
|
2
|
-
|
|
3
|
-
class TokenBucket {
|
|
4
|
-
private tokensPerInterval: number;
|
|
5
|
-
private interval: number;
|
|
6
|
-
private tokens: number;
|
|
7
|
-
private lastRefill: number;
|
|
8
|
-
|
|
9
|
-
constructor(tokensPerInterval: number, intervalInMs: number) {
|
|
10
|
-
this.tokensPerInterval = tokensPerInterval;
|
|
11
|
-
this.interval = intervalInMs;
|
|
12
|
-
this.tokens = tokensPerInterval;
|
|
13
|
-
this.lastRefill = Date.now();
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
refill() {
|
|
17
|
-
const now = Date.now();
|
|
18
|
-
const elapsed = now - this.lastRefill;
|
|
19
|
-
|
|
20
|
-
if (elapsed >= this.interval) {
|
|
21
|
-
const tokensToAdd =
|
|
22
|
-
Math.floor(elapsed / this.interval) * this.tokensPerInterval;
|
|
23
|
-
this.tokens = Math.min(this.tokens + tokensToAdd, this.tokensPerInterval);
|
|
24
|
-
|
|
25
|
-
// Update lastRefill to reflect the exact time of the last "refill"
|
|
26
|
-
this.lastRefill += Math.floor(elapsed / this.interval) * this.interval;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
removeTokens(count: number) {
|
|
31
|
-
this.refill();
|
|
32
|
-
if (this.tokens >= count) {
|
|
33
|
-
this.tokens -= count;
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const callWithRateLimit = async <T>(
|
|
41
|
-
tokenBucket: TokenBucket,
|
|
42
|
-
fn: () => Promise<T>,
|
|
43
|
-
retryDelayInMs = DEFAULT_INTERVAL_IN_MS,
|
|
44
|
-
maxRetries = 15,
|
|
45
|
-
backoffFactor = 1.25 // The factor by which to increase the delay
|
|
46
|
-
): Promise<T | null> => {
|
|
47
|
-
let retries = 0;
|
|
48
|
-
|
|
49
|
-
const tryRequest = async (): Promise<T | null> => {
|
|
50
|
-
if (tokenBucket.removeTokens(1)) {
|
|
51
|
-
const result = await fn();
|
|
52
|
-
return result;
|
|
53
|
-
} else if (retries < maxRetries) {
|
|
54
|
-
retries++;
|
|
55
|
-
const delay = retryDelayInMs * Math.pow(backoffFactor, retries);
|
|
56
|
-
// console.error(`Rate limit exceeded, retrying in ${delay} ms`);
|
|
57
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
58
|
-
return tryRequest();
|
|
59
|
-
} else {
|
|
60
|
-
console.error('Maximum retries reached');
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
return tryRequest();
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export { TokenBucket, callWithRateLimit };
|