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.
- package/dist/chains/arbitrum.d.ts +3 -0
- package/dist/chains/arbitrum.d.ts.map +1 -0
- package/dist/chains/arbitrum.js +16 -0
- package/dist/chains/arbitrum.js.map +1 -0
- package/dist/chains/index.d.ts +21 -568
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +6 -12
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/monad.d.ts +3 -0
- package/dist/chains/monad.d.ts.map +1 -0
- package/dist/chains/monad.js +21 -0
- package/dist/chains/monad.js.map +1 -0
- package/dist/classes/Api.d.ts +37 -0
- package/dist/classes/Api.d.ts.map +1 -0
- package/dist/classes/Api.js +69 -0
- package/dist/classes/Api.js.map +1 -0
- package/dist/classes/BorrowableCToken.d.ts +0 -4
- package/dist/classes/BorrowableCToken.d.ts.map +1 -1
- package/dist/classes/BorrowableCToken.js +0 -6
- package/dist/classes/BorrowableCToken.js.map +1 -1
- package/dist/classes/CToken.d.ts +11 -1
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +20 -4
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +8 -6
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/Market.d.ts +1 -5
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +17 -32
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/NativeToken.d.ts.map +1 -1
- package/dist/classes/NativeToken.js +2 -1
- package/dist/classes/NativeToken.js.map +1 -1
- package/dist/classes/index.d.ts +15 -0
- package/dist/classes/index.d.ts.map +1 -0
- package/dist/classes/index.js +31 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/contracts/arb-sepolia.json +44 -0
- package/dist/contracts/index.d.ts +267 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/monad-mainnet.json +220 -0
- package/dist/format/amounts.d.ts +18 -0
- package/dist/format/amounts.d.ts.map +1 -0
- package/dist/format/amounts.js +75 -0
- package/dist/format/amounts.js.map +1 -0
- package/dist/format/borrow.d.ts +15 -0
- package/dist/format/borrow.d.ts.map +1 -0
- package/dist/format/borrow.js +38 -0
- package/dist/format/borrow.js.map +1 -0
- package/dist/format/collateral.d.ts +10 -0
- package/dist/format/collateral.d.ts.map +1 -0
- package/dist/format/collateral.js +28 -0
- package/dist/format/collateral.js.map +1 -0
- package/dist/format/health.d.ts +10 -0
- package/dist/format/health.d.ts.map +1 -0
- package/dist/format/health.js +50 -0
- package/dist/format/health.js.map +1 -0
- package/dist/format/index.d.ts +6 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +22 -0
- package/dist/format/index.js.map +1 -0
- package/dist/format/leverage.d.ts +40 -0
- package/dist/format/leverage.d.ts.map +1 -0
- package/dist/format/leverage.js +130 -0
- package/dist/format/leverage.js.map +1 -0
- package/dist/helpers.d.ts +59 -133
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +83 -15
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +5 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -16
- package/dist/index.js.map +1 -1
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +19 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/merkl.d.ts +98 -0
- package/dist/integrations/merkl.d.ts.map +1 -0
- package/dist/integrations/merkl.js +37 -0
- package/dist/integrations/merkl.js.map +1 -0
- package/dist/integrations/snapshot.d.ts +53 -0
- package/dist/integrations/snapshot.d.ts.map +1 -0
- package/dist/integrations/snapshot.js +103 -0
- package/dist/integrations/snapshot.js.map +1 -0
- package/dist/setup.d.ts +4 -85
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +8 -74
- package/dist/setup.js.map +1 -1
- 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":"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"}
|
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 {
|
|
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
|
|
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:
|
|
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
|
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,
|
|
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.
|
|
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
|
|
12
|
-
const
|
|
10
|
+
const chains_1 = require("./chains");
|
|
11
|
+
const Api_1 = require("./classes/Api");
|
|
13
12
|
exports.all_markets = [];
|
|
14
|
-
|
|
15
|
-
|
|
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 =
|
|
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:
|
|
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":";;;
|
|
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"}
|