curvance 3.6.1 → 3.6.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 (93) hide show
  1. package/dist/chains/arbitrum.d.ts +3 -0
  2. package/dist/chains/arbitrum.d.ts.map +1 -0
  3. package/dist/chains/arbitrum.js +16 -0
  4. package/dist/chains/arbitrum.js.map +1 -0
  5. package/dist/chains/index.d.ts +21 -568
  6. package/dist/chains/index.d.ts.map +1 -1
  7. package/dist/chains/index.js +6 -12
  8. package/dist/chains/index.js.map +1 -1
  9. package/dist/chains/monad.d.ts +3 -0
  10. package/dist/chains/monad.d.ts.map +1 -0
  11. package/dist/chains/monad.js +21 -0
  12. package/dist/chains/monad.js.map +1 -0
  13. package/dist/classes/Api.d.ts +37 -0
  14. package/dist/classes/Api.d.ts.map +1 -0
  15. package/dist/classes/Api.js +69 -0
  16. package/dist/classes/Api.js.map +1 -0
  17. package/dist/classes/BorrowableCToken.d.ts +0 -4
  18. package/dist/classes/BorrowableCToken.d.ts.map +1 -1
  19. package/dist/classes/BorrowableCToken.js +0 -6
  20. package/dist/classes/BorrowableCToken.js.map +1 -1
  21. package/dist/classes/CToken.d.ts +11 -1
  22. package/dist/classes/CToken.d.ts.map +1 -1
  23. package/dist/classes/CToken.js +20 -4
  24. package/dist/classes/CToken.js.map +1 -1
  25. package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
  26. package/dist/classes/DexAggregators/KyberSwap.js +8 -6
  27. package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
  28. package/dist/classes/Market.d.ts +1 -5
  29. package/dist/classes/Market.d.ts.map +1 -1
  30. package/dist/classes/Market.js +17 -32
  31. package/dist/classes/Market.js.map +1 -1
  32. package/dist/classes/NativeToken.d.ts.map +1 -1
  33. package/dist/classes/NativeToken.js +2 -1
  34. package/dist/classes/NativeToken.js.map +1 -1
  35. package/dist/classes/index.d.ts +15 -0
  36. package/dist/classes/index.d.ts.map +1 -0
  37. package/dist/classes/index.js +31 -0
  38. package/dist/classes/index.js.map +1 -0
  39. package/dist/contracts/arb-sepolia.json +44 -0
  40. package/dist/contracts/index.d.ts +267 -0
  41. package/dist/contracts/index.d.ts.map +1 -0
  42. package/dist/contracts/index.js +13 -0
  43. package/dist/contracts/index.js.map +1 -0
  44. package/dist/contracts/monad-mainnet.json +220 -0
  45. package/dist/format/amounts.d.ts +18 -0
  46. package/dist/format/amounts.d.ts.map +1 -0
  47. package/dist/format/amounts.js +75 -0
  48. package/dist/format/amounts.js.map +1 -0
  49. package/dist/format/borrow.d.ts +15 -0
  50. package/dist/format/borrow.d.ts.map +1 -0
  51. package/dist/format/borrow.js +38 -0
  52. package/dist/format/borrow.js.map +1 -0
  53. package/dist/format/collateral.d.ts +10 -0
  54. package/dist/format/collateral.d.ts.map +1 -0
  55. package/dist/format/collateral.js +28 -0
  56. package/dist/format/collateral.js.map +1 -0
  57. package/dist/format/health.d.ts +10 -0
  58. package/dist/format/health.d.ts.map +1 -0
  59. package/dist/format/health.js +50 -0
  60. package/dist/format/health.js.map +1 -0
  61. package/dist/format/index.d.ts +6 -0
  62. package/dist/format/index.d.ts.map +1 -0
  63. package/dist/format/index.js +22 -0
  64. package/dist/format/index.js.map +1 -0
  65. package/dist/format/leverage.d.ts +40 -0
  66. package/dist/format/leverage.d.ts.map +1 -0
  67. package/dist/format/leverage.js +130 -0
  68. package/dist/format/leverage.js.map +1 -0
  69. package/dist/helpers.d.ts +59 -133
  70. package/dist/helpers.d.ts.map +1 -1
  71. package/dist/helpers.js +83 -15
  72. package/dist/helpers.js.map +1 -1
  73. package/dist/index.d.ts +5 -16
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +5 -16
  76. package/dist/index.js.map +1 -1
  77. package/dist/integrations/index.d.ts +3 -0
  78. package/dist/integrations/index.d.ts.map +1 -0
  79. package/dist/integrations/index.js +19 -0
  80. package/dist/integrations/index.js.map +1 -0
  81. package/dist/integrations/merkl.d.ts +98 -0
  82. package/dist/integrations/merkl.d.ts.map +1 -0
  83. package/dist/integrations/merkl.js +37 -0
  84. package/dist/integrations/merkl.js.map +1 -0
  85. package/dist/integrations/snapshot.d.ts +53 -0
  86. package/dist/integrations/snapshot.d.ts.map +1 -0
  87. package/dist/integrations/snapshot.js +103 -0
  88. package/dist/integrations/snapshot.js.map +1 -0
  89. package/dist/setup.d.ts +4 -85
  90. package/dist/setup.d.ts.map +1 -1
  91. package/dist/setup.js +8 -74
  92. package/dist/setup.js.map +1 -1
  93. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ export type MerklChainInfo = {
2
+ id: number;
3
+ name: string;
4
+ icon?: string;
5
+ explorer?: {
6
+ url: string;
7
+ }[];
8
+ liveCampaigns?: number;
9
+ endOfDisputePeriod?: number;
10
+ };
11
+ export type MerklRewardToken = {
12
+ id?: string;
13
+ name?: string;
14
+ symbol: string;
15
+ address: string;
16
+ chainId: number;
17
+ decimals: number;
18
+ icon?: string;
19
+ price?: number;
20
+ priceSource?: string;
21
+ };
22
+ export type MerklRewardBreakdown = {
23
+ campaignId: string;
24
+ amount: string;
25
+ claimed: string;
26
+ pending?: string;
27
+ reason?: string;
28
+ };
29
+ export type MerklRewardRecordToken = Partial<MerklRewardToken>;
30
+ export type MerklRewardRecordBreakdown = {
31
+ token: MerklRewardRecordToken;
32
+ amount?: string;
33
+ value?: number;
34
+ distributionType?: string;
35
+ onChainCampaignId?: string;
36
+ id?: string;
37
+ timestamp?: string;
38
+ campaignId?: string;
39
+ dailyRewardsRecordId?: string;
40
+ };
41
+ export type MerklReward = {
42
+ distributionChainId: number;
43
+ root: string;
44
+ recipient: string;
45
+ amount: string;
46
+ claimed: string;
47
+ pending?: string;
48
+ token: MerklRewardToken;
49
+ breakdowns?: MerklRewardBreakdown[];
50
+ };
51
+ export type MerklUserRewardsResponse = Array<{
52
+ chain: MerklChainInfo;
53
+ rewards: MerklReward[];
54
+ }>;
55
+ export type MerklCampaign = {
56
+ id: string;
57
+ campaignId: string;
58
+ computeChainId: number;
59
+ distributionChainId: number;
60
+ chain: MerklChainInfo;
61
+ distributionChain?: MerklChainInfo;
62
+ rewardToken: MerklRewardToken;
63
+ };
64
+ type FetchOptions = {
65
+ signal?: AbortSignal;
66
+ };
67
+ export type MerklOpportunity = {
68
+ name: string;
69
+ apr: number;
70
+ action?: 'LEND' | 'BORROW' | string;
71
+ identifier: string;
72
+ type: string;
73
+ tokens: {
74
+ address: string;
75
+ symbol: string;
76
+ }[];
77
+ rewardsRecord?: {
78
+ id?: string;
79
+ total?: number;
80
+ timestamp?: string;
81
+ breakdowns?: MerklRewardRecordBreakdown[];
82
+ };
83
+ };
84
+ type FetchRewardsParams = FetchOptions & {
85
+ wallet: string;
86
+ chainId: number;
87
+ };
88
+ export declare function fetchMerklUserRewards({ wallet, chainId, signal, }: FetchRewardsParams): Promise<MerklUserRewardsResponse>;
89
+ type FetchCampaignsParams = FetchOptions & {
90
+ tokenSymbol: string;
91
+ };
92
+ export declare function fetchMerklCampaignsBySymbol({ tokenSymbol, signal, }: FetchCampaignsParams): Promise<MerklCampaign[]>;
93
+ type FetchOpportunitiesParams = FetchOptions & {
94
+ action?: 'LEND' | 'BORROW';
95
+ };
96
+ export declare function fetchMerklOpportunities({ signal, action, }: FetchOpportunitiesParams): Promise<MerklOpportunity[]>;
97
+ export {};
98
+ //# sourceMappingURL=merkl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkl.d.ts","sourceRoot":"","sources":["../../src/integrations/merkl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchMerklUserRewards = fetchMerklUserRewards;
4
+ exports.fetchMerklCampaignsBySymbol = fetchMerklCampaignsBySymbol;
5
+ exports.fetchMerklOpportunities = fetchMerklOpportunities;
6
+ const MERKL_API_BASE_URL = 'https://api.merkl.xyz/v4';
7
+ const PROTOCOL_ID = 'curvance';
8
+ async function fetchMerklUserRewards({ wallet, chainId, signal, }) {
9
+ const url = new URL(`${MERKL_API_BASE_URL}/users/${wallet}/rewards?chainId=${chainId}`);
10
+ const response = await fetch(url.toString(), { signal: signal ?? null, cache: 'no-store' });
11
+ if (!response.ok) {
12
+ throw new Error('Failed to fetch Merkl rewards');
13
+ }
14
+ return (await response.json());
15
+ }
16
+ async function fetchMerklCampaignsBySymbol({ tokenSymbol, signal, }) {
17
+ const url = new URL(`${MERKL_API_BASE_URL}/campaigns`);
18
+ url.searchParams.set('tokenSymbol', tokenSymbol);
19
+ const response = await fetch(url.toString(), { signal: signal ?? null, cache: 'no-store' });
20
+ if (!response.ok) {
21
+ throw new Error('Failed to fetch Merkl campaigns');
22
+ }
23
+ return (await response.json());
24
+ }
25
+ async function fetchMerklOpportunities({ signal, action, }) {
26
+ const url = new URL(`${MERKL_API_BASE_URL}/opportunities?items=100&tokenTypes=TOKEN`);
27
+ url.searchParams.set('mainProtocolId', PROTOCOL_ID);
28
+ if (action) {
29
+ url.searchParams.set('action', action);
30
+ }
31
+ const response = await fetch(url.toString(), { signal: signal ?? null, cache: 'no-store' });
32
+ if (!response.ok) {
33
+ throw new Error('Failed to fetch Merkl opportunities');
34
+ }
35
+ return (await response.json());
36
+ }
37
+ //# sourceMappingURL=merkl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merkl.js","sourceRoot":"","sources":["../../src/integrations/merkl.ts"],"names":[],"mappings":";;AAgGA,sDAcC;AAMD,kEAcC;AAMD,0DAiBC;AAzJD,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AACtD,MAAM,WAAW,GAAG,UAAU,CAAC;AA+FxB,KAAK,UAAU,qBAAqB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,MAAM,GACW;IACjB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,kBAAkB,UAAU,MAAM,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;AAC/D,CAAC;AAMM,KAAK,UAAU,2BAA2B,CAAC,EAC9C,WAAW,EACX,MAAM,GACa;IACnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,kBAAkB,YAAY,CAAC,CAAC;IACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;AACtD,CAAC;AAMM,KAAK,UAAU,uBAAuB,CAAC,EAC1C,MAAM,EACN,MAAM,GACiB;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,kBAAkB,2CAA2C,CAAC,CAAC;IACtF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC;QACT,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE5F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;AACzD,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { Market } from "../classes/Market";
2
+ import { address } from "../types";
3
+ export interface PositionSnapshot {
4
+ tokenAddress: string;
5
+ tokenSymbol: string;
6
+ isBorrowable: boolean;
7
+ depositUSD: number;
8
+ depositTokens: number;
9
+ collateralUSD: number;
10
+ collateralTokens: number;
11
+ debtUSD: number;
12
+ debtTokens: number;
13
+ assetPriceUSD: number;
14
+ supplyAPY: number;
15
+ borrowRate: number;
16
+ }
17
+ export interface MarketSnapshot {
18
+ marketAddress: string;
19
+ marketName: string;
20
+ totalDepositsUSD: number;
21
+ totalDebtUSD: number;
22
+ netUSD: number;
23
+ positionHealth: number | null;
24
+ dailyEarnings: number;
25
+ dailyCost: number;
26
+ positions: PositionSnapshot[];
27
+ }
28
+ export interface PortfolioSnapshot {
29
+ account: string;
30
+ chain: string;
31
+ timestamp: number;
32
+ totalDepositsUSD: number;
33
+ totalDebtUSD: number;
34
+ netUSD: number;
35
+ dailyEarnings: number;
36
+ dailyCost: number;
37
+ markets: MarketSnapshot[];
38
+ }
39
+ /**
40
+ * Snapshot a single market's user positions into plain numbers for JSON serialization.
41
+ */
42
+ export declare function snapshotMarket(market: Market): MarketSnapshot;
43
+ /**
44
+ * Take a full portfolio snapshot across all markets.
45
+ *
46
+ * @param account - Wallet address to snapshot
47
+ * @param options.refresh - When true, reloads on-chain market + user data before reading cache.
48
+ * Use this for indexer/cron jobs that need fresh data.
49
+ */
50
+ export declare function takePortfolioSnapshot(account: address, options?: {
51
+ refresh?: boolean;
52
+ }): Promise<PortfolioSnapshot>;
53
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/integrations/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAInC,MAAM,WAAW,gBAAgB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAqC7D;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACvC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snapshotMarket = snapshotMarket;
4
+ exports.takePortfolioSnapshot = takePortfolioSnapshot;
5
+ const setup_1 = require("../setup");
6
+ // ── Functions ────────────────────────────────────────────────────────────────
7
+ /**
8
+ * Snapshot a single market's user positions into plain numbers for JSON serialization.
9
+ */
10
+ function snapshotMarket(market) {
11
+ const positions = [];
12
+ for (const token of market.tokens) {
13
+ const isBorrowable = token.isBorrowable;
14
+ positions.push({
15
+ tokenAddress: token.address,
16
+ tokenSymbol: token.symbol,
17
+ isBorrowable,
18
+ depositUSD: token.getUserAssetBalance(true).toNumber(),
19
+ depositTokens: token.getUserAssetBalance(false).toNumber(),
20
+ collateralUSD: token.getUserCollateral(true).toNumber(),
21
+ collateralTokens: token.getUserCollateral(false).toNumber(),
22
+ debtUSD: token.getUserDebt(true).toNumber(),
23
+ debtTokens: token.getUserDebt(false).toNumber(),
24
+ assetPriceUSD: token.getPrice(true).toNumber(),
25
+ supplyAPY: token.getApy().toNumber(),
26
+ borrowRate: isBorrowable
27
+ ? token.getBorrowRate(true).toNumber()
28
+ : 0,
29
+ });
30
+ }
31
+ const health = market.positionHealth;
32
+ return {
33
+ marketAddress: market.address,
34
+ marketName: market.name,
35
+ totalDepositsUSD: market.userDeposits.toNumber(),
36
+ totalDebtUSD: market.userDebt.toNumber(),
37
+ netUSD: market.userNet.toNumber(),
38
+ positionHealth: health !== null ? health.toNumber() : null,
39
+ dailyEarnings: market.getUserDepositsChange("day").toNumber(),
40
+ dailyCost: market.getUserDebtChange("day").toNumber(),
41
+ positions,
42
+ };
43
+ }
44
+ /**
45
+ * Take a full portfolio snapshot across all markets.
46
+ *
47
+ * @param account - Wallet address to snapshot
48
+ * @param options.refresh - When true, reloads on-chain market + user data before reading cache.
49
+ * Use this for indexer/cron jobs that need fresh data.
50
+ */
51
+ async function takePortfolioSnapshot(account, options) {
52
+ if (options?.refresh && setup_1.all_markets.length > 0) {
53
+ // Fetch all dynamic + user data in 2 RPC calls (not 2×N).
54
+ // Each market's reload fetches ALL markets then filters — so we call
55
+ // once via the shared reader and distribute results ourselves.
56
+ const reader = setup_1.all_markets[0].reader;
57
+ const [dynamicData, userData] = await Promise.all([
58
+ reader.getDynamicMarketData(),
59
+ reader.getUserData(account),
60
+ ]);
61
+ for (const market of setup_1.all_markets) {
62
+ const dynamic = dynamicData.find((m) => m.address === market.address);
63
+ const user = userData.markets.find((m) => m.address === market.address);
64
+ if (!dynamic || !user)
65
+ continue;
66
+ market.cache.dynamic = dynamic;
67
+ market.cache.user = user;
68
+ for (const token of market.tokens) {
69
+ const dynToken = dynamic.tokens.find((t) => t.address === token.address);
70
+ const usrToken = user.tokens.find((t) => t.address === token.address);
71
+ if (dynToken)
72
+ token.cache = { ...token.cache, ...dynToken };
73
+ if (usrToken)
74
+ token.cache = { ...token.cache, ...usrToken };
75
+ }
76
+ }
77
+ }
78
+ const marketSnapshots = [];
79
+ let totalDepositsUSD = 0;
80
+ let totalDebtUSD = 0;
81
+ let dailyEarnings = 0;
82
+ let dailyCost = 0;
83
+ for (const market of setup_1.all_markets) {
84
+ const snap = snapshotMarket(market);
85
+ marketSnapshots.push(snap);
86
+ totalDepositsUSD += snap.totalDepositsUSD;
87
+ totalDebtUSD += snap.totalDebtUSD;
88
+ dailyEarnings += snap.dailyEarnings;
89
+ dailyCost += snap.dailyCost;
90
+ }
91
+ return {
92
+ account,
93
+ chain: setup_1.setup_config.chain,
94
+ timestamp: Date.now(),
95
+ totalDepositsUSD,
96
+ totalDebtUSD,
97
+ netUSD: totalDepositsUSD - totalDebtUSD,
98
+ dailyEarnings,
99
+ dailyCost,
100
+ markets: marketSnapshots,
101
+ };
102
+ }
103
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/integrations/snapshot.ts"],"names":[],"mappings":";;AAmDA,wCAqCC;AASD,sDAyDC;AAxJD,oCAAqD;AA4CrD,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAc;IACzC,MAAM,SAAS,GAAuB,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAExC,SAAS,CAAC,IAAI,CAAC;YACX,YAAY,EAAE,KAAK,CAAC,OAAO;YAC3B,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,YAAY;YACZ,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACtD,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC1D,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACvD,gBAAgB,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC3D,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC3C,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC/C,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC9C,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,UAAU,EAAE,YAAY;gBACpB,CAAC,CAAE,KAA0B,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBAC5D,CAAC,CAAC,CAAC;SACV,CAAC,CAAC;IACP,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;IAErC,OAAO;QACH,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;QAChD,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;QACjC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QAC1D,aAAa,EAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7D,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;QACrD,SAAS;KACZ,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CACvC,OAAgB,EAChB,OAA+B;IAE/B,IAAI,OAAO,EAAE,OAAO,IAAI,mBAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,0DAA0D;QAC1D,qEAAqE;QACrE,+DAA+D;QAC/D,MAAM,MAAM,GAAG,mBAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;QACtC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,MAAM,CAAC,oBAAoB,EAAE;YAC7B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,mBAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEhC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;gBACtE,IAAI,QAAQ;oBAAE,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC5D,IAAI,QAAQ;oBAAE,KAAK,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;YAChE,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,MAAM,IAAI,mBAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACpC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC1C,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;QAClC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QACpC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,OAAO;QACH,OAAO;QACP,KAAK,EAAE,oBAAY,CAAC,KAAK;QACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,gBAAgB;QAChB,YAAY;QACZ,MAAM,EAAE,gBAAgB,GAAG,YAAY;QACvC,aAAa;QACb,SAAS;QACT,OAAO,EAAE,eAAe;KAC3B,CAAC;AACN,CAAC"}
package/dist/setup.d.ts CHANGED
@@ -1,100 +1,19 @@
1
- import { JsonRpcProvider } from "ethers";
2
1
  import { ChainRpcPrefix, getContractAddresses } from "./helpers";
