@sodax/dapp-kit 0.0.1-rc.1 → 0.0.1-rc.10
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 +14 -13
- package/dist/contexts/index.d.ts +2 -1
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +2 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/hooks/mm/index.d.ts +3 -1
- package/dist/hooks/mm/index.d.ts.map +1 -1
- package/dist/hooks/mm/useBorrow.d.ts +13 -4
- package/dist/hooks/mm/useBorrow.d.ts.map +1 -1
- package/dist/hooks/mm/useMMAllowance.d.ts +26 -0
- package/dist/hooks/mm/useMMAllowance.d.ts.map +1 -0
- package/dist/hooks/mm/useMMApprove.d.ts +27 -0
- package/dist/hooks/mm/useMMApprove.d.ts.map +1 -0
- package/dist/hooks/mm/useRepay.d.ts +13 -4
- package/dist/hooks/mm/useRepay.d.ts.map +1 -1
- package/dist/hooks/mm/useReservesData.d.ts +19 -0
- package/dist/hooks/mm/useReservesData.d.ts.map +1 -0
- package/dist/hooks/mm/useSupply.d.ts +4 -2
- package/dist/hooks/mm/useSupply.d.ts.map +1 -1
- package/dist/hooks/mm/useUserReservesData.d.ts +1 -7
- package/dist/hooks/mm/useUserReservesData.d.ts.map +1 -1
- package/dist/hooks/mm/useWithdraw.d.ts +11 -4
- package/dist/hooks/mm/useWithdraw.d.ts.map +1 -1
- package/dist/hooks/provider/useHubProvider.d.ts +1 -1
- package/dist/hooks/provider/useHubProvider.d.ts.map +1 -1
- package/dist/hooks/provider/useSpokeProvider.d.ts +16 -2
- package/dist/hooks/provider/useSpokeProvider.d.ts.map +1 -1
- package/dist/hooks/shared/index.d.ts +0 -2
- package/dist/hooks/shared/index.d.ts.map +1 -1
- package/dist/hooks/swap/index.d.ts +2 -0
- package/dist/hooks/swap/index.d.ts.map +1 -1
- package/dist/hooks/swap/useCreateIntentOrder.d.ts +6 -6
- package/dist/hooks/swap/useCreateIntentOrder.d.ts.map +1 -1
- package/dist/hooks/swap/useQuote.d.ts +4 -4
- package/dist/hooks/swap/useQuote.d.ts.map +1 -1
- package/dist/hooks/swap/useStatus.d.ts +3 -3
- package/dist/hooks/swap/useStatus.d.ts.map +1 -1
- package/dist/hooks/swap/useSwapAllowance.d.ts +23 -0
- package/dist/hooks/swap/useSwapAllowance.d.ts.map +1 -0
- package/dist/hooks/swap/useSwapApprove.d.ts +26 -0
- package/dist/hooks/swap/useSwapApprove.d.ts.map +1 -0
- package/dist/index.js +230 -189
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +228 -188
- package/dist/index.mjs.map +1 -1
- package/dist/providers/SodaxProvider.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/contexts/index.ts +2 -1
- package/src/core/index.ts +5 -35
- package/src/hooks/mm/index.ts +3 -1
- package/src/hooks/mm/useBorrow.ts +20 -10
- package/src/hooks/mm/useMMAllowance.ts +55 -0
- package/src/hooks/mm/useMMApprove.ts +67 -0
- package/src/hooks/mm/useRepay.ts +20 -10
- package/src/hooks/mm/useReservesData.ts +37 -0
- package/src/hooks/mm/useSupply.ts +9 -6
- package/src/hooks/mm/useUserReservesData.ts +17 -34
- package/src/hooks/mm/useWithdraw.ts +17 -11
- package/src/hooks/provider/useHubProvider.ts +2 -21
- package/src/hooks/provider/useSpokeProvider.ts +87 -10
- package/src/hooks/shared/index.ts +0 -2
- package/src/hooks/swap/index.ts +2 -0
- package/src/hooks/swap/useCreateIntentOrder.ts +9 -11
- package/src/hooks/swap/useQuote.ts +5 -5
- package/src/hooks/swap/useStatus.ts +3 -3
- package/src/hooks/swap/useSwapAllowance.ts +44 -0
- package/src/hooks/swap/useSwapApprove.ts +68 -0
- package/src/providers/SodaxProvider.tsx +18 -3
- package/dist/hooks/mm/useHubWalletAddress.d.ts +0 -24
- package/dist/hooks/mm/useHubWalletAddress.d.ts.map +0 -1
- package/dist/hooks/shared/useAllowance.d.ts +0 -3
- package/dist/hooks/shared/useAllowance.d.ts.map +0 -1
- package/dist/hooks/shared/useApprove.d.ts +0 -10
- package/dist/hooks/shared/useApprove.d.ts.map +0 -1
- package/src/hooks/mm/useHubWalletAddress.ts +0 -49
- package/src/hooks/shared/useAllowance.ts +0 -31
- package/src/hooks/shared/useApprove.ts +0 -53
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSwapApprove.d.ts","sourceRoot":"","sources":["../../../src/hooks/swap/useSwapApprove.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,UAAU,gBAAgB;IACxB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,gBAAgB,CAwCnH"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
-
var reactQuery = require('@tanstack/react-query');
|
|
5
4
|
var sdk = require('@sodax/sdk');
|
|
6
5
|
var walletSdk = require('@sodax/wallet-sdk');
|
|
6
|
+
var reactQuery = require('@tanstack/react-query');
|
|
7
7
|
var viem = require('viem');
|
|
8
|
-
var types = require('@sodax/types');
|
|
9
8
|
|
|
10
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
10
|
|
|
@@ -20,111 +19,72 @@ var useSodaxContext = () => {
|
|
|
20
19
|
}
|
|
21
20
|
return context;
|
|
22
21
|
};
|
|
23
|
-
|
|
22
|
+
|
|
23
|
+
// src/hooks/provider/useHubProvider.ts
|
|
24
|
+
function useHubProvider() {
|
|
25
|
+
const { hubProvider } = useSodaxContext();
|
|
26
|
+
return hubProvider;
|
|
27
|
+
}
|
|
28
|
+
function useSpokeProvider(spokeChainId, walletProvider) {
|
|
24
29
|
const xChainType = walletSdk.getXChainType(spokeChainId);
|
|
25
|
-
const
|
|
30
|
+
const walletProvider_ = walletSdk.useWalletProvider(spokeChainId);
|
|
31
|
+
const _walletProvider = walletProvider ?? walletProvider_;
|
|
26
32
|
const spokeProvider = React.useMemo(() => {
|
|
27
|
-
if (!
|
|
33
|
+
if (!_walletProvider) return void 0;
|
|
34
|
+
if (!spokeChainId) return void 0;
|
|
28
35
|
if (xChainType === "EVM") {
|
|
29
|
-
return new sdk.EvmSpokeProvider(
|
|
36
|
+
return new sdk.EvmSpokeProvider(
|
|
37
|
+
_walletProvider,
|
|
38
|
+
sdk.spokeChainConfig[spokeChainId]
|
|
39
|
+
);
|
|
30
40
|
}
|
|
31
41
|
if (xChainType === "SUI") {
|
|
32
|
-
return new sdk.SuiSpokeProvider(
|
|
42
|
+
return new sdk.SuiSpokeProvider(
|
|
43
|
+
sdk.spokeChainConfig[spokeChainId],
|
|
44
|
+
_walletProvider
|
|
45
|
+
);
|
|
33
46
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
function useAllowance(token, amount) {
|
|
39
|
-
const { sodax } = useSodaxContext();
|
|
40
|
-
const spokeProvider = useSpokeProvider(token.xChainId);
|
|
41
|
-
return reactQuery.useQuery({
|
|
42
|
-
queryKey: ["allowance", token.address, amount],
|
|
43
|
-
queryFn: async () => {
|
|
44
|
-
if (!spokeProvider) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
const allowance = await sodax.moneyMarket.isAllowanceValid(
|
|
48
|
-
{
|
|
49
|
-
token: token.address,
|
|
50
|
-
amount: viem.parseUnits(amount, token.decimals)
|
|
51
|
-
},
|
|
52
|
-
spokeProvider
|
|
47
|
+
if (xChainType === "ICON") {
|
|
48
|
+
return new sdk.IconSpokeProvider(
|
|
49
|
+
_walletProvider,
|
|
50
|
+
sdk.spokeChainConfig[spokeChainId]
|
|
53
51
|
);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
enabled: !!spokeProvider
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
function useApprove(token) {
|
|
63
|
-
const { sodax } = useSodaxContext();
|
|
64
|
-
const spokeProvider = useSpokeProvider(token.xChainId);
|
|
65
|
-
const queryClient = reactQuery.useQueryClient();
|
|
66
|
-
const {
|
|
67
|
-
mutateAsync: approve,
|
|
68
|
-
isPending,
|
|
69
|
-
error,
|
|
70
|
-
reset: resetError
|
|
71
|
-
} = reactQuery.useMutation({
|
|
72
|
-
mutationFn: async (amount) => {
|
|
73
|
-
if (!spokeProvider) {
|
|
74
|
-
throw new Error("Spoke provider not found");
|
|
75
|
-
}
|
|
76
|
-
const allowance = await sodax.moneyMarket.approve(
|
|
77
|
-
token.address,
|
|
78
|
-
viem.parseUnits(amount, token.decimals),
|
|
79
|
-
spokeProvider.chainConfig.addresses.assetManager,
|
|
80
|
-
spokeProvider
|
|
52
|
+
}
|
|
53
|
+
if (xChainType === "INJECTIVE") {
|
|
54
|
+
return new sdk.InjectiveSpokeProvider(
|
|
55
|
+
sdk.spokeChainConfig[spokeChainId],
|
|
56
|
+
_walletProvider
|
|
81
57
|
);
|
|
82
|
-
if (!allowance.ok) {
|
|
83
|
-
throw new Error("Failed to approve tokens");
|
|
84
|
-
}
|
|
85
|
-
return allowance.ok;
|
|
86
|
-
},
|
|
87
|
-
onSuccess: () => {
|
|
88
|
-
queryClient.invalidateQueries({ queryKey: ["allowance", token.address] });
|
|
89
58
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
resetError
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
function useHubProvider() {
|
|
99
|
-
const { sodax } = useSodaxContext();
|
|
100
|
-
const hubChainId = sodax.config?.hubProviderConfig?.chainConfig.chain.id;
|
|
101
|
-
const hubRpcUrl = sodax.config?.hubProviderConfig?.hubRpcUrl;
|
|
102
|
-
const xChainType = walletSdk.getXChainType(hubChainId);
|
|
103
|
-
const hubProvider = React.useMemo(() => {
|
|
104
|
-
if (xChainType === "EVM" && hubChainId && hubRpcUrl) {
|
|
105
|
-
const hubChainCfg = sdk.getHubChainConfig(hubChainId);
|
|
106
|
-
if (!hubChainCfg) return void 0;
|
|
107
|
-
return new sdk.EvmHubProvider({
|
|
108
|
-
hubRpcUrl,
|
|
109
|
-
chainConfig: hubChainCfg
|
|
59
|
+
if (xChainType === "STELLAR") {
|
|
60
|
+
const stellarConfig = sdk.spokeChainConfig[spokeChainId];
|
|
61
|
+
return new sdk.StellarSpokeProvider(_walletProvider, stellarConfig, {
|
|
62
|
+
horizonRpcUrl: stellarConfig.horizonRpcUrl,
|
|
63
|
+
sorobanRpcUrl: stellarConfig.sorobanRpcUrl
|
|
110
64
|
});
|
|
111
65
|
}
|
|
66
|
+
if (xChainType === "SOLANA") {
|
|
67
|
+
return new sdk.SolanaSpokeProvider(
|
|
68
|
+
_walletProvider,
|
|
69
|
+
sdk.spokeChainConfig[spokeChainId]
|
|
70
|
+
);
|
|
71
|
+
}
|
|
112
72
|
return void 0;
|
|
113
|
-
}, [
|
|
114
|
-
return
|
|
73
|
+
}, [spokeChainId, xChainType, _walletProvider]);
|
|
74
|
+
return spokeProvider;
|
|
115
75
|
}
|
|
116
|
-
function useBorrow(
|
|
76
|
+
function useBorrow(spokeToken, spokeProvider) {
|
|
117
77
|
const { sodax } = useSodaxContext();
|
|
118
|
-
const spokeProvider = useSpokeProvider(spokeChainId);
|
|
119
78
|
return reactQuery.useMutation({
|
|
120
79
|
mutationFn: async (amount) => {
|
|
121
80
|
if (!spokeProvider) {
|
|
122
81
|
throw new Error("spokeProvider is not found");
|
|
123
82
|
}
|
|
124
|
-
const response = await sodax.moneyMarket.
|
|
83
|
+
const response = await sodax.moneyMarket.borrow(
|
|
125
84
|
{
|
|
126
|
-
token:
|
|
127
|
-
amount: viem.parseUnits(amount,
|
|
85
|
+
token: spokeToken.address,
|
|
86
|
+
amount: viem.parseUnits(amount, 18),
|
|
87
|
+
action: "borrow"
|
|
128
88
|
},
|
|
129
89
|
spokeProvider
|
|
130
90
|
);
|
|
@@ -136,18 +96,18 @@ function useBorrow(hubToken, spokeChainId) {
|
|
|
136
96
|
}
|
|
137
97
|
});
|
|
138
98
|
}
|
|
139
|
-
function useRepay(
|
|
99
|
+
function useRepay(spokeToken, spokeProvider) {
|
|
140
100
|
const { sodax } = useSodaxContext();
|
|
141
|
-
const spokeProvider = useSpokeProvider(spokeChainId);
|
|
142
101
|
return reactQuery.useMutation({
|
|
143
102
|
mutationFn: async (amount) => {
|
|
144
103
|
if (!spokeProvider) {
|
|
145
104
|
throw new Error("spokeProvider is not found");
|
|
146
105
|
}
|
|
147
|
-
const response = await sodax.moneyMarket.
|
|
106
|
+
const response = await sodax.moneyMarket.repay(
|
|
148
107
|
{
|
|
149
|
-
token:
|
|
150
|
-
amount: viem.parseUnits(amount,
|
|
108
|
+
token: spokeToken.address,
|
|
109
|
+
amount: viem.parseUnits(amount, spokeToken.decimals),
|
|
110
|
+
action: "repay"
|
|
151
111
|
},
|
|
152
112
|
spokeProvider
|
|
153
113
|
);
|
|
@@ -159,18 +119,18 @@ function useRepay(hubToken, spokeChainId) {
|
|
|
159
119
|
}
|
|
160
120
|
});
|
|
161
121
|
}
|
|
162
|
-
function useSupply(spokeToken) {
|
|
122
|
+
function useSupply(spokeToken, spokeProvider) {
|
|
163
123
|
const { sodax } = useSodaxContext();
|
|
164
|
-
const spokeProvider = useSpokeProvider(spokeToken.xChainId);
|
|
165
124
|
return reactQuery.useMutation({
|
|
166
125
|
mutationFn: async (amount) => {
|
|
167
126
|
if (!spokeProvider) {
|
|
168
127
|
throw new Error("spokeProvider is not found");
|
|
169
128
|
}
|
|
170
|
-
const response = await sodax.moneyMarket.
|
|
129
|
+
const response = await sodax.moneyMarket.supply(
|
|
171
130
|
{
|
|
172
131
|
token: spokeToken.address,
|
|
173
|
-
amount: viem.parseUnits(amount, spokeToken.decimals)
|
|
132
|
+
amount: viem.parseUnits(amount, spokeToken.decimals),
|
|
133
|
+
action: "supply"
|
|
174
134
|
},
|
|
175
135
|
spokeProvider
|
|
176
136
|
);
|
|
@@ -182,18 +142,19 @@ function useSupply(spokeToken) {
|
|
|
182
142
|
}
|
|
183
143
|
});
|
|
184
144
|
}
|
|
185
|
-
function useWithdraw(
|
|
145
|
+
function useWithdraw(spokeToken, spokeProvider) {
|
|
186
146
|
const { sodax } = useSodaxContext();
|
|
187
|
-
const spokeProvider = useSpokeProvider(spokeChainId);
|
|
188
147
|
return reactQuery.useMutation({
|
|
189
148
|
mutationFn: async (amount) => {
|
|
190
149
|
if (!spokeProvider) {
|
|
191
150
|
throw new Error("spokeProvider is not found");
|
|
192
151
|
}
|
|
193
|
-
const response = await sodax.moneyMarket.
|
|
152
|
+
const response = await sodax.moneyMarket.withdraw(
|
|
194
153
|
{
|
|
195
|
-
token:
|
|
196
|
-
|
|
154
|
+
token: spokeToken.address,
|
|
155
|
+
// vault token on hub chain decimals is 18
|
|
156
|
+
amount: viem.parseUnits(amount, 18),
|
|
157
|
+
action: "withdraw"
|
|
197
158
|
},
|
|
198
159
|
spokeProvider
|
|
199
160
|
);
|
|
@@ -205,100 +166,107 @@ function useWithdraw(hubToken, spokeChainId) {
|
|
|
205
166
|
}
|
|
206
167
|
});
|
|
207
168
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
xChainId,
|
|
215
|
-
symbol: token.symbol,
|
|
216
|
-
name: token.name,
|
|
217
|
-
decimals: token.decimal,
|
|
218
|
-
address: tokenAddress
|
|
219
|
-
});
|
|
220
|
-
allXTokens.push({
|
|
221
|
-
// @ts-ignore
|
|
222
|
-
xChainId: types.CHAIN_IDS.includes(xChainId) ? "sonic" : "sonic-blaze",
|
|
223
|
-
symbol: token.symbol,
|
|
224
|
-
name: token.name,
|
|
225
|
-
decimals: token.decimal,
|
|
226
|
-
address: token.vault
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
var getSpokeTokenAddressByVault = (spokeChainId, vault) => {
|
|
231
|
-
const tokens = sdk.hubAssets[spokeChainId];
|
|
232
|
-
const token = Object.keys(tokens).find((tokenAddress) => tokens[tokenAddress].vault === vault);
|
|
233
|
-
if (!token) {
|
|
234
|
-
throw new Error("Token not found");
|
|
235
|
-
}
|
|
236
|
-
return token;
|
|
237
|
-
};
|
|
238
|
-
function useHubWalletAddress(spokeChainId, address, hubProvider) {
|
|
239
|
-
return reactQuery.useQuery({
|
|
240
|
-
queryKey: ["hubWallet", spokeChainId, address],
|
|
169
|
+
function useUserReservesData(spokeChainId, address) {
|
|
170
|
+
const { sodax } = useSodaxContext();
|
|
171
|
+
const hubChainId = sodax.config?.hubProviderConfig?.chainConfig.chain.id ?? "sonic";
|
|
172
|
+
const hubProvider = useHubProvider();
|
|
173
|
+
const { data: userReserves } = reactQuery.useQuery({
|
|
174
|
+
queryKey: ["userReserves", spokeChainId, address],
|
|
241
175
|
queryFn: async () => {
|
|
242
|
-
if (!address)
|
|
243
|
-
|
|
244
|
-
const hubWalletAddress = await sdk.EvmWalletAbstraction.getUserHubWalletAddress(
|
|
245
|
-
spokeChainId,
|
|
246
|
-
address,
|
|
247
|
-
hubProvider
|
|
248
|
-
);
|
|
249
|
-
return hubWalletAddress;
|
|
250
|
-
} catch (error) {
|
|
251
|
-
console.log("error", error);
|
|
252
|
-
return null;
|
|
176
|
+
if (!hubProvider || !address) {
|
|
177
|
+
return;
|
|
253
178
|
}
|
|
179
|
+
const addressBytes = sdk.encodeAddress(spokeChainId, address);
|
|
180
|
+
const hubWalletAddress = await sdk.EvmWalletAbstraction.getUserHubWalletAddress(
|
|
181
|
+
spokeChainId,
|
|
182
|
+
addressBytes,
|
|
183
|
+
hubProvider
|
|
184
|
+
);
|
|
185
|
+
const moneyMarketConfig = sdk.getMoneyMarketConfig(hubChainId);
|
|
186
|
+
const [res] = await sodax.moneyMarket.getUserReservesData(
|
|
187
|
+
hubWalletAddress,
|
|
188
|
+
moneyMarketConfig.uiPoolDataProvider,
|
|
189
|
+
moneyMarketConfig.poolAddressesProvider
|
|
190
|
+
);
|
|
191
|
+
return res;
|
|
254
192
|
},
|
|
255
|
-
enabled: !!
|
|
193
|
+
enabled: !!spokeChainId && !!hubProvider && !!address,
|
|
194
|
+
refetchInterval: 5e3
|
|
256
195
|
});
|
|
196
|
+
return userReserves;
|
|
257
197
|
}
|
|
258
|
-
|
|
259
|
-
// src/hooks/mm/useUserReservesData.ts
|
|
260
|
-
function useUserReservesData(spokeChainId) {
|
|
198
|
+
function useReservesData() {
|
|
261
199
|
const { sodax } = useSodaxContext();
|
|
262
200
|
const hubChainId = sodax.config?.hubProviderConfig?.chainConfig.chain.id ?? "sonic";
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
const { address } = walletSdk.useXAccount(spokeChainId);
|
|
266
|
-
const { data: hubWalletAddress } = useHubWalletAddress(
|
|
267
|
-
spokeChainId,
|
|
268
|
-
address,
|
|
269
|
-
hubProvider
|
|
270
|
-
);
|
|
271
|
-
const { data: userReserves } = reactQuery.useQuery({
|
|
272
|
-
queryKey: ["userReserves", hubWalletAddress],
|
|
201
|
+
return reactQuery.useQuery({
|
|
202
|
+
queryKey: ["reservesData"],
|
|
273
203
|
queryFn: async () => {
|
|
274
|
-
|
|
275
|
-
|
|
204
|
+
const moneyMarketConfig = sdk.getMoneyMarketConfig(hubChainId);
|
|
205
|
+
return await sodax.moneyMarket.getReservesData(
|
|
206
|
+
moneyMarketConfig.uiPoolDataProvider,
|
|
207
|
+
moneyMarketConfig.poolAddressesProvider
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
function useMMAllowance(token, amount, action, spokeProvider) {
|
|
213
|
+
const { sodax } = useSodaxContext();
|
|
214
|
+
return reactQuery.useQuery({
|
|
215
|
+
queryKey: ["allowance", token.address, amount, action],
|
|
216
|
+
queryFn: async () => {
|
|
217
|
+
if (!spokeProvider) throw new Error("Spoke provider is required");
|
|
218
|
+
const allowance = await sodax.moneyMarket.isAllowanceValid(
|
|
219
|
+
{
|
|
220
|
+
token: token.address,
|
|
221
|
+
amount: viem.parseUnits(amount, token.decimals),
|
|
222
|
+
action
|
|
223
|
+
},
|
|
224
|
+
spokeProvider
|
|
225
|
+
);
|
|
226
|
+
if (allowance.ok) {
|
|
227
|
+
return allowance.value;
|
|
276
228
|
}
|
|
277
|
-
|
|
278
|
-
|
|
229
|
+
return false;
|
|
230
|
+
},
|
|
231
|
+
enabled: !!spokeProvider
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function useMMApprove(token, spokeProvider) {
|
|
235
|
+
const { sodax } = useSodaxContext();
|
|
236
|
+
const queryClient = reactQuery.useQueryClient();
|
|
237
|
+
const {
|
|
238
|
+
mutateAsync: approve,
|
|
239
|
+
isPending,
|
|
240
|
+
error,
|
|
241
|
+
reset: resetError
|
|
242
|
+
} = reactQuery.useMutation({
|
|
243
|
+
mutationFn: async ({ amount, action }) => {
|
|
244
|
+
if (!spokeProvider) {
|
|
245
|
+
throw new Error("Spoke provider not found");
|
|
279
246
|
}
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
token: allXTokens.find((t) => t.address === r.underlyingAsset)
|
|
291
|
-
};
|
|
292
|
-
});
|
|
293
|
-
} catch (error) {
|
|
294
|
-
console.log("error", error);
|
|
295
|
-
return;
|
|
247
|
+
const allowance = await sodax.moneyMarket.approve(
|
|
248
|
+
{
|
|
249
|
+
token: token.address,
|
|
250
|
+
amount: viem.parseUnits(amount, token.decimals),
|
|
251
|
+
action
|
|
252
|
+
},
|
|
253
|
+
spokeProvider
|
|
254
|
+
);
|
|
255
|
+
if (!allowance.ok) {
|
|
256
|
+
throw new Error("Failed to approve tokens");
|
|
296
257
|
}
|
|
258
|
+
return allowance.ok;
|
|
297
259
|
},
|
|
298
|
-
|
|
299
|
-
|
|
260
|
+
onSuccess: () => {
|
|
261
|
+
queryClient.invalidateQueries({ queryKey: ["allowance", token.address] });
|
|
262
|
+
}
|
|
300
263
|
});
|
|
301
|
-
return
|
|
264
|
+
return {
|
|
265
|
+
approve,
|
|
266
|
+
isLoading: isPending,
|
|
267
|
+
error,
|
|
268
|
+
resetError
|
|
269
|
+
};
|
|
302
270
|
}
|
|
303
271
|
var useQuote = (payload) => {
|
|
304
272
|
const { sodax } = useSodaxContext();
|
|
@@ -314,9 +282,8 @@ var useQuote = (payload) => {
|
|
|
314
282
|
refetchInterval: 3e3
|
|
315
283
|
});
|
|
316
284
|
};
|
|
317
|
-
function useCreateIntentOrder(
|
|
285
|
+
function useCreateIntentOrder(spokeProvider) {
|
|
318
286
|
const { sodax } = useSodaxContext();
|
|
319
|
-
const spokeProvider = useSpokeProvider(chainId);
|
|
320
287
|
return reactQuery.useMutation({
|
|
321
288
|
mutationFn: async (params) => {
|
|
322
289
|
if (!spokeProvider) {
|
|
@@ -337,26 +304,100 @@ var useStatus = (intent_tx_hash) => {
|
|
|
337
304
|
// 3s
|
|
338
305
|
});
|
|
339
306
|
};
|
|
307
|
+
function useSwapAllowance(params, spokeProvider) {
|
|
308
|
+
const { sodax } = useSodaxContext();
|
|
309
|
+
return reactQuery.useQuery({
|
|
310
|
+
queryKey: ["allowance", params],
|
|
311
|
+
queryFn: async () => {
|
|
312
|
+
if (!spokeProvider || !params) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
const allowance = await sodax.solver.isAllowanceValid(params, spokeProvider);
|
|
316
|
+
if (allowance.ok) {
|
|
317
|
+
return allowance.value;
|
|
318
|
+
}
|
|
319
|
+
return false;
|
|
320
|
+
},
|
|
321
|
+
enabled: !!spokeProvider && !!params
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
function useSwapApprove(token, spokeProvider) {
|
|
325
|
+
const { sodax } = useSodaxContext();
|
|
326
|
+
const queryClient = reactQuery.useQueryClient();
|
|
327
|
+
const {
|
|
328
|
+
mutateAsync: approve,
|
|
329
|
+
isPending,
|
|
330
|
+
error,
|
|
331
|
+
reset: resetError
|
|
332
|
+
} = reactQuery.useMutation({
|
|
333
|
+
mutationFn: async ({ amount }) => {
|
|
334
|
+
if (!spokeProvider) {
|
|
335
|
+
throw new Error("Spoke provider not found");
|
|
336
|
+
}
|
|
337
|
+
if (!token) {
|
|
338
|
+
throw new Error("Token not found");
|
|
339
|
+
}
|
|
340
|
+
const allowance = await sodax.solver.approve(
|
|
341
|
+
token.address,
|
|
342
|
+
viem.parseUnits(amount, token.decimals),
|
|
343
|
+
spokeProvider
|
|
344
|
+
);
|
|
345
|
+
if (!allowance.ok) {
|
|
346
|
+
throw new Error("Failed to approve tokens");
|
|
347
|
+
}
|
|
348
|
+
return allowance.ok;
|
|
349
|
+
},
|
|
350
|
+
onSuccess: () => {
|
|
351
|
+
queryClient.invalidateQueries({ queryKey: ["allowance", token?.address] });
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
return {
|
|
355
|
+
approve,
|
|
356
|
+
isLoading: isPending,
|
|
357
|
+
error,
|
|
358
|
+
resetError
|
|
359
|
+
};
|
|
360
|
+
}
|
|
340
361
|
var SodaxProvider = ({ children, testnet = false, config }) => {
|
|
341
362
|
const sodax = new sdk.Sodax(config);
|
|
342
|
-
|
|
363
|
+
const hubChainId = config?.hubProviderConfig?.chainConfig.chain.id;
|
|
364
|
+
const hubRpcUrl = config?.hubProviderConfig?.hubRpcUrl;
|
|
365
|
+
const hubProvider = React.useMemo(() => {
|
|
366
|
+
if (hubChainId && hubRpcUrl) {
|
|
367
|
+
const hubChainCfg = sdk.getHubChainConfig(hubChainId);
|
|
368
|
+
return new sdk.EvmHubProvider({
|
|
369
|
+
hubRpcUrl,
|
|
370
|
+
chainConfig: hubChainCfg
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
return void 0;
|
|
374
|
+
}, [hubChainId, hubRpcUrl]);
|
|
375
|
+
return /* @__PURE__ */ React__default.default.createElement(SodaxContext.Provider, { value: { sodax, testnet, hubProvider } }, children);
|
|
376
|
+
};
|
|
377
|
+
var getSpokeTokenAddressByVault = (spokeChainId, vault) => {
|
|
378
|
+
const tokens = sdk.hubAssets[spokeChainId];
|
|
379
|
+
const address = Object.keys(tokens).find(
|
|
380
|
+
(tokenAddress) => tokens[tokenAddress].vault.toLowerCase() === vault.toLowerCase()
|
|
381
|
+
);
|
|
382
|
+
return address;
|
|
343
383
|
};
|
|
344
384
|
|
|
345
385
|
exports.SodaxProvider = SodaxProvider;
|
|
346
|
-
exports.allXTokens = allXTokens;
|
|
347
386
|
exports.getSpokeTokenAddressByVault = getSpokeTokenAddressByVault;
|
|
348
|
-
exports.useAllowance = useAllowance;
|
|
349
|
-
exports.useApprove = useApprove;
|
|
350
387
|
exports.useBorrow = useBorrow;
|
|
351
388
|
exports.useCreateIntentOrder = useCreateIntentOrder;
|
|
352
389
|
exports.useHubProvider = useHubProvider;
|
|
353
|
-
exports.
|
|
390
|
+
exports.useMMAllowance = useMMAllowance;
|
|
391
|
+
exports.useMMApprove = useMMApprove;
|
|
354
392
|
exports.useQuote = useQuote;
|
|
355
393
|
exports.useRepay = useRepay;
|
|
394
|
+
exports.useReservesData = useReservesData;
|
|
356
395
|
exports.useSodaxContext = useSodaxContext;
|
|
357
396
|
exports.useSpokeProvider = useSpokeProvider;
|
|
358
397
|
exports.useStatus = useStatus;
|
|
359
398
|
exports.useSupply = useSupply;
|
|
399
|
+
exports.useSwapAllowance = useSwapAllowance;
|
|
400
|
+
exports.useSwapApprove = useSwapApprove;
|
|
360
401
|
exports.useUserReservesData = useUserReservesData;
|
|
361
402
|
exports.useWithdraw = useWithdraw;
|
|
362
403
|
//# sourceMappingURL=index.js.map
|