@1stdex/first-sdk 1.0.12 → 1.0.14
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/cjs/calls/batch/index.js +3 -1
- package/dist/cjs/calls/batch/index.js.map +1 -1
- package/dist/cjs/calls/batch/prepare-market-order-with-setup.js +125 -0
- package/dist/cjs/calls/batch/prepare-market-order-with-setup.js.map +1 -0
- package/dist/cjs/calls/index.js +2 -1
- package/dist/cjs/calls/index.js.map +1 -1
- package/dist/cjs/calls/market/market.js +2 -2
- package/dist/cjs/calls/market/market.js.map +1 -1
- package/dist/cjs/constants/abis/core/mirror-token-abi.js +58 -0
- package/dist/cjs/constants/abis/core/mirror-token-abi.js.map +1 -0
- package/dist/cjs/views/balance.js +64 -2
- package/dist/cjs/views/balance.js.map +1 -1
- package/dist/cjs/views/index.js +2 -1
- package/dist/cjs/views/index.js.map +1 -1
- package/dist/esm/calls/batch/index.js +1 -0
- package/dist/esm/calls/batch/index.js.map +1 -1
- package/dist/esm/calls/batch/prepare-market-order-with-setup.js +157 -0
- package/dist/esm/calls/batch/prepare-market-order-with-setup.js.map +1 -0
- package/dist/esm/calls/index.js +1 -1
- package/dist/esm/calls/index.js.map +1 -1
- package/dist/esm/calls/market/market.js +2 -2
- package/dist/esm/calls/market/market.js.map +1 -1
- package/dist/esm/constants/abis/core/mirror-token-abi.js +55 -0
- package/dist/esm/constants/abis/core/mirror-token-abi.js.map +1 -0
- package/dist/esm/views/balance.js +91 -2
- package/dist/esm/views/balance.js.map +1 -1
- package/dist/esm/views/index.js +1 -1
- package/dist/esm/views/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/calls/batch/index.d.ts +1 -0
- package/dist/types/calls/batch/index.d.ts.map +1 -1
- package/dist/types/calls/batch/prepare-market-order-with-setup.d.ts +48 -0
- package/dist/types/calls/batch/prepare-market-order-with-setup.d.ts.map +1 -0
- package/dist/types/calls/index.d.ts +1 -1
- package/dist/types/calls/index.d.ts.map +1 -1
- package/dist/types/calls/market/market.d.ts +1 -0
- package/dist/types/calls/market/market.d.ts.map +1 -1
- package/dist/types/constants/abis/core/mirror-token-abi.d.ts +80 -0
- package/dist/types/constants/abis/core/mirror-token-abi.d.ts.map +1 -0
- package/dist/types/views/balance.d.ts +30 -0
- package/dist/types/views/balance.d.ts.map +1 -1
- package/dist/types/views/index.d.ts +1 -1
- package/dist/types/views/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../../src/calls/market/market.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,MAAM,CAAC;AAEd,OAAO,EAAa,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAO3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,EAChC,OAAO,EACP,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,OAAO,
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../../src/calls/market/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export const MIRROR_TOKEN_ABI = [
|
|
2
|
+
{
|
|
3
|
+
inputs: [],
|
|
4
|
+
name: 'realToken',
|
|
5
|
+
outputs: [{ internalType: 'address', name: '', type: 'address' }],
|
|
6
|
+
stateMutability: 'view',
|
|
7
|
+
type: 'function',
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
inputs: [
|
|
11
|
+
{ internalType: 'address[]', name: 'recipients', type: 'address[]' },
|
|
12
|
+
{ internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' },
|
|
13
|
+
],
|
|
14
|
+
name: 'addAllocations',
|
|
15
|
+
outputs: [],
|
|
16
|
+
stateMutability: 'nonpayable',
|
|
17
|
+
type: 'function',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
inputs: [],
|
|
21
|
+
name: 'name',
|
|
22
|
+
outputs: [{ internalType: 'string', name: '', type: 'string' }],
|
|
23
|
+
stateMutability: 'view',
|
|
24
|
+
type: 'function',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
inputs: [],
|
|
28
|
+
name: 'symbol',
|
|
29
|
+
outputs: [{ internalType: 'string', name: '', type: 'string' }],
|
|
30
|
+
stateMutability: 'view',
|
|
31
|
+
type: 'function',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
inputs: [],
|
|
35
|
+
name: 'decimals',
|
|
36
|
+
outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }],
|
|
37
|
+
stateMutability: 'view',
|
|
38
|
+
type: 'function',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
inputs: [],
|
|
42
|
+
name: 'totalSupply',
|
|
43
|
+
outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
|
|
44
|
+
stateMutability: 'view',
|
|
45
|
+
type: 'function',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
inputs: [{ internalType: 'address', name: 'account', type: 'address' }],
|
|
49
|
+
name: 'balanceOf',
|
|
50
|
+
outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
|
|
51
|
+
stateMutability: 'view',
|
|
52
|
+
type: 'function',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
//# sourceMappingURL=mirror-token-abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirror-token-abi.js","sourceRoot":"","sources":["../../../../../src/constants/abis/core/mirror-token-abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE;YACpE,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;SAClE;QACD,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7D,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { createPublicClient, http, erc20Abi, formatUnits } from 'viem';
|
|
1
|
+
import { createPublicClient, http, erc20Abi, formatUnits, isAddressEqual, } from 'viem';
|
|
2
2
|
import { CHAIN_MAP } from '../constants/chain-configs/chain';
|
|
3
|
-
import {
|
|
3
|
+
import { STABLE_COINS } from '../constants/chain-configs/currency';
|
|
4
4
|
import { DEX_VAULT_ABI } from '../constants/abis/core/dex-vault-abi';
|
|
5
|
+
import { MIRROR_TOKEN_ABI } from '../constants/abis/core/mirror-token-abi';
|
|
5
6
|
import { fetchCurrency } from '../entities/currency/apis';
|
|
7
|
+
import { getVault } from './vault';
|
|
6
8
|
/**
|
|
7
9
|
* Get the trading balance for a user and token.
|
|
8
10
|
* This includes wallet balance, vault available balance, and locked balance in orders.
|
|
@@ -70,4 +72,91 @@ export const getTradingBalance = async ({ chainId, userAddress, tokenAddress, op
|
|
|
70
72
|
totalAvailable: { currency, value: totalAvailable },
|
|
71
73
|
};
|
|
72
74
|
};
|
|
75
|
+
/**
|
|
76
|
+
* Get the portfolio balance for a user and token.
|
|
77
|
+
* This includes total balance (wallet + vault) and real token balance for mirror tokens.
|
|
78
|
+
*
|
|
79
|
+
* @param chainId The chain ID of the blockchain.
|
|
80
|
+
* @param userAddress The address of the user.
|
|
81
|
+
* @param tokenAddress The address of the token.
|
|
82
|
+
* @param options Optional RPC URL.
|
|
83
|
+
* @returns A Promise resolving to portfolio balance information.
|
|
84
|
+
* @example
|
|
85
|
+
* import { getPortfolioBalance } from '@clober/v2-sdk'
|
|
86
|
+
*
|
|
87
|
+
* const portfolio = await getPortfolioBalance({
|
|
88
|
+
* chainId: 421614,
|
|
89
|
+
* userAddress: '0xF8c1869Ecd4df136693C45EcE1b67f85B6bDaE69',
|
|
90
|
+
* tokenAddress: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0'
|
|
91
|
+
* })
|
|
92
|
+
* console.log(`Total balance: ${portfolio.totalBalance.value} ${portfolio.totalBalance.currency.symbol}`)
|
|
93
|
+
*/
|
|
94
|
+
export const getPortfolioBalance = async ({ chainId, userAddress, tokenAddress, options, }) => {
|
|
95
|
+
const publicClient = createPublicClient({
|
|
96
|
+
chain: CHAIN_MAP[chainId],
|
|
97
|
+
transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
|
|
98
|
+
});
|
|
99
|
+
// Get currency info and vault address
|
|
100
|
+
const [currency, vault] = await Promise.all([
|
|
101
|
+
fetchCurrency(publicClient, chainId, tokenAddress),
|
|
102
|
+
getVault({ chainId, tokenAddress, ...(options && { options }) }),
|
|
103
|
+
]);
|
|
104
|
+
// Check if this is USDC (stable coin)
|
|
105
|
+
const isUSDC = STABLE_COINS[chainId]?.some((stableCoin) => isAddressEqual(stableCoin.address, tokenAddress));
|
|
106
|
+
// Multicall to get wallet and vault balances
|
|
107
|
+
const results = await publicClient.multicall({
|
|
108
|
+
contracts: [
|
|
109
|
+
{
|
|
110
|
+
address: tokenAddress,
|
|
111
|
+
abi: erc20Abi,
|
|
112
|
+
functionName: 'balanceOf',
|
|
113
|
+
args: [userAddress],
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
address: vault.address,
|
|
117
|
+
abi: DEX_VAULT_ABI,
|
|
118
|
+
functionName: 'maxWithdraw',
|
|
119
|
+
args: [userAddress],
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
});
|
|
123
|
+
const walletBalanceRaw = results[0].result || 0n;
|
|
124
|
+
const vaultAvailableRaw = results[1].result || 0n;
|
|
125
|
+
// Convert to decimal-adjusted strings
|
|
126
|
+
const totalBalance = formatUnits(walletBalanceRaw + vaultAvailableRaw, currency.decimals);
|
|
127
|
+
let totalRealTokenBalance = undefined;
|
|
128
|
+
// If not USDC, try to get real token balance for mirror tokens
|
|
129
|
+
if (!isUSDC) {
|
|
130
|
+
try {
|
|
131
|
+
// Try to get real token address from mirror token
|
|
132
|
+
const realTokenAddress = await publicClient.readContract({
|
|
133
|
+
address: tokenAddress,
|
|
134
|
+
abi: MIRROR_TOKEN_ABI,
|
|
135
|
+
functionName: 'realToken',
|
|
136
|
+
});
|
|
137
|
+
// Get real token balance
|
|
138
|
+
const realTokenBalanceRaw = await publicClient.readContract({
|
|
139
|
+
address: realTokenAddress,
|
|
140
|
+
abi: erc20Abi,
|
|
141
|
+
functionName: 'balanceOf',
|
|
142
|
+
args: [userAddress],
|
|
143
|
+
});
|
|
144
|
+
// Get real token currency info
|
|
145
|
+
const realTokenCurrency = await fetchCurrency(publicClient, chainId, realTokenAddress);
|
|
146
|
+
const realTokenBalance = formatUnits(realTokenBalanceRaw, realTokenCurrency.decimals);
|
|
147
|
+
totalRealTokenBalance = {
|
|
148
|
+
currency: realTokenCurrency,
|
|
149
|
+
value: realTokenBalance,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
// If realToken function doesn't exist or fails, realTokenBalance remains undefined
|
|
154
|
+
console.warn(`Failed to get real token balance for ${tokenAddress}:`, error);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
totalBalance: { currency, value: totalBalance },
|
|
159
|
+
totalRealTokenBalance,
|
|
160
|
+
};
|
|
161
|
+
};
|
|
73
162
|
//# sourceMappingURL=balance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/views/balance.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/views/balance.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/views/index.js
CHANGED
|
@@ -6,6 +6,6 @@ export { getContractAddresses } from './address';
|
|
|
6
6
|
export { getCurrencies, getStableCurrencies, getLatestPriceMap, getDailyClosePriceMap, getLatestPrice, } from './currency';
|
|
7
7
|
export { getProtocolAnalytics, getUserDailyVolumes, getTopUsersByNativeVolume, getUserNativeVolume, getReferralSummary, } from './analytics';
|
|
8
8
|
export { getVault } from './vault';
|
|
9
|
-
export { getTradingBalance } from './balance';
|
|
9
|
+
export { getTradingBalance, getPortfolioBalance } from './balance';
|
|
10
10
|
export { isOrderOperatorApproved, checkTokenAllowances, needsVaultDeposit, getOrderSetupStatus, } from './setup';
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,GAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
|