3
2
  import { Market } from "./classes/Market";
4
- import { address, curvance_provider } from './types';
3
+ import { curvance_provider } from './types';
5
4
  import { ProtocolReader } from "./classes/ProtocolReader";
6
- import { Kuru } from "./classes/DexAggregators/Kuru";
7
- import { KyberSwap } from "./classes/DexAggregators";
8
- export type IncentiveResponse = {
9
- market: address;
10
- type: string;
11
- rate: number;
12
- description: string;
13
- image: string;
14
- };
15
- export type MilestoneResponse = {
16
- market: address;
17
- tvl: number;
18
- multiplier: number;
19
- fail_multiplier: number;
20
- chain_network: string;
21
- start_date: string;
22
- end_date: string;
23
- duration_in_days: number;
24
- };
25
- export type Milestones = {
26
- [key: string]: MilestoneResponse;
27
- };
28
- export type Incentives = {
29
- [key: address]: Array<IncentiveResponse>;
30
- };
31
5
  export declare let setup_config: {
32
6
  chain: ChainRpcPrefix;
33
7
  contracts: ReturnType<typeof getContractAddresses>;
34
8
  provider: curvance_provider;
35
9
  approval_protection: boolean;
36
- api_url: string | null;
10
+ api_url: string;
37
11
  };
