@vetro-protocol/gateway 1.3.0 → 1.3.1

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.
Files changed (102) hide show
  1. package/_esm/actions/index.js +49 -21
  2. package/_esm/actions/index.js.map +7 -1
  3. package/_esm/chunk-ZE4YZMXK.js +1326 -0
  4. package/_esm/chunk-ZE4YZMXK.js.map +7 -0
  5. package/_esm/index.js +57 -31
  6. package/_esm/index.js.map +7 -1
  7. package/_types/actions/index.d.ts +18 -18
  8. package/_types/actions/public/getGateway.d.ts.map +1 -1
  9. package/_types/actions/public/getMaxMint.d.ts.map +1 -1
  10. package/_types/actions/public/getMaxWithdraw.d.ts.map +1 -1
  11. package/_types/actions/public/getMintFee.d.ts.map +1 -1
  12. package/_types/actions/public/getPeggedToken.d.ts.map +1 -1
  13. package/_types/actions/public/getRedeemFee.d.ts.map +1 -1
  14. package/_types/actions/public/getRedeemRequest.d.ts.map +1 -1
  15. package/_types/actions/public/getTreasury.d.ts.map +1 -1
  16. package/_types/actions/public/getWithdrawalDelay.d.ts.map +1 -1
  17. package/_types/actions/public/getWithdrawalDelayEnabled.d.ts.map +1 -1
  18. package/_types/actions/public/index.d.ts +14 -14
  19. package/_types/actions/public/isInstantRedeemWhitelisted.d.ts.map +1 -1
  20. package/_types/actions/public/previewDeposit.d.ts.map +1 -1
  21. package/_types/actions/public/previewRedeem.d.ts.map +1 -1
  22. package/_types/actions/public/previewWithdraw.d.ts.map +1 -1
  23. package/_types/actions/wallet/cancelRedeemRequest.d.ts +1 -1
  24. package/_types/actions/wallet/deposit.d.ts +1 -1
  25. package/_types/actions/wallet/redeem.d.ts +1 -1
  26. package/_types/actions/wallet/requestRedeem.d.ts +1 -1
  27. package/_types/gatewayAddresses.d.ts.map +1 -1
  28. package/_types/index.d.ts +12 -12
  29. package/package.json +7 -5
  30. package/src/actions/index.ts +18 -18
  31. package/src/actions/public/getGateway.ts +2 -2
  32. package/src/actions/public/getMaxMint.ts +2 -2
  33. package/src/actions/public/getMaxWithdraw.ts +2 -2
  34. package/src/actions/public/getMintFee.ts +2 -2
  35. package/src/actions/public/getPeggedToken.ts +2 -2
  36. package/src/actions/public/getRedeemFee.ts +2 -2
  37. package/src/actions/public/getRedeemRequest.ts +2 -2
  38. package/src/actions/public/getTreasury.ts +2 -2
  39. package/src/actions/public/getWithdrawalDelay.ts +2 -2
  40. package/src/actions/public/getWithdrawalDelayEnabled.ts +2 -2
  41. package/src/actions/public/index.ts +14 -14
  42. package/src/actions/public/isInstantRedeemWhitelisted.ts +2 -2
  43. package/src/actions/public/previewDeposit.ts +2 -2
  44. package/src/actions/public/previewRedeem.ts +2 -2
  45. package/src/actions/public/previewWithdraw.ts +2 -2
  46. package/src/actions/wallet/cancelRedeemRequest.ts +2 -2
  47. package/src/actions/wallet/deposit.ts +2 -2
  48. package/src/actions/wallet/redeem.ts +6 -6
  49. package/src/actions/wallet/requestRedeem.ts +3 -3
  50. package/src/gatewayAddresses.ts +6 -17
  51. package/src/index.ts +8 -8
  52. package/_esm/abi/gatewayAbi.js +0 -223
  53. package/_esm/abi/gatewayAbi.js.map +0 -1
  54. package/_esm/abi/peggedTokenAbi.js +0 -10
  55. package/_esm/abi/peggedTokenAbi.js.map +0 -1
  56. package/_esm/actions/public/getGateway.js +0 -30
  57. package/_esm/actions/public/getGateway.js.map +0 -1
  58. package/_esm/actions/public/getMaxMint.js +0 -23
  59. package/_esm/actions/public/getMaxMint.js.map +0 -1
  60. package/_esm/actions/public/getMaxWithdraw.js +0 -28
  61. package/_esm/actions/public/getMaxWithdraw.js.map +0 -1
  62. package/_esm/actions/public/getMintFee.js +0 -28
  63. package/_esm/actions/public/getMintFee.js.map +0 -1
  64. package/_esm/actions/public/getPeggedToken.js +0 -23
  65. package/_esm/actions/public/getPeggedToken.js.map +0 -1
  66. package/_esm/actions/public/getRedeemFee.js +0 -28
  67. package/_esm/actions/public/getRedeemFee.js.map +0 -1
  68. package/_esm/actions/public/getRedeemRequest.js +0 -28
  69. package/_esm/actions/public/getRedeemRequest.js.map +0 -1
  70. package/_esm/actions/public/getTreasury.js +0 -23
  71. package/_esm/actions/public/getTreasury.js.map +0 -1
  72. package/_esm/actions/public/getWithdrawalDelay.js +0 -23
  73. package/_esm/actions/public/getWithdrawalDelay.js.map +0 -1
  74. package/_esm/actions/public/getWithdrawalDelayEnabled.js +0 -23
  75. package/_esm/actions/public/getWithdrawalDelayEnabled.js.map +0 -1
  76. package/_esm/actions/public/index.js +0 -15
  77. package/_esm/actions/public/index.js.map +0 -1
  78. package/_esm/actions/public/isInstantRedeemWhitelisted.js +0 -28
  79. package/_esm/actions/public/isInstantRedeemWhitelisted.js.map +0 -1
  80. package/_esm/actions/public/previewDeposit.js +0 -35
  81. package/_esm/actions/public/previewDeposit.js.map +0 -1
  82. package/_esm/actions/public/previewRedeem.js +0 -35
  83. package/_esm/actions/public/previewRedeem.js.map +0 -1
  84. package/_esm/actions/public/previewWithdraw.js +0 -35
  85. package/_esm/actions/public/previewWithdraw.js.map +0 -1
  86. package/_esm/actions/wallet/cancelRedeemRequest.js +0 -89
  87. package/_esm/actions/wallet/cancelRedeemRequest.js.map +0 -1
  88. package/_esm/actions/wallet/deposit.js +0 -193
  89. package/_esm/actions/wallet/deposit.js.map +0 -1
  90. package/_esm/actions/wallet/redeem.js +0 -226
  91. package/_esm/actions/wallet/redeem.js.map +0 -1
  92. package/_esm/actions/wallet/requestRedeem.js +0 -153
  93. package/_esm/actions/wallet/requestRedeem.js.map +0 -1
  94. package/_esm/gatewayAddresses.js +0 -18
  95. package/_esm/gatewayAddresses.js.map +0 -1
  96. package/_esm/types.js +0 -2
  97. package/_esm/types.js.map +0 -1
  98. package/_esm/utils/isAddressValid.js +0 -3
  99. package/_esm/utils/isAddressValid.js.map +0 -1
  100. package/_types/utils/isAddressValid.d.ts +0 -3
  101. package/_types/utils/isAddressValid.d.ts.map +0 -1
  102. package/src/utils/isAddressValid.ts +0 -4
@@ -1,193 +0,0 @@
1
- import { toPromiseEvent } from "to-promise-event";
2
- import { encodeFunctionData, isAddress, isAddressEqual, zeroAddress, } from "viem";
3
- import { waitForTransactionReceipt, writeContract } from "viem/actions";
4
- import { allowance, approve } from "viem-erc20/actions";
5
- import { gatewayAbi } from "../../abi/gatewayAbi.js";
6
- const canDeposit = function ({ amountIn, approveAmount, client, gatewayAddress, minPeggedTokenOut, receiver, tokenIn, }) {
7
- // Validate client
8
- if (!client) {
9
- return {
10
- canDeposit: false,
11
- reason: "Client is not defined",
12
- };
13
- }
14
- if (!client.chain) {
15
- return {
16
- canDeposit: false,
17
- reason: "Chain is not defined on wallet client",
18
- };
19
- }
20
- // Validate client has required properties
21
- if (!client.account) {
22
- return {
23
- canDeposit: false,
24
- reason: "Client must have an account",
25
- };
26
- }
27
- // Validate gateway address
28
- if (!gatewayAddress || !isAddress(gatewayAddress)) {
29
- return {
30
- canDeposit: false,
31
- reason: "Invalid gateway address",
32
- };
33
- }
34
- if (isAddressEqual(gatewayAddress, zeroAddress)) {
35
- return {
36
- canDeposit: false,
37
- reason: "Gateway address cannot be zero address",
38
- };
39
- }
40
- // Validate tokenIn address
41
- if (!tokenIn || !isAddress(tokenIn)) {
42
- return {
43
- canDeposit: false,
44
- reason: "Invalid token address",
45
- };
46
- }
47
- if (isAddressEqual(tokenIn, zeroAddress)) {
48
- return {
49
- canDeposit: false,
50
- reason: "Token address cannot be zero address",
51
- };
52
- }
53
- // Validate receiver address
54
- if (!receiver || !isAddress(receiver)) {
55
- return {
56
- canDeposit: false,
57
- reason: "Invalid receiver address",
58
- };
59
- }
60
- if (isAddressEqual(receiver, zeroAddress)) {
61
- return {
62
- canDeposit: false,
63
- reason: "Receiver address cannot be zero address",
64
- };
65
- }
66
- // Validate amountIn
67
- if (typeof amountIn !== "bigint") {
68
- return {
69
- canDeposit: false,
70
- reason: "Amount must be a bigint",
71
- };
72
- }
73
- if (amountIn <= 0n) {
74
- return {
75
- canDeposit: false,
76
- reason: "Amount must be greater than 0",
77
- };
78
- }
79
- // Validate minPeggedTokenOut
80
- if (typeof minPeggedTokenOut !== "bigint") {
81
- return {
82
- canDeposit: false,
83
- reason: "Minimum output must be a bigint",
84
- };
85
- }
86
- if (minPeggedTokenOut < 0n) {
87
- return {
88
- canDeposit: false,
89
- reason: "Minimum output cannot be negative",
90
- };
91
- }
92
- // Validate approveAmount
93
- if (approveAmount < amountIn) {
94
- return {
95
- canDeposit: false,
96
- reason: "Approve amount must be greater than or equal to amount",
97
- };
98
- }
99
- return { canDeposit: true };
100
- };
101
- const runDeposit = (walletClient, { amountIn, approveAmount = amountIn, gatewayAddress, minPeggedTokenOut, receiver, tokenIn, }) => async function (emitter) {
102
- try {
103
- const { canDeposit: canDepositFlag, reason } = canDeposit({
104
- amountIn,
105
- approveAmount,
106
- client: walletClient,
107
- gatewayAddress,
108
- minPeggedTokenOut,
109
- receiver,
110
- tokenIn,
111
- });
112
- if (!canDepositFlag) {
113
- emitter.emit("deposit-failed-validation", reason);
114
- return;
115
- }
116
- // Check current allowance
117
- const currentAllowance = await allowance(walletClient, {
118
- address: tokenIn,
119
- // account is already validated
120
- owner: walletClient.account.address,
121
- spender: gatewayAddress,
122
- });
123
- // If allowance is insufficient, approve first
124
- if (currentAllowance < amountIn) {
125
- emitter.emit("pre-approve");
126
- const approvalHash = await approve(walletClient, {
127
- address: tokenIn,
128
- amount: approveAmount,
129
- spender: gatewayAddress,
130
- }).catch(function (error) {
131
- emitter.emit("user-signing-approval-error", error);
132
- });
133
- if (!approvalHash) {
134
- return;
135
- }
136
- emitter.emit("user-signed-approval", approvalHash);
137
- const approvalReceipt = await waitForTransactionReceipt(walletClient, {
138
- hash: approvalHash,
139
- }).catch(function (error) {
140
- emitter.emit("deposit-failed", error);
141
- });
142
- if (!approvalReceipt) {
143
- return;
144
- }
145
- if (approvalReceipt.status === "reverted") {
146
- emitter.emit("approve-transaction-reverted", approvalReceipt);
147
- return;
148
- }
149
- emitter.emit("approve-transaction-succeeded", approvalReceipt);
150
- }
151
- emitter.emit("pre-deposit");
152
- const depositHash = await writeContract(walletClient, {
153
- abi: gatewayAbi,
154
- account: walletClient.account,
155
- address: gatewayAddress,
156
- args: [tokenIn, amountIn, minPeggedTokenOut, receiver],
157
- chain: walletClient.chain,
158
- functionName: "deposit",
159
- }).catch(function (error) {
160
- emitter.emit("user-signing-deposit-error", error);
161
- });
162
- if (!depositHash) {
163
- return;
164
- }
165
- emitter.emit("user-signed-deposit", depositHash);
166
- const depositReceipt = await waitForTransactionReceipt(walletClient, {
167
- hash: depositHash,
168
- }).catch(function (error) {
169
- emitter.emit("deposit-failed", error);
170
- });
171
- if (!depositReceipt) {
172
- return;
173
- }
174
- const depositEventMap = {
175
- reverted: "deposit-transaction-reverted",
176
- success: "deposit-transaction-succeeded",
177
- };
178
- emitter.emit(depositEventMap[depositReceipt.status], depositReceipt);
179
- }
180
- catch (error) {
181
- emitter.emit("unexpected-error", error);
182
- }
183
- finally {
184
- emitter.emit("deposit-settled");
185
- }
186
- };
187
- export const deposit = (...args) => toPromiseEvent(runDeposit(...args));
188
- export const encodeDeposit = ({ amountIn, minPeggedTokenOut, receiver, tokenIn, }) => encodeFunctionData({
189
- abi: gatewayAbi,
190
- args: [tokenIn, amountIn, minPeggedTokenOut, receiver],
191
- functionName: "deposit",
192
- });
193
- //# sourceMappingURL=deposit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/actions/wallet/deposit.ts"],"names":[],"mappings":"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"}
@@ -1,226 +0,0 @@
1
- import { toPromiseEvent } from "to-promise-event";
2
- import { encodeFunctionData, isAddress, isAddressEqual, zeroAddress, } from "viem";
3
- import { waitForTransactionReceipt, writeContract } from "viem/actions";
4
- import { allowance, approve } from "viem-erc20/actions";
5
- import { gatewayAbi } from "../../abi/gatewayAbi.js";
6
- import { getMaxWithdraw } from "../public/getMaxWithdraw.js";
7
- import { getPeggedToken } from "../public/getPeggedToken.js";
8
- import { getWithdrawalDelayEnabled } from "../public/getWithdrawalDelayEnabled.js";
9
- import { isInstantRedeemWhitelisted } from "../public/isInstantRedeemWhitelisted.js";
10
- const canRedeem = async function ({ approveAmount, client, gatewayAddress, minAmountOut, peggedTokenIn, receiver, tokenOut, }) {
11
- // Validate client
12
- if (!client) {
13
- return {
14
- canRedeem: false,
15
- reason: "Client is not defined",
16
- };
17
- }
18
- if (!client.chain) {
19
- return {
20
- canRedeem: false,
21
- reason: "Chain is not defined on wallet client",
22
- };
23
- }
24
- // Validate client has required properties
25
- if (!client.account) {
26
- return {
27
- canRedeem: false,
28
- reason: "Client must have an account",
29
- };
30
- }
31
- // Validate gateway address
32
- if (!gatewayAddress || !isAddress(gatewayAddress)) {
33
- return {
34
- canRedeem: false,
35
- reason: "Invalid gateway address",
36
- };
37
- }
38
- if (isAddressEqual(gatewayAddress, zeroAddress)) {
39
- return {
40
- canRedeem: false,
41
- reason: "Gateway address cannot be zero address",
42
- };
43
- }
44
- // Validate tokenOut address
45
- if (!tokenOut || !isAddress(tokenOut)) {
46
- return {
47
- canRedeem: false,
48
- reason: "Invalid token address",
49
- };
50
- }
51
- if (isAddressEqual(tokenOut, zeroAddress)) {
52
- return {
53
- canRedeem: false,
54
- reason: "Token address cannot be zero address",
55
- };
56
- }
57
- // Validate receiver address
58
- if (!receiver || !isAddress(receiver)) {
59
- return {
60
- canRedeem: false,
61
- reason: "Invalid receiver address",
62
- };
63
- }
64
- if (isAddressEqual(receiver, zeroAddress)) {
65
- return {
66
- canRedeem: false,
67
- reason: "Receiver address cannot be zero address",
68
- };
69
- }
70
- // Validate peggedTokenIn
71
- if (typeof peggedTokenIn !== "bigint") {
72
- return {
73
- canRedeem: false,
74
- reason: "Amount must be a bigint",
75
- };
76
- }
77
- if (peggedTokenIn <= 0n) {
78
- return {
79
- canRedeem: false,
80
- reason: "Amount must be greater than 0",
81
- };
82
- }
83
- // Validate minAmountOut
84
- if (typeof minAmountOut !== "bigint") {
85
- return {
86
- canRedeem: false,
87
- reason: "Minimum output must be a bigint",
88
- };
89
- }
90
- if (minAmountOut < 0n) {
91
- return {
92
- canRedeem: false,
93
- reason: "Minimum output cannot be negative",
94
- };
95
- }
96
- // Validate approveAmount
97
- if (approveAmount < peggedTokenIn) {
98
- return {
99
- canRedeem: false,
100
- reason: "Approve amount must be greater than or equal to amount",
101
- };
102
- }
103
- // Check treasury has enough balance for the requested token
104
- const maxWithdrawable = await getMaxWithdraw(client, {
105
- address: gatewayAddress,
106
- tokenOut,
107
- });
108
- if (minAmountOut > maxWithdrawable) {
109
- return {
110
- canRedeem: false,
111
- reason: "Not enough balance in treasury",
112
- };
113
- }
114
- return { canRedeem: true };
115
- };
116
- const runRedeem = (walletClient, { approveAmount, gatewayAddress, minAmountOut, peggedTokenIn, receiver, tokenOut, }) => async function (emitter) {
117
- const resolvedApproveAmount = approveAmount ?? peggedTokenIn;
118
- try {
119
- const { canRedeem: canRedeemFlag, reason } = await canRedeem({
120
- approveAmount: resolvedApproveAmount,
121
- client: walletClient,
122
- gatewayAddress,
123
- minAmountOut,
124
- peggedTokenIn,
125
- receiver,
126
- tokenOut,
127
- });
128
- if (!canRedeemFlag) {
129
- emitter.emit("redeem-failed-validation", reason);
130
- return;
131
- }
132
- // Check if user is whitelisted for instant redeem
133
- const [isWhitelisted, delayEnabled] = await Promise.all([
134
- isInstantRedeemWhitelisted(walletClient, {
135
- account: walletClient.account.address,
136
- address: gatewayAddress,
137
- }),
138
- getWithdrawalDelayEnabled(walletClient, {
139
- address: gatewayAddress,
140
- }),
141
- ]);
142
- // Approval is needed when the user is whitelisted (instant redeem burns pegged tokens)
143
- // or when delay is disabled (redeem completes immediately)
144
- if (isWhitelisted || !delayEnabled) {
145
- // Get the pegged token address
146
- const peggedTokenAddress = await getPeggedToken(walletClient, {
147
- address: gatewayAddress,
148
- });
149
- // Check current allowance for pegged token
150
- const currentAllowance = await allowance(walletClient, {
151
- address: peggedTokenAddress,
152
- owner: walletClient.account.address,
153
- spender: gatewayAddress,
154
- });
155
- // If allowance is insufficient, approve first
156
- if (currentAllowance < peggedTokenIn) {
157
- emitter.emit("pre-approve");
158
- const approvalHash = await approve(walletClient, {
159
- address: peggedTokenAddress,
160
- amount: resolvedApproveAmount,
161
- spender: gatewayAddress,
162
- }).catch(function (error) {
163
- emitter.emit("user-signing-approval-error", error);
164
- });
165
- if (!approvalHash) {
166
- return;
167
- }
168
- emitter.emit("user-signed-approval", approvalHash);
169
- const approvalReceipt = await waitForTransactionReceipt(walletClient, {
170
- hash: approvalHash,
171
- }).catch(function (error) {
172
- emitter.emit("redeem-failed", error);
173
- });
174
- if (!approvalReceipt) {
175
- return;
176
- }
177
- if (approvalReceipt.status === "reverted") {
178
- emitter.emit("approve-transaction-reverted", approvalReceipt);
179
- return;
180
- }
181
- emitter.emit("approve-transaction-succeeded", approvalReceipt);
182
- }
183
- }
184
- emitter.emit("pre-redeem");
185
- const redeemHash = await writeContract(walletClient, {
186
- abi: gatewayAbi,
187
- account: walletClient.account,
188
- address: gatewayAddress,
189
- args: [tokenOut, peggedTokenIn, minAmountOut, receiver],
190
- chain: walletClient.chain,
191
- functionName: "redeem",
192
- }).catch(function (error) {
193
- emitter.emit("user-signing-redeem-error", error);
194
- });
195
- if (!redeemHash) {
196
- return;
197
- }
198
- emitter.emit("user-signed-redeem", redeemHash);
199
- const redeemReceipt = await waitForTransactionReceipt(walletClient, {
200
- hash: redeemHash,
201
- }).catch(function (error) {
202
- emitter.emit("redeem-failed", error);
203
- });
204
- if (!redeemReceipt) {
205
- return;
206
- }
207
- const redeemEventMap = {
208
- reverted: "redeem-transaction-reverted",
209
- success: "redeem-transaction-succeeded",
210
- };
211
- emitter.emit(redeemEventMap[redeemReceipt.status], redeemReceipt);
212
- }
213
- catch (error) {
214
- emitter.emit("unexpected-error", error);
215
- }
216
- finally {
217
- emitter.emit("redeem-settled");
218
- }
219
- };
220
- export const redeem = (...args) => toPromiseEvent(runRedeem(...args));
221
- export const encodeRedeem = ({ minAmountOut, peggedTokenIn, receiver, tokenOut, }) => encodeFunctionData({
222
- abi: gatewayAbi,
223
- args: [tokenOut, peggedTokenIn, minAmountOut, receiver],
224
- functionName: "redeem",
225
- });
226
- //# sourceMappingURL=redeem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redeem.js","sourceRoot":"","sources":["../../../src/actions/wallet/redeem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAIL,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAWrF,MAAM,SAAS,GAAG,KAAK,WAAW,EAChC,aAAa,EACb,MAAM,EACN,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,GAST;IAIC,kBAAkB;IAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,uBAAuB;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,uCAAuC;SAChD,CAAC;IACJ,CAAC;IACD,0CAA0C;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,6BAA6B;SACtC,CAAC;IACJ,CAAC;IACD,2BAA2B;IAC3B,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,yBAAyB;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,wCAAwC;SACjD,CAAC;IACJ,CAAC;IACD,4BAA4B;IAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,uBAAuB;SAChC,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,0BAA0B;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,yCAAyC;SAClD,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,yBAAyB;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,+BAA+B;SACxC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,iCAAiC;SAC1C,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,GAAG,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IACD,yBAAyB;IACzB,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;QAClC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,wDAAwD;SACjE,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;QACnD,OAAO,EAAE,cAAc;QACvB,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACnC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,gCAAgC;SACzC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,YAA0B,EAC1B,EACE,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,GACK,EACf,EAAE,CACF,KAAK,WAAW,OAAmC;IACjD,MAAM,qBAAqB,GAAG,aAAa,IAAI,aAAa,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC;YAC3D,aAAa,EAAE,qBAAqB;YACpC,MAAM,EAAE,YAAY;YACpB,cAAc;YACd,YAAY;YACZ,aAAa;YACb,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAO,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,kDAAkD;QAClD,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,0BAA0B,CAAC,YAAY,EAAE;gBACvC,OAAO,EAAE,YAAY,CAAC,OAAQ,CAAC,OAAO;gBACtC,OAAO,EAAE,cAAc;aACxB,CAAC;YACF,yBAAyB,CAAC,YAAY,EAAE;gBACtC,OAAO,EAAE,cAAc;aACxB,CAAC;SACH,CAAC,CAAC;QAEH,uFAAuF;QACvF,2DAA2D;QAC3D,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,+BAA+B;YAC/B,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE;gBAC5D,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE;gBACrD,OAAO,EAAE,kBAAkB;gBAC3B,KAAK,EAAE,YAAY,CAAC,OAAQ,CAAC,OAAO;gBACpC,OAAO,EAAE,cAAc;aACxB,CAAC,CAAC;YAEH,8CAA8C;YAC9C,IAAI,gBAAgB,GAAG,aAAa,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE5B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE;oBAC/C,OAAO,EAAE,kBAAkB;oBAC3B,MAAM,EAAE,qBAAqB;oBAC7B,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAC,KAAK,CAAC,UAAU,KAAY;oBAC7B,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;gBAEnD,MAAM,eAAe,GAAG,MAAM,yBAAyB,CACrD,YAAY,EACZ;oBACE,IAAI,EAAE,YAAY;iBACnB,CACF,CAAC,KAAK,CAAC,UAAU,KAAY;oBAC5B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAO;gBACT,CAAC;gBAED,IAAI,eAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;oBAC9D,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3B,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE;YACnD,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,YAAY,CAAC,OAAQ;YAC9B,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;YACvD,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC,KAAK,CAAC,UAAU,KAAY;YAC7B,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,MAAM,yBAAyB,CAAC,YAAY,EAAE;YAClE,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC,KAAK,CAAC,UAAU,KAAY;YAC7B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAGhB;YACF,QAAQ,EAAE,6BAA6B;YACvC,OAAO,EAAE,8BAA8B;SACxC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAc,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAkC,EAAE,EAAE,CAC9D,cAAc,CAAe,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,GAMT,EAAE,EAAE,CACH,kBAAkB,CAAC;IACjB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;IACvD,YAAY,EAAE,QAAQ;CACvB,CAAC,CAAC"}
@@ -1,153 +0,0 @@
1
- import { toPromiseEvent } from "to-promise-event";
2
- import { encodeFunctionData, isAddress, isAddressEqual, zeroAddress, } from "viem";
3
- import { waitForTransactionReceipt, writeContract } from "viem/actions";
4
- import { allowance, approve } from "viem-erc20/actions";
5
- import { gatewayAbi } from "../../abi/gatewayAbi.js";
6
- import { getPeggedToken } from "../public/getPeggedToken.js";
7
- const canRequestRedeem = function ({ approveAmount, client, gatewayAddress, peggedTokenAmount, }) {
8
- if (!client) {
9
- return {
10
- canRequestRedeem: false,
11
- reason: "Client is not defined",
12
- };
13
- }
14
- if (!client.chain) {
15
- return {
16
- canRequestRedeem: false,
17
- reason: "Chain is not defined on wallet client",
18
- };
19
- }
20
- if (!client.account) {
21
- return {
22
- canRequestRedeem: false,
23
- reason: "Client must have an account",
24
- };
25
- }
26
- // Validate gateway address
27
- if (!gatewayAddress || !isAddress(gatewayAddress)) {
28
- return {
29
- canRequestRedeem: false,
30
- reason: "Invalid gateway address",
31
- };
32
- }
33
- if (isAddressEqual(gatewayAddress, zeroAddress)) {
34
- return {
35
- canRequestRedeem: false,
36
- reason: "Gateway address cannot be zero address",
37
- };
38
- }
39
- if (typeof peggedTokenAmount !== "bigint") {
40
- return {
41
- canRequestRedeem: false,
42
- reason: "Amount must be a bigint",
43
- };
44
- }
45
- if (peggedTokenAmount <= 0n) {
46
- return {
47
- canRequestRedeem: false,
48
- reason: "Amount must be greater than 0",
49
- };
50
- }
51
- // Validate approveAmount
52
- if (approveAmount < peggedTokenAmount) {
53
- return {
54
- canRequestRedeem: false,
55
- reason: "Approve amount must be greater than or equal to amount",
56
- };
57
- }
58
- return { canRequestRedeem: true };
59
- };
60
- const runRequestRedeem = (walletClient, { approveAmount, gatewayAddress, peggedTokenAmount }) => async function (emitter) {
61
- const resolvedApproveAmount = approveAmount ?? peggedTokenAmount;
62
- try {
63
- const { canRequestRedeem: canRequestRedeemFlag, reason } = canRequestRedeem({
64
- approveAmount: resolvedApproveAmount,
65
- client: walletClient,
66
- gatewayAddress,
67
- peggedTokenAmount,
68
- });
69
- if (!canRequestRedeemFlag) {
70
- emitter.emit("request-redeem-failed-validation", reason);
71
- return;
72
- }
73
- // Get the pegged token address
74
- const peggedTokenAddress = await getPeggedToken(walletClient, {
75
- address: gatewayAddress,
76
- });
77
- // Check current allowance for pegged token
78
- const currentAllowance = await allowance(walletClient, {
79
- address: peggedTokenAddress,
80
- owner: walletClient.account.address,
81
- spender: gatewayAddress,
82
- });
83
- // If allowance is insufficient, approve first
84
- if (currentAllowance < peggedTokenAmount) {
85
- emitter.emit("pre-approve");
86
- const approvalHash = await approve(walletClient, {
87
- address: peggedTokenAddress,
88
- amount: resolvedApproveAmount,
89
- spender: gatewayAddress,
90
- }).catch(function (error) {
91
- emitter.emit("user-signing-approval-error", error);
92
- });
93
- if (!approvalHash) {
94
- return;
95
- }
96
- emitter.emit("user-signed-approval", approvalHash);
97
- const approvalReceipt = await waitForTransactionReceipt(walletClient, {
98
- hash: approvalHash,
99
- }).catch(function (error) {
100
- emitter.emit("request-redeem-failed", error);
101
- });
102
- if (!approvalReceipt) {
103
- return;
104
- }
105
- if (approvalReceipt.status === "reverted") {
106
- emitter.emit("approve-transaction-reverted", approvalReceipt);
107
- return;
108
- }
109
- emitter.emit("approve-transaction-succeeded", approvalReceipt);
110
- }
111
- emitter.emit("pre-request-redeem");
112
- const requestRedeemHash = await writeContract(walletClient, {
113
- abi: gatewayAbi,
114
- account: walletClient.account,
115
- address: gatewayAddress,
116
- args: [peggedTokenAmount],
117
- chain: walletClient.chain,
118
- functionName: "requestRedeem",
119
- }).catch(function (error) {
120
- emitter.emit("user-signing-request-redeem-error", error);
121
- });
122
- if (!requestRedeemHash) {
123
- return;
124
- }
125
- emitter.emit("user-signed-request-redeem", requestRedeemHash);
126
- const requestRedeemReceipt = await waitForTransactionReceipt(walletClient, {
127
- hash: requestRedeemHash,
128
- }).catch(function (error) {
129
- emitter.emit("request-redeem-failed", error);
130
- });
131
- if (!requestRedeemReceipt) {
132
- return;
133
- }
134
- const requestRedeemEventMap = {
135
- reverted: "request-redeem-transaction-reverted",
136
- success: "request-redeem-transaction-succeeded",
137
- };
138
- emitter.emit(requestRedeemEventMap[requestRedeemReceipt.status], requestRedeemReceipt);
139
- }
140
- catch (error) {
141
- emitter.emit("unexpected-error", error);
142
- }
143
- finally {
144
- emitter.emit("request-redeem-settled");
145
- }
146
- };
147
- export const requestRedeem = (...args) => toPromiseEvent(runRequestRedeem(...args));
148
- export const encodeRequestRedeem = ({ peggedTokenAmount, }) => encodeFunctionData({
149
- abi: gatewayAbi,
150
- args: [peggedTokenAmount],
151
- functionName: "requestRedeem",
152
- });
153
- //# sourceMappingURL=requestRedeem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requestRedeem.js","sourceRoot":"","sources":["../../../src/actions/wallet/requestRedeem.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- // Whitelisted-token oracles within a gateway are denominated in the gateway's
2
- // peg unit (e.g. WBTC/BTC for the vetBTC gateway, USDT/USD for the VUSD gateway),
3
- // so the USD price for any whitelisted token is `oracle × portal[pegBaseSymbol]`.
4
- // See `web/src/fetchers/fetchPrices.ts` for the merge.
5
- export const gateways = [
6
- // VUSD
7
- {
8
- address: "0xDaD503f8B9d42bb7af3AfC588358D30163e4416F",
9
- pegBaseSymbol: "USD",
10
- },
11
- // vetBTC
12
- {
13
- address: "0xCBA2Ffa0AC52d7871a4221a871793Eb788013faB",
14
- pegBaseSymbol: "BTC",
15
- },
16
- ];
17
- export const gatewayAddresses = gateways.map((g) => g.address);
18
- //# sourceMappingURL=gatewayAddresses.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gatewayAddresses.js","sourceRoot":"","sources":["../src/gatewayAddresses.ts"],"names":[],"mappings":"AASA,8EAA8E;AAC9E,kFAAkF;AAClF,kFAAkF;AAClF,uDAAuD;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,OAAO;IACP;QACE,OAAO,EAAE,4CAA4C;QACrD,aAAa,EAAE,KAAK;KACrB;IACD,SAAS;IACT;QACE,OAAO,EAAE,4CAA4C;QACrD,aAAa,EAAE,KAAK;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC"}
package/_esm/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/_esm/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import { isAddress, isAddressEqual, zeroAddress } from "viem";
2
- export const isAddressValid = (address) => !!address && isAddress(address) && !isAddressEqual(address, zeroAddress);
3
- //# sourceMappingURL=isAddressValid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isAddressValid.js","sourceRoot":"","sources":["../../src/utils/isAddressValid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAA4B,EAAE,EAAE,CAC7D,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type Address } from "viem";
2
- export declare const isAddressValid: (address: Address | undefined) => boolean;
3
- //# sourceMappingURL=isAddressValid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isAddressValid.d.ts","sourceRoot":"","sources":["../../src/utils/isAddressValid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA0C,MAAM,MAAM,CAAC;AAE5E,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,GAAG,SAAS,YACe,CAAC"}
@@ -1,4 +0,0 @@
1
- import { type Address, isAddress, isAddressEqual, zeroAddress } from "viem";
2
-
3
- export const isAddressValid = (address: Address | undefined) =>
4
- !!address && isAddress(address) && !isAddressEqual(address, zeroAddress);