@0xsquid/react-hooks 3.0.18-beta.0 → 3.0.19
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/core/queries/queries-keys.d.ts +1 -1
- package/dist/core/queries/queries-keys.js +2 -1
- package/dist/core/queries/queries-keys.js.map +1 -1
- package/dist/hooks/transaction/useAllowance.d.ts +160 -0
- package/dist/hooks/transaction/useAllowance.js +46 -0
- package/dist/hooks/transaction/useAllowance.js.map +1 -0
- package/dist/hooks/transaction/useApproval.d.ts +1 -0
- package/dist/hooks/transaction/useApproval.js +20 -15
- package/dist/hooks/transaction/useApproval.js.map +1 -1
- package/package.json +1 -1
|
@@ -49,7 +49,7 @@ export declare const keys: () => {
|
|
|
49
49
|
transactionStatus: (currentTransaction?: Pick<SimplifiedTransactionHistory, "transactionId" | "status" | "fromChain" | "toChain" | "fromAddress">) => (string | undefined)[];
|
|
50
50
|
allTransactionsStatus: (transactions?: Pick<SimplifiedTransactionHistory, "transactionId" | "status" | "fromChain" | "toChain">[]) => (string | undefined)[];
|
|
51
51
|
transactionStatusRefetcher: (currentTransaction?: TransactionParams) => (string | undefined)[];
|
|
52
|
-
routeApproved: (routeData: RouteResponse["route"] | undefined) => (string | undefined)[];
|
|
52
|
+
routeApproved: (routeData: RouteResponse["route"] | undefined, allowanceInWei: bigint | undefined) => (string | undefined)[];
|
|
53
53
|
ensData: (address?: string) => (string | undefined)[];
|
|
54
54
|
ensSearch: (query?: string) => (string | undefined)[];
|
|
55
55
|
osmosisAddress: (isConnected?: boolean, cosmosAddress?: string) => (string | boolean | undefined)[];
|
|
@@ -130,13 +130,14 @@ export const keys = () => ({
|
|
|
130
130
|
// ============
|
|
131
131
|
// Approval
|
|
132
132
|
// ============
|
|
133
|
-
routeApproved: (routeData) => [
|
|
133
|
+
routeApproved: (routeData, allowanceInWei) => [
|
|
134
134
|
...keys().transactions(),
|
|
135
135
|
QueryKeys.RouteApproved,
|
|
136
136
|
routeData?.params.fromAddress,
|
|
137
137
|
routeData?.params.fromChain,
|
|
138
138
|
routeData?.params.fromToken,
|
|
139
139
|
routeData?.params.fromAmount,
|
|
140
|
+
allowanceInWei?.toString(),
|
|
140
141
|
],
|
|
141
142
|
// ============
|
|
142
143
|
// ENS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries-keys.js","sourceRoot":"","sources":["../../../src/core/queries/queries-keys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"queries-keys.js","sourceRoot":"","sources":["../../../src/core/queries/queries-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
interface ERC20AllowanceParams {
|
|
2
|
+
tokenAddress?: string;
|
|
3
|
+
ownerAddress?: string;
|
|
4
|
+
spenderAddress?: string;
|
|
5
|
+
amount?: bigint;
|
|
6
|
+
}
|
|
7
|
+
export declare const useERC20Allowance: ({ tokenAddress, ownerAddress, spenderAddress, amount, }: ERC20AllowanceParams) => {
|
|
8
|
+
hasAllowance: boolean;
|
|
9
|
+
error: Error;
|
|
10
|
+
isNativeToken?: undefined;
|
|
11
|
+
query?: undefined;
|
|
12
|
+
allowanceInWei?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
hasAllowance: boolean;
|
|
15
|
+
isNativeToken: boolean;
|
|
16
|
+
error?: undefined;
|
|
17
|
+
query?: undefined;
|
|
18
|
+
allowanceInWei?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
query: import("wagmi").UseReadContractReturnType<readonly [{
|
|
21
|
+
readonly type: "event";
|
|
22
|
+
readonly name: "Approval";
|
|
23
|
+
readonly inputs: readonly [{
|
|
24
|
+
readonly indexed: true;
|
|
25
|
+
readonly name: "owner";
|
|
26
|
+
readonly type: "address";
|
|
27
|
+
}, {
|
|
28
|
+
readonly indexed: true;
|
|
29
|
+
readonly name: "spender";
|
|
30
|
+
readonly type: "address";
|
|
31
|
+
}, {
|
|
32
|
+
readonly indexed: false;
|
|
33
|
+
readonly name: "value";
|
|
34
|
+
readonly type: "uint256";
|
|
35
|
+
}];
|
|
36
|
+
}, {
|
|
37
|
+
readonly type: "event";
|
|
38
|
+
readonly name: "Transfer";
|
|
39
|
+
readonly inputs: readonly [{
|
|
40
|
+
readonly indexed: true;
|
|
41
|
+
readonly name: "from";
|
|
42
|
+
readonly type: "address";
|
|
43
|
+
}, {
|
|
44
|
+
readonly indexed: true;
|
|
45
|
+
readonly name: "to";
|
|
46
|
+
readonly type: "address";
|
|
47
|
+
}, {
|
|
48
|
+
readonly indexed: false;
|
|
49
|
+
readonly name: "value";
|
|
50
|
+
readonly type: "uint256";
|
|
51
|
+
}];
|
|
52
|
+
}, {
|
|
53
|
+
readonly type: "function";
|
|
54
|
+
readonly name: "allowance";
|
|
55
|
+
readonly stateMutability: "view";
|
|
56
|
+
readonly inputs: readonly [{
|
|
57
|
+
readonly name: "owner";
|
|
58
|
+
readonly type: "address";
|
|
59
|
+
}, {
|
|
60
|
+
readonly name: "spender";
|
|
61
|
+
readonly type: "address";
|
|
62
|
+
}];
|
|
63
|
+
readonly outputs: readonly [{
|
|
64
|
+
readonly type: "uint256";
|
|
65
|
+
}];
|
|
66
|
+
}, {
|
|
67
|
+
readonly type: "function";
|
|
68
|
+
readonly name: "approve";
|
|
69
|
+
readonly stateMutability: "nonpayable";
|
|
70
|
+
readonly inputs: readonly [{
|
|
71
|
+
readonly name: "spender";
|
|
72
|
+
readonly type: "address";
|
|
73
|
+
}, {
|
|
74
|
+
readonly name: "amount";
|
|
75
|
+
readonly type: "uint256";
|
|
76
|
+
}];
|
|
77
|
+
readonly outputs: readonly [{
|
|
78
|
+
readonly type: "bool";
|
|
79
|
+
}];
|
|
80
|
+
}, {
|
|
81
|
+
readonly type: "function";
|
|
82
|
+
readonly name: "balanceOf";
|
|
83
|
+
readonly stateMutability: "view";
|
|
84
|
+
readonly inputs: readonly [{
|
|
85
|
+
readonly name: "account";
|
|
86
|
+
readonly type: "address";
|
|
87
|
+
}];
|
|
88
|
+
readonly outputs: readonly [{
|
|
89
|
+
readonly type: "uint256";
|
|
90
|
+
}];
|
|
91
|
+
}, {
|
|
92
|
+
readonly type: "function";
|
|
93
|
+
readonly name: "decimals";
|
|
94
|
+
readonly stateMutability: "view";
|
|
95
|
+
readonly inputs: readonly [];
|
|
96
|
+
readonly outputs: readonly [{
|
|
97
|
+
readonly type: "uint8";
|
|
98
|
+
}];
|
|
99
|
+
}, {
|
|
100
|
+
readonly type: "function";
|
|
101
|
+
readonly name: "name";
|
|
102
|
+
readonly stateMutability: "view";
|
|
103
|
+
readonly inputs: readonly [];
|
|
104
|
+
readonly outputs: readonly [{
|
|
105
|
+
readonly type: "string";
|
|
106
|
+
}];
|
|
107
|
+
}, {
|
|
108
|
+
readonly type: "function";
|
|
109
|
+
readonly name: "symbol";
|
|
110
|
+
readonly stateMutability: "view";
|
|
111
|
+
readonly inputs: readonly [];
|
|
112
|
+
readonly outputs: readonly [{
|
|
113
|
+
readonly type: "string";
|
|
114
|
+
}];
|
|
115
|
+
}, {
|
|
116
|
+
readonly type: "function";
|
|
117
|
+
readonly name: "totalSupply";
|
|
118
|
+
readonly stateMutability: "view";
|
|
119
|
+
readonly inputs: readonly [];
|
|
120
|
+
readonly outputs: readonly [{
|
|
121
|
+
readonly type: "uint256";
|
|
122
|
+
}];
|
|
123
|
+
}, {
|
|
124
|
+
readonly type: "function";
|
|
125
|
+
readonly name: "transfer";
|
|
126
|
+
readonly stateMutability: "nonpayable";
|
|
127
|
+
readonly inputs: readonly [{
|
|
128
|
+
readonly name: "recipient";
|
|
129
|
+
readonly type: "address";
|
|
130
|
+
}, {
|
|
131
|
+
readonly name: "amount";
|
|
132
|
+
readonly type: "uint256";
|
|
133
|
+
}];
|
|
134
|
+
readonly outputs: readonly [{
|
|
135
|
+
readonly type: "bool";
|
|
136
|
+
}];
|
|
137
|
+
}, {
|
|
138
|
+
readonly type: "function";
|
|
139
|
+
readonly name: "transferFrom";
|
|
140
|
+
readonly stateMutability: "nonpayable";
|
|
141
|
+
readonly inputs: readonly [{
|
|
142
|
+
readonly name: "sender";
|
|
143
|
+
readonly type: "address";
|
|
144
|
+
}, {
|
|
145
|
+
readonly name: "recipient";
|
|
146
|
+
readonly type: "address";
|
|
147
|
+
}, {
|
|
148
|
+
readonly name: "amount";
|
|
149
|
+
readonly type: "uint256";
|
|
150
|
+
}];
|
|
151
|
+
readonly outputs: readonly [{
|
|
152
|
+
readonly type: "bool";
|
|
153
|
+
}];
|
|
154
|
+
}], "allowance", readonly [`0x${string}`, `0x${string}`], bigint>;
|
|
155
|
+
hasAllowance: boolean;
|
|
156
|
+
allowanceInWei: bigint;
|
|
157
|
+
error?: undefined;
|
|
158
|
+
isNativeToken?: undefined;
|
|
159
|
+
};
|
|
160
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { erc20Abi, isAddress } from "viem";
|
|
2
|
+
import { useReadContract } from "wagmi";
|
|
3
|
+
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
4
|
+
const parseAddress = (address) => {
|
|
5
|
+
if (!address || !isAddress(address)) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
return address;
|
|
9
|
+
};
|
|
10
|
+
export const useERC20Allowance = ({ tokenAddress, ownerAddress, spenderAddress, amount = BigInt(0), }) => {
|
|
11
|
+
const parsedTokenAddress = parseAddress(tokenAddress);
|
|
12
|
+
const parsedOwnerAddress = parseAddress(ownerAddress);
|
|
13
|
+
const parsedSpenderAddress = parseAddress(spenderAddress);
|
|
14
|
+
const isNativeToken = parsedTokenAddress?.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
|
|
15
|
+
const result = useReadContract({
|
|
16
|
+
abi: erc20Abi,
|
|
17
|
+
address: parsedTokenAddress ?? undefined,
|
|
18
|
+
functionName: "allowance",
|
|
19
|
+
args: parsedOwnerAddress && parsedSpenderAddress
|
|
20
|
+
? [parsedOwnerAddress, parsedSpenderAddress]
|
|
21
|
+
: undefined,
|
|
22
|
+
query: {
|
|
23
|
+
enabled: Boolean(parsedTokenAddress &&
|
|
24
|
+
parsedOwnerAddress &&
|
|
25
|
+
parsedSpenderAddress &&
|
|
26
|
+
!isNativeToken),
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (!parsedTokenAddress || !parsedOwnerAddress || !parsedSpenderAddress) {
|
|
30
|
+
return {
|
|
31
|
+
hasAllowance: false,
|
|
32
|
+
error: new Error("Invalid or missing address"),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (isNativeToken) {
|
|
36
|
+
return { hasAllowance: true, isNativeToken: true };
|
|
37
|
+
}
|
|
38
|
+
const allowanceInWei = result.data ?? BigInt(0);
|
|
39
|
+
const hasAllowance = allowanceInWei >= amount;
|
|
40
|
+
return {
|
|
41
|
+
query: result,
|
|
42
|
+
hasAllowance,
|
|
43
|
+
allowanceInWei,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=useAllowance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAllowance.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useAllowance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,YAAY,GAAG,CAAC,OAA2B,EAAkB,EAAE;IACnE,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QACnC,OAAO,IAAI,CAAC;KACb;IACD,OAAO,OAAkB,CAAC;AAC5B,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GACG,EAAE,EAAE;IACzB,MAAM,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,aAAa,GACjB,kBAAkB,EAAE,WAAW,EAAE,KAAK,qBAAqB,CAAC,WAAW,EAAE,CAAC;IAE5E,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,GAAG,EAAE,QAAQ;QACb,OAAO,EAAE,kBAAkB,IAAI,SAAS;QACxC,YAAY,EAAE,WAAW;QACzB,IAAI,EACF,kBAAkB,IAAI,oBAAoB;YACxC,CAAC,CAAC,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;YAC5C,CAAC,CAAC,SAAS;QACf,KAAK,EAAE;YACL,OAAO,EAAE,OAAO,CACd,kBAAkB;gBAChB,kBAAkB;gBAClB,oBAAoB;gBACpB,CAAC,aAAa,CACjB;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,EAAE;QACvE,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,IAAI,KAAK,CAAC,4BAA4B,CAAC;SAC/C,CAAC;KACH;IAED,IAAI,aAAa,EAAE;QACjB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACpD;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,cAAc,IAAI,MAAM,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE,MAAM;QACb,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,4 +4,5 @@ export declare const useApproval: ({ squidRoute, }: {
|
|
|
4
4
|
}) => {
|
|
5
5
|
routeApproved: import("@tanstack/react-query").UseQueryResult<boolean, unknown>;
|
|
6
6
|
approveRoute: import("@tanstack/react-query").UseMutationResult<boolean | undefined, unknown, void, unknown>;
|
|
7
|
+
allowanceInWei: bigint | undefined;
|
|
7
8
|
};
|
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
2
2
|
import { usePublicClient, useWalletClient } from "wagmi";
|
|
3
3
|
import { getPrefixKey, keys, QueryKeys } from "../../core/queries/queries-keys";
|
|
4
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
4
5
|
import { nativeEvmTokenAddress } from "../../core/constants";
|
|
6
|
+
import { useSquidChains } from "../chains/useSquidChains";
|
|
5
7
|
import { useSquidStore } from "../store/useSquidStore";
|
|
6
8
|
import { useSwap } from "../swap/useSwap";
|
|
7
9
|
import { useMultiChainWallet } from "../wallet/useMultiChainWallet";
|
|
8
10
|
import { useSigner } from "../wallet/useSigner";
|
|
11
|
+
import { useERC20Allowance } from "./useAllowance";
|
|
9
12
|
export const useApproval = ({ squidRoute, }) => {
|
|
10
13
|
const { data: walletClient } = useWalletClient();
|
|
11
14
|
const publicClient = usePublicClient();
|
|
12
15
|
const queryClient = useQueryClient();
|
|
13
16
|
const squid = useSquidStore((state) => state.squid);
|
|
14
17
|
const { evmSigner } = useSigner();
|
|
18
|
+
const { getChainType } = useSquidChains();
|
|
15
19
|
const { fromChain, fromToken } = useSwap();
|
|
16
20
|
const { connectedAddress: { address: sourceUserAddress }, } = useMultiChainWallet(fromChain);
|
|
21
|
+
const { hasAllowance, query: allowanceQuery, allowanceInWei, } = useERC20Allowance({
|
|
22
|
+
tokenAddress: fromToken?.address,
|
|
23
|
+
ownerAddress: sourceUserAddress,
|
|
24
|
+
spenderAddress: fromChain?.squidContracts.squidRouter,
|
|
25
|
+
amount: BigInt(squidRoute?.params.fromAmount ?? "0"),
|
|
26
|
+
});
|
|
17
27
|
/**
|
|
18
28
|
* Checking if spending tokens is allowed for this source address
|
|
19
29
|
* On Success: storing the transaction
|
|
20
30
|
* On Error: Showing the error message if any
|
|
21
31
|
* @returns {boolean} approved
|
|
22
32
|
*/
|
|
23
|
-
const routeApproved = useQuery(keys().routeApproved(squidRoute), async () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const { isApproved } = await squid.isRouteApproved({
|
|
29
|
-
route: squidRoute,
|
|
30
|
-
sender: sourceUserAddress,
|
|
31
|
-
});
|
|
32
|
-
return isApproved;
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
return false;
|
|
33
|
+
const routeApproved = useQuery(keys().routeApproved(squidRoute, allowanceInWei), async () => {
|
|
34
|
+
// There's no approval needed for cosmos chains
|
|
35
|
+
// Tokens can be spent without approval
|
|
36
|
+
if (getChainType(squidRoute?.params.fromChain) === ChainType.COSMOS) {
|
|
37
|
+
return true;
|
|
36
38
|
}
|
|
39
|
+
return hasAllowance;
|
|
37
40
|
}, {
|
|
38
|
-
enabled: !!squidRoute && !!sourceUserAddress,
|
|
41
|
+
enabled: !!squidRoute && !!sourceUserAddress && allowanceQuery?.isSuccess,
|
|
39
42
|
});
|
|
40
43
|
// USDT has a very specific way of handling approvals
|
|
41
44
|
// ```
|
|
@@ -128,13 +131,15 @@ export const useApproval = ({ squidRoute, }) => {
|
|
|
128
131
|
return false;
|
|
129
132
|
}
|
|
130
133
|
}, {
|
|
131
|
-
onSuccess: () => {
|
|
134
|
+
onSuccess: async () => {
|
|
135
|
+
await allowanceQuery?.refetch();
|
|
132
136
|
queryClient.invalidateQueries(getPrefixKey(QueryKeys.RouteApproved));
|
|
133
137
|
},
|
|
134
138
|
});
|
|
135
139
|
return {
|
|
136
140
|
routeApproved,
|
|
137
141
|
approveRoute,
|
|
142
|
+
allowanceInWei,
|
|
138
143
|
};
|
|
139
144
|
};
|
|
140
145
|
//# sourceMappingURL=useApproval.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"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"}
|