38
12
  export declare let all_markets: Market[];
39
- export declare const chain_config: {
40
- 'monad-testnet': {
41
- dexAgg: Kuru;
42
- provider: JsonRpcProvider;
43
- native_symbol: string;
44
- native_name: string;
45
- wrapped_native: address;
46
- native_vaults: {
47
- name: string;
48
- contract: address;
49
- }[];
50
- vaults: never[];
51
- };
52
- 'monad-mainnet': {
53
- dexAgg: KyberSwap;
54
- provider: JsonRpcProvider;
55
- native_symbol: string;
56
- native_name: string;
57
- wrapped_native: address;
58
- native_vaults: {
59
- name: string;
60
- contract: address;
61
- }[];
62
- vaults: {
63
- name: string;
64
- contract: address;
65
- underlying: address;
66
- }[];
67
- };
68
- 'arb-sepolia': {
69
- dexAgg: KyberSwap;
70
- provider: JsonRpcProvider;
71
- native_symbol: string;
72
- native_name: string;
73
- wrapped_native: address;
74
- native_vaults: never[];
75
- vaults: never[];
76
- };
77
- 'local-monad-mainnet': {
78
- provider: JsonRpcProvider;
79
- dexAgg: KyberSwap;
80
- native_symbol: string;
81
- native_name: string;
82
- wrapped_native: address;
83
- native_vaults: {
84
- name: string;
85
- contract: address;
86
- }[];
87
- vaults: {
88
- name: string;
89
- contract: address;
90
- underlying: address;
91
- }[];
92
- };
93
- };
94
13
  export declare function setupChain(chain: ChainRpcPrefix, provider?: curvance_provider | null, approval_protection?: boolean, api_url?: string): Promise<{
95
14
  markets: Market[];
96
15
  reader: ProtocolReader;
97
- dexAgg: Kuru | KyberSwap;
98
- global_milestone: MilestoneResponse | null;
16
+ dexAgg: import("./classes/DexAggregators/IDexAgg").default;
17
+ global_milestone: import("./classes/Api").MilestoneResponse | null;
99
18
  }>;
100
19
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAyB,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B,CAAA;AACD,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;CAAE,CAAC;AAEtE,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,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,eAAO,IAAI,WAAW,EAAE,MAAM,EAAO,CAAC;AAiBtC,eAAO,MAAM,YAAY;;;;;;wBAW+C,OAAO;;;sBAES,OAAO;;;;;;;;;wBAvB3B,OAAO;;;sBAES,OAAO;;;;sBAIR,OAAO;wBAA8D,OAAO;;;;;;;;wBA8BvF,OAAO;;;;;;;;;wBApCX,OAAO;;;sBAES,OAAO;;;;sBAIR,OAAO;wBAA8D,OAAO;;;CAmC9J,CAAC;AAEF,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,GAAE,iBAAiB,GAAG,IAAW,EAAE,mBAAmB,GAAE,OAAe,EAAE,OAAO,GAAE,MAAwC;;;;;GAoEzL"}
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;AAM1D,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;;;;;GAqCpL"}
package/dist/setup.js CHANGED
@@ -1,63 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chain_config = exports.all_markets = exports.setup_config = void 0;
3
+ exports.all_markets = exports.setup_config = void 0;
4
4
  exports.setupChain = setupChain;
5
- const ethers_1 = require("ethers");
6
5
  const helpers_1 = require("./helpers");
7
6
  const Market_1 = require("./classes/Market");
8
7
  const ProtocolReader_1 = require("./classes/ProtocolReader");
9
8
  const OracleManager_1 = require("./classes/OracleManager");
10
9
  const retry_provider_1 = require("./retry-provider");
11
- const Kuru_1 = require("./classes/DexAggregators/Kuru");
12
- const DexAggregators_1 = require("./classes/DexAggregators");
10
+ const chains_1 = require("./chains");
11
+ const Api_1 = require("./classes/Api");
13
12
  exports.all_markets = [];
14
- const monad_mainnet_config = {
15
- dexAgg: new DexAggregators_1.KyberSwap(),
16
- provider: new ethers_1.JsonRpcProvider("https://rpc-mainnet.monadinfra.com/rpc/yXdhejk7tio3mpBmpTyzQCdIQjDXsuAk"),
17
- native_symbol: 'MON',
18
- native_name: 'Monad',
19
- wrapped_native: "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A",
20
- native_vaults: [
21
- { name: "aprMON", contract: "0x0c65A0BC65a5D819235B71F554D210D3F80E0852" },
22
- { name: "shMON", contract: "0x1B68626dCa36c7fE922fD2d55E4f631d962dE19c" },
23
- ],
24
- vaults: [
25
- { name: "sAUSD", contract: "0xD793c04B87386A6bb84ee61D98e0065FdE7fdA5E", underlying: "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a" }
26
- ]
27
- };
28
- exports.chain_config = {
29
- 'monad-testnet': {
30
- dexAgg: new Kuru_1.Kuru("0x0Acb7eF4D8733C719d60e0992B489b629bc55C02", 1, "0x96eaC98928437496DdD0Cd2080E54Fe78BaC99b6", "https://ws.staging.kuru.io/api"),
31
- provider: new ethers_1.JsonRpcProvider("https://rpc.ankr.com/monad_testnet"),
32
- native_symbol: 'MON',
33
- native_name: 'Monad',
34
- wrapped_native: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
35
- native_vaults: [
36
- { name: "aprMON", contract: "0xb2f82D0f38dc453D596Ad40A37799446Cc89274A" },
37
- { name: "shMON", contract: "0x3a98250F98Dd388C211206983453837C8365BDc1" },
38
- // { name: "magma", contract: "0xaEef2f6B429Cb59C9B2D7bB2141ADa993E8571c3" as address }, //Has no deposit function for some reason
39
- // { name: "kintsu", contract: "0xe1d2439b75fb9746E7Bc6cB777Ae10AA7f7ef9c5" as address } //Has a deposit function but uses uint96 instead of uint256
40
- ],
41
- vaults: []
42
- },
43
- 'monad-mainnet': monad_mainnet_config,
44
- 'arb-sepolia': {
45
- dexAgg: new DexAggregators_1.KyberSwap(),
46
- provider: new ethers_1.JsonRpcProvider("https://arbitrum-sepolia-testnet.api.pocket.network"),
47
- native_symbol: 'ETH',
48
- native_name: 'Ether',
49
- wrapped_native: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
50
- native_vaults: [],
51
- vaults: []
52
- },
53
- 'local-monad-mainnet': { ...monad_mainnet_config, provider: new ethers_1.JsonRpcProvider("http://localhost:8545") } //overwrite with mainnet
54
- };
55
- async function setupChain(chain, provider = null, approval_protection = false, api_url = "https://api.floppy-backup.com") {
56
- if (!(chain in exports.chain_config)) {
13
+ async function setupChain(chain, provider = null, approval_protection = false, api_url = "https://api.curvance.com") {
14
+ if (!(chain in chains_1.chain_config)) {
57
15
  throw new Error("Chain does not have a corresponding config");
58
16
  }
59
17
  if (provider == null) {
60
- provider = exports.chain_config[chain].provider;
18
+ provider = chains_1.chain_config[chain].provider;
61
19
  }
62
20
  provider = (0, retry_provider_1.wrapProviderWithRetries)(provider);
63
21
  exports.setup_config = {
@@ -73,38 +31,14 @@ async function setupChain(chain, provider = null, approval_protection = false, a
73
31
  else if (!("OracleManager" in exports.setup_config.contracts)) {
74
32
  throw new Error(`Chain configuration for ${chain} is missing OracleManager address.`);
75
33
  }
34
+ const { milestones, incentives } = await Api_1.Api.getRewards();
76
35
  const reader = new ProtocolReader_1.ProtocolReader(exports.setup_config.contracts.ProtocolReader);
77
36
  const oracle_manager = new OracleManager_1.OracleManager(exports.setup_config.contracts.OracleManager);
78
- let milestones = {};
79
- let incentives = {};
80
- if (exports.setup_config.api_url != null) {
81
- let rewards;
82
- try {
83
- rewards = await fetch(`${exports.setup_config.api_url}/v1/rewards/active/${chain}`).then(res => res.json());
84
- }
85
- catch (e) {
86
- console.error("Failed to fetch rewards data from API:", e);
87
- rewards = {
88
- milestones: [],
89
- incentives: []
90
- };
91
- }
92
- for (const milestone of rewards.milestones) {
93
- milestones[milestone.market] = milestone;
94
- }
95
- for (const incentive of rewards.incentives) {
96
- const market = incentive.market;
97
- if (!(market in incentives)) {
98
- incentives[market] = [];
99
- }
100
- incentives[market].push(incentive);
101
- }
102
- }
103
37
  exports.all_markets = await Market_1.Market.getAll(reader, oracle_manager, exports.setup_config.provider, milestones, incentives);
104
38
  return {
105
39
  markets: exports.all_markets,
106
40
  reader,
107
- dexAgg: exports.chain_config[chain].dexAgg,
41
+ dexAgg: chains_1.chain_config[chain].dexAgg,
108
42
  global_milestone: milestones['global'] ?? null
109
43
  };
110
44
  }
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;;AAmBA,gCAqCC;AAxDD,uCAAiE;AACjE,6CAA0C;AAE1C,6DAA0D;AAC1D,2DAAwD;AACxD,qDAA2D;AAC3D,qCAAwC;AACxC,uCAAoC;AAUzB,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "curvance",
3
- "version": "3.6.1",
3
+ "version": "3.6.3",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [