@sodax/dapp-kit 1.0.1-beta → 1.0.3-beta
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/README.md +130 -39
- package/dist/index.d.mts +576 -346
- package/dist/index.d.ts +576 -346
- package/dist/index.js +357 -176
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +354 -178
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/hooks/backend/README.md +148 -49
- package/src/hooks/backend/index.ts +2 -0
- package/src/hooks/backend/types.ts +4 -0
- package/src/hooks/backend/useBackendAllMoneyMarketAssets.ts +31 -20
- package/src/hooks/backend/useBackendAllMoneyMarketBorrowers.ts +25 -7
- package/src/hooks/backend/useBackendIntentByHash.ts +36 -26
- package/src/hooks/backend/useBackendIntentByTxHash.ts +41 -29
- package/src/hooks/backend/useBackendMoneyMarketAsset.ts +40 -27
- package/src/hooks/backend/useBackendMoneyMarketAssetBorrowers.ts +45 -36
- package/src/hooks/backend/useBackendMoneyMarketAssetSuppliers.ts +45 -36
- package/src/hooks/backend/useBackendMoneyMarketPosition.ts +34 -37
- package/src/hooks/backend/useBackendOrderbook.ts +38 -38
- package/src/hooks/backend/useBackendUserIntents.ts +81 -0
- package/src/hooks/mm/index.ts +2 -0
- package/src/hooks/mm/useAToken.ts +37 -20
- package/src/hooks/mm/useATokensBalances.ts +87 -0
- package/src/hooks/mm/useBorrow.ts +36 -36
- package/src/hooks/mm/useMMAllowance.ts +33 -24
- package/src/hooks/mm/useMMApprove.ts +43 -48
- package/src/hooks/mm/useRepay.ts +32 -36
- package/src/hooks/mm/useReservesData.ts +35 -16
- package/src/hooks/mm/useReservesHumanized.ts +15 -3
- package/src/hooks/mm/useReservesList.ts +28 -15
- package/src/hooks/mm/useReservesUsdFormat.ts +30 -21
- package/src/hooks/mm/useSupply.ts +34 -36
- package/src/hooks/mm/useUserFormattedSummary.ts +42 -20
- package/src/hooks/mm/useUserReservesData.ts +34 -19
- package/src/hooks/mm/useWithdraw.ts +33 -35
- package/src/hooks/swap/index.ts +2 -0
- package/src/hooks/swap/useCancelLimitOrder.ts +53 -0
- package/src/hooks/swap/useCreateLimitOrder.ts +72 -0
- package/src/hooks/swap/useSwapAllowance.ts +7 -7
- package/src/hooks/swap/useSwapApprove.ts +6 -6
package/README.md
CHANGED
|
@@ -126,60 +126,147 @@ function App() {
|
|
|
126
126
|
|
|
127
127
|
```typescript
|
|
128
128
|
// Connect Wallet Operations
|
|
129
|
-
import { useXConnectors, useXConnect, useXAccount } from '@sodax/wallet-sdk-react';
|
|
130
|
-
const evmConnectors = useXConnectors('EVM');
|
|
131
|
-
const { mutateAsync: connect, isPending } = useXConnect();
|
|
132
|
-
const account = useXAccount('EVM');
|
|
133
|
-
|
|
134
|
-
const handleConnect = () => {
|
|
135
|
-
connect(evmConnectors[0]);
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
return (
|
|
139
|
-
<div>
|
|
140
|
-
<button onClick={handleConnect}>Connect EVM Wallet</button>
|
|
141
|
-
<div>Connected wallet: {account.address}</div>
|
|
142
|
-
</div>
|
|
143
|
-
);
|
|
144
|
-
|
|
145
129
|
// Money Market Operations
|
|
146
|
-
import { useSupply, useWithdraw, useBorrow, useRepay, useUserReservesData } from '@sodax/dapp-kit';
|
|
130
|
+
import { useSupply, useWithdraw, useBorrow, useRepay, useUserReservesData, useMMAllowance, useMMApprove } from '@sodax/dapp-kit';
|
|
131
|
+
import { parseUnits } from 'viem';
|
|
132
|
+
import { useMemo, useState } from 'react';
|
|
147
133
|
|
|
148
134
|
function MoneyMarketComponent() {
|
|
135
|
+
const [amount, setAmount] = useState<string>('');
|
|
136
|
+
const spokeProvider = useSpokeProvider(chainId, walletProvider);
|
|
137
|
+
|
|
149
138
|
// Supply tokens
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
139
|
+
const supplyParams = useMemo(() => {
|
|
140
|
+
if (!amount) return undefined;
|
|
141
|
+
return {
|
|
142
|
+
token: token.address,
|
|
143
|
+
amount: parseUnits(amount, token.decimals),
|
|
144
|
+
action: 'supply' as const,
|
|
145
|
+
};
|
|
146
|
+
}, [token.address, token.decimals, amount]);
|
|
147
|
+
|
|
148
|
+
const { data: hasSupplyAllowed, isLoading: isSupplyAllowanceLoading } = useMMAllowance(supplyParams, spokeProvider);
|
|
149
|
+
const { mutateAsync: approveSupply, isPending: isApprovingSupply, error: approveSupplyError } = useMMApprove();
|
|
150
|
+
const { mutateAsync: supply, isPending: isSupplying, error: supplyError } = useSupply();
|
|
151
|
+
|
|
152
|
+
const handleApproveSupply = async () => {
|
|
153
|
+
if (!spokeProvider || !supplyParams) return;
|
|
154
|
+
try {
|
|
155
|
+
await approveSupply({ params: supplyParams, spokeProvider });
|
|
156
|
+
} catch (err) {
|
|
157
|
+
console.error('Error approving supply:', err);
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const handleSupply = async () => {
|
|
162
|
+
if (!spokeProvider || !supplyParams) return;
|
|
163
|
+
try {
|
|
164
|
+
await supply({ params: supplyParams, spokeProvider });
|
|
165
|
+
} catch (err) {
|
|
166
|
+
console.error('Error supplying:', err);
|
|
167
|
+
}
|
|
153
168
|
};
|
|
154
169
|
|
|
155
170
|
// Withdraw tokens
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
171
|
+
const withdrawParams = useMemo(() => {
|
|
172
|
+
if (!amount) return undefined;
|
|
173
|
+
return {
|
|
174
|
+
token: token.address,
|
|
175
|
+
amount: parseUnits(amount, 18), // vault token on hub chain decimals is 18
|
|
176
|
+
action: 'withdraw' as const,
|
|
177
|
+
};
|
|
178
|
+
}, [token.address, amount]);
|
|
179
|
+
|
|
180
|
+
const { data: hasWithdrawAllowed, isLoading: isWithdrawAllowanceLoading } = useMMAllowance(withdrawParams, spokeProvider);
|
|
181
|
+
const { data: hasWithdrawAllowed, isLoading: isWithdrawAllowanceLoading } = useMMAllowance({ params: withdrawParams, spokeProvider });
|
|
182
|
+
|
|
183
|
+
const { mutateAsync: approveWithdraw, isPending: isApprovingWithdraw, error: approveWithdrawError } = useMMApprove();
|
|
184
|
+
const { mutateAsync: withdraw, isPending: isWithdrawing, error: withdrawError } = useWithdraw();
|
|
185
|
+
|
|
186
|
+
const handleApproveWithdraw = async () => {
|
|
187
|
+
if (!spokeProvider || !withdrawParams) return;
|
|
188
|
+
try {
|
|
189
|
+
await approveWithdraw({ params: withdrawParams, spokeProvider });
|
|
190
|
+
} catch (err) {
|
|
191
|
+
console.error('Error approving withdraw:', err);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
const handleWithdraw = async () => {
|
|
196
|
+
if (!spokeProvider || !withdrawParams) return;
|
|
197
|
+
try {
|
|
198
|
+
await withdraw({ params: withdrawParams, spokeProvider });
|
|
199
|
+
} catch (err) {
|
|
200
|
+
console.error('Error withdrawing:', err);
|
|
201
|
+
}
|
|
159
202
|
};
|
|
160
203
|
|
|
161
204
|
// Borrow tokens
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
205
|
+
const borrowParams = useMemo(() => {
|
|
206
|
+
if (!amount) return undefined;
|
|
207
|
+
return {
|
|
208
|
+
token: token.address,
|
|
209
|
+
amount: parseUnits(amount, 18),
|
|
210
|
+
action: 'borrow' as const,
|
|
211
|
+
};
|
|
212
|
+
}, [token.address, amount]);
|
|
213
|
+
|
|
214
|
+
const { data: hasBorrowAllowed, isLoading: isBorrowAllowanceLoading } = useMMAllowance({ params: borrowParams, spokeProvider });
|
|
215
|
+
const { mutateAsync: approveBorrow, isPending: isApprovingBorrow, error: approveBorrowError } = useMMApprove();
|
|
216
|
+
const { mutateAsync: borrow, isPending: isBorrowing, error: borrowError } = useBorrow();
|
|
217
|
+
|
|
218
|
+
const handleApproveBorrow = async () => {
|
|
219
|
+
if (!spokeProvider || !borrowParams) return;
|
|
220
|
+
try {
|
|
221
|
+
await approveBorrow({ params: borrowParams, spokeProvider });
|
|
222
|
+
} catch (err) {
|
|
223
|
+
console.error('Error approving borrow:', err);
|
|
224
|
+
}
|
|
165
225
|
};
|
|
166
226
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
227
|
+
const handleBorrow = async () => {
|
|
228
|
+
if (!spokeProvider || !borrowParams) return;
|
|
229
|
+
try {
|
|
230
|
+
await borrow({ params: borrowParams, spokeProvider });
|
|
231
|
+
} catch (err) {
|
|
232
|
+
console.error('Error borrowing:', err);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
170
235
|
|
|
171
|
-
//
|
|
172
|
-
|
|
236
|
+
// Repay tokens
|
|
237
|
+
const repayParams = useMemo(() => {
|
|
238
|
+
if (!amount) return undefined;
|
|
239
|
+
return {
|
|
240
|
+
token: token.address,
|
|
241
|
+
amount: parseUnits(amount, token.decimals),
|
|
242
|
+
action: 'repay' as const,
|
|
243
|
+
};
|
|
244
|
+
}, [token.address, token.decimals, amount]);
|
|
245
|
+
|
|
246
|
+
const { data: hasRepayAllowed, isLoading: isRepayAllowanceLoading } = useMMAllowance({ params: repayParams, spokeProvider });
|
|
247
|
+
const { mutateAsync: approveRepay, isPending: isApprovingRepay, error: approveRepayError } = useMMApprove();
|
|
248
|
+
const { mutateAsync: repay, isPending: isRepaying, error: repayError } = useRepay();
|
|
249
|
+
|
|
250
|
+
const handleApproveRepay = async () => {
|
|
251
|
+
if (!spokeProvider || !repayParams) return;
|
|
252
|
+
try {
|
|
253
|
+
await approveRepay({ params: repayParams, spokeProvider });
|
|
254
|
+
} catch (err) {
|
|
255
|
+
console.error('Error approving repay:', err);
|
|
256
|
+
}
|
|
257
|
+
};
|
|
173
258
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
await approve(amount);
|
|
259
|
+
const handleRepay = async () => {
|
|
260
|
+
if (!spokeProvider || !repayParams) return;
|
|
261
|
+
try {
|
|
262
|
+
await repay({ params: repayParams, spokeProvider });
|
|
263
|
+
} catch (err) {
|
|
264
|
+
console.error('Error repaying:', err);
|
|
265
|
+
}
|
|
182
266
|
};
|
|
267
|
+
|
|
268
|
+
// Get user's supplied assets
|
|
269
|
+
const userReserves = useUserReservesData(chainId);
|
|
183
270
|
}
|
|
184
271
|
|
|
185
272
|
// Wallet Address Derivation
|
|
@@ -307,6 +394,10 @@ function BridgeComponent() {
|
|
|
307
394
|
#### Swap Hooks
|
|
308
395
|
- [`useQuote()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useQuote.ts) - Get quote for an intent order
|
|
309
396
|
- [`useSwap()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useSwap.ts) - Create and submit an intent order
|
|
397
|
+
- [`useCreateLimitOrder()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useCreateLimitOrder.ts) - Create a limit order intent (no deadline, must be cancelled manually)
|
|
398
|
+
- **Note**: Limit orders use `useSwapAllowance()` for checking token allowance (same as swaps)
|
|
399
|
+
- **Note**: Limit orders use `useSwapApprove()` for approving token spending (same as swaps)
|
|
400
|
+
- **Note**: Limit orders use `useCancelSwap()` for cancelling (same as swaps)
|
|
310
401
|
- [`useStatus()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useStatus.ts) - Get status of an intent order
|
|
311
402
|
- [`useSwapAllowance()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useSwapAllowance.ts) - Check token allowance for an intent order
|
|
312
403
|
- [`useSwapApprove()`](https://github.com/icon-project/sodax-frontend/tree/main/packages/dapp-kit/src/hooks/swap/useSwapApprove.ts) - Approve token spending
|