@hinkal/common 0.3.12 → 0.3.13

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 (198) hide show
  1. package/common/src/API/API.cjs +1 -1
  2. package/common/src/API/API.d.ts +3 -0
  3. package/common/src/API/API.mjs +5 -2
  4. package/common/src/API/evm-token-assets.cjs +1 -0
  5. package/common/src/API/evm-token-assets.mjs +14 -0
  6. package/common/src/API/index.cjs +1 -1
  7. package/common/src/API/index.d.ts +1 -0
  8. package/common/src/API/index.mjs +1 -0
  9. package/common/src/API/receiveVaultCalls.cjs +1 -0
  10. package/common/src/API/receiveVaultCalls.d.ts +10 -0
  11. package/common/src/API/receiveVaultCalls.mjs +32 -0
  12. package/common/src/constants/contracts.constants.cjs +1 -1
  13. package/common/src/constants/contracts.constants.mjs +5 -1
  14. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  15. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  16. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  17. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +2 -1
  18. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  19. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  20. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  21. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  22. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  23. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  24. package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
  25. package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +2 -1
  26. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  27. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  28. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
  29. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +2 -1
  30. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  31. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  32. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
  33. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +2 -1
  34. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  35. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +2 -1
  36. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  37. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -1
  38. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  39. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -1
  40. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  41. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +2 -1
  42. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  43. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +3 -2
  44. package/common/src/constants/events.constants.d.ts +1 -0
  45. package/common/src/constants/protocol.constants.cjs +1 -1
  46. package/common/src/constants/protocol.constants.d.ts +6 -0
  47. package/common/src/constants/protocol.constants.mjs +2 -2
  48. package/common/src/constants/server.constants.cjs +1 -1
  49. package/common/src/constants/server.constants.d.ts +5 -0
  50. package/common/src/constants/server.constants.mjs +5 -0
  51. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  52. package/common/src/data-structures/Hinkal/Hinkal.d.ts +6 -2
  53. package/common/src/data-structures/Hinkal/Hinkal.mjs +62 -50
  54. package/common/src/data-structures/Hinkal/IHinkal.d.ts +6 -2
  55. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  56. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +10 -10
  57. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  58. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +4 -4
  59. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  60. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +24 -24
  61. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  62. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +33 -33
  63. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  64. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +8 -8
  65. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  66. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -1
  67. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +22 -22
  68. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  69. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +8 -8
  70. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  71. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +5 -5
  72. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  73. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +4 -4
  74. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -0
  75. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.d.ts +3 -0
  76. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +20 -0
  77. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -0
  78. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +3 -0
  79. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +33 -0
  80. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -0
  81. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.d.ts +5 -0
  82. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +59 -0
  83. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.cjs +1 -0
  84. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +6 -0
  85. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.mjs +8 -0
  86. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  87. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
  88. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +61 -49
  89. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  90. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +7 -7
  91. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  92. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +8 -8
  93. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  94. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +4 -4
  95. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  97. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  98. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  99. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +7 -6
  101. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  103. package/common/src/data-structures/Hinkal/index.d.ts +4 -0
  104. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -3
  105. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
  106. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +0 -2
  107. package/common/src/data-structures/crypto-keys/index.cjs +1 -1
  108. package/common/src/data-structures/crypto-keys/index.mjs +1 -1
  109. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  110. package/common/src/error-handling/error-codes.constants.d.ts +4 -0
  111. package/common/src/error-handling/error-codes.constants.mjs +5 -2
  112. package/common/src/error-handling/get-error.message.cjs +1 -1
  113. package/common/src/error-handling/get-error.message.mjs +50 -49
  114. package/common/src/functions/index.cjs +1 -1
  115. package/common/src/functions/index.mjs +2 -1
  116. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.cjs +1 -0
  117. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.d.ts +4 -0
  118. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.mjs +3 -0
  119. package/common/src/functions/pre-transaction/index.cjs +1 -1
  120. package/common/src/functions/pre-transaction/index.d.ts +1 -0
  121. package/common/src/functions/pre-transaction/index.mjs +1 -0
  122. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -1
  123. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +2 -1
  124. package/common/src/functions/utils/abi.utils.cjs +1 -1
  125. package/common/src/functions/utils/abi.utils.mjs +4 -1
  126. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  127. package/common/src/functions/utils/encryptInputForEnclave.d.ts +2 -1
  128. package/common/src/functions/utils/encryptInputForEnclave.mjs +1 -1
  129. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  130. package/common/src/functions/utils/erc20tokenFunctions.mjs +11 -11
  131. package/common/src/functions/utils/fees.utils.cjs +1 -1
  132. package/common/src/functions/utils/fees.utils.mjs +1 -1
  133. package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
  134. package/common/src/functions/utils/getSignerFromContract.d.ts +1 -1
  135. package/common/src/functions/utils/getSignerFromContract.mjs +2 -2
  136. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  137. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  138. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  139. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +1 -1
  140. package/common/src/functions/utils/index.cjs +1 -1
  141. package/common/src/functions/utils/index.d.ts +1 -0
  142. package/common/src/functions/utils/index.mjs +2 -1
  143. package/common/src/functions/utils/isSigner.cjs +1 -0
  144. package/common/src/functions/utils/isSigner.d.ts +2 -0
  145. package/common/src/functions/utils/isSigner.mjs +7 -0
  146. package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -0
  147. package/common/src/functions/utils/receive-vault-account.utils.d.ts +8 -0
  148. package/common/src/functions/utils/receive-vault-account.utils.mjs +23 -0
  149. package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -0
  150. package/common/src/functions/utils/receive-vault-scan.utils.d.ts +2 -0
  151. package/common/src/functions/utils/receive-vault-scan.utils.mjs +60 -0
  152. package/common/src/functions/utils/receive-vault.utils.cjs +2 -0
  153. package/common/src/functions/utils/receive-vault.utils.d.ts +29 -0
  154. package/common/src/functions/utils/receive-vault.utils.mjs +151 -0
  155. package/common/src/functions/utils/string.utils.cjs +1 -1
  156. package/common/src/functions/utils/string.utils.mjs +12 -4
  157. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -1
  158. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +1 -1
  159. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  160. package/common/src/functions/utils/transfer-claimable.utils.mjs +1 -1
  161. package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -0
  162. package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +4 -0
  163. package/common/src/functions/utils/wallet-token-discovery.utils.mjs +36 -0
  164. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  165. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +11 -11
  166. package/common/src/types/ethereum-network.types.cjs +1 -1
  167. package/common/src/types/ethereum-network.types.d.ts +4 -1
  168. package/common/src/types/ethereum-network.types.mjs +1 -1
  169. package/common/src/types/external-action.types.cjs +1 -1
  170. package/common/src/types/external-action.types.d.ts +2 -1
  171. package/common/src/types/external-action.types.mjs +1 -1
  172. package/common/src/types/index.cjs +1 -1
  173. package/common/src/types/index.d.ts +1 -0
  174. package/common/src/types/index.mjs +1 -0
  175. package/common/src/types/receive-vault.types.cjs +1 -0
  176. package/common/src/types/receive-vault.types.d.ts +68 -0
  177. package/common/src/types/receive-vault.types.mjs +6 -0
  178. package/common/src/types/remote-tx-build.types.d.ts +5 -0
  179. package/common/src/webworker/{logError-cvFNxc-0.js → logError-BeXPKuv9.js} +1 -1
  180. package/common/src/webworker/package.json +10 -1
  181. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  182. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  183. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  184. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  185. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  186. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  187. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  188. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  189. package/common/src/webworker/workerProxy-DF35H7vU.js +1 -0
  190. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  191. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  192. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  193. package/package.json +10 -1
  194. package/services/Hinkal.cjs +1 -1
  195. package/services/Hinkal.d.ts +1 -1
  196. package/services/Hinkal.mjs +2 -2
  197. package/types/IHinkal.d.ts +1 -1
  198. package/common/src/webworker/workerProxy-BHzCZ9HT.js +0 -1
@@ -0,0 +1,151 @@
1
+ import { isTronLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
+ import { RECEIVE_VAULT_EXPIRY_SECONDS as n, RECEIVE_VAULT_FEE_CEILING_MULTIPLIER as r, RECEIVE_VAULT_VARIABLE_RATE as i, zeroAddress as a } from "../../constants/protocol.constants.mjs";
3
+ import { UserKeys as o } from "../../data-structures/crypto-keys/keys.mjs";
4
+ import { Utxo as s } from "../../data-structures/utxo/Utxo.mjs";
5
+ import { addressToHexFormat as c, evmHexToTronBase58Address as l } from "./tron.utils.mjs";
6
+ import "../../data-structures/crypto-keys/index.mjs";
7
+ import { ethers as u } from "ethers";
8
+ //#region libs/shared/common/src/functions/utils/receive-vault.utils.ts
9
+ var d = "HINKAL_RECEIVE_V1", f = "HINKAL_RECEIVE_RECOVERY_V1", p = "HINKAL_RECEIVE_RECOVER", m = "HINKAL_RECEIVE_OUTPUT", h = "HINKAL_RECEIVE_ACCOUNT_V1", g = "HINKAL_RECEIVE_VAULT_ACCOUNT", _ = ({ chainId: e, token: t, index: n }) => `${e}:${c(t).toLowerCase()}:${n}`, v = (e) => e * r, y = () => BigInt(Math.floor(Date.now() / 1e3) + n), b = (e, t) => {
10
+ let n = u.keccak256(u.toUtf8Bytes(`${f}:${e.getShieldedPrivateKey()}:${_(t)}`));
11
+ return new u.Wallet(n);
12
+ }, x = (e) => o.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey, S = (e, t) => {
13
+ let n = e.getShieldedPrivateKey(), r = BigInt(u.keccak256(u.toUtf8Bytes(`${d}:${n}:${_(t)}`))), l = new s({
14
+ amount: 0n,
15
+ erc20TokenAddress: a,
16
+ nullifyingKey: n,
17
+ randomization: o.findCorrectRandomization(r, n),
18
+ spendingPublicKey: e.getSpendingKeyPair().pubSpendingBJJPoint
19
+ }), { H0: f } = l;
20
+ if (!f) throw Error("receive vault: H0 is not set");
21
+ let p = o.getH1FromH0(f, n);
22
+ return {
23
+ recipient: {
24
+ H0x: f[0],
25
+ H0y: f[1],
26
+ H1x: p[0],
27
+ H1y: p[1],
28
+ stealthAddress: BigInt(l.getStealthAddress())
29
+ },
30
+ owner: b(e, t).address,
31
+ token: c(t.token),
32
+ maxFlatFee: BigInt(t.maxFlatFee),
33
+ maxVariableRate: Number(i),
34
+ expiry: BigInt(t.expiry)
35
+ };
36
+ }, C = (e) => u.AbiCoder.defaultAbiCoder().encode(["tuple(tuple(uint256,uint256,uint256,uint256,uint256),address,address,uint256,uint16,uint64)"], [[
37
+ [
38
+ e.recipient.H0x,
39
+ e.recipient.H0y,
40
+ e.recipient.H1x,
41
+ e.recipient.H1y,
42
+ e.recipient.stealthAddress
43
+ ],
44
+ e.owner,
45
+ e.token,
46
+ e.maxFlatFee,
47
+ e.maxVariableRate,
48
+ e.expiry
49
+ ]]), w = (t) => e(t) ? "0x41" : "0xff", T = (e) => [
50
+ [
51
+ e.recipient.H0x,
52
+ e.recipient.H0y,
53
+ e.recipient.H1x,
54
+ e.recipient.H1y,
55
+ e.recipient.stealthAddress
56
+ ],
57
+ e.owner,
58
+ e.token,
59
+ e.maxFlatFee,
60
+ e.maxVariableRate,
61
+ e.expiry
62
+ ], E = (e, t, n, r) => u.getAddress(u.dataSlice(u.solidityPackedKeccak256([
63
+ "bytes1",
64
+ "address",
65
+ "bytes32",
66
+ "bytes32"
67
+ ], [
68
+ w(r),
69
+ c(t),
70
+ u.keccak256(C(e)),
71
+ n
72
+ ]), 12)), D = (e) => t[e]?.contractData?.receiveVaultFactoryAddress || void 0, O = "0xe5f823a7777291668021ab2734f77bc16b4854c16034051c86967a5eb2415e54", k = "0xedef7fda070f3ae59616c754f3f10ec4dfe4cb5c531ae39141ab2d323b36e3ec", A = (t) => e(t) ? k : O, j = (e) => !!D(e), M = (t, n) => {
73
+ let r = D(n);
74
+ if (!r) throw Error(`receive vault: no factory on chain ${n}`);
75
+ let i = E(t, r, A(n), n);
76
+ return e(n) ? l(i) : i;
77
+ }, N = (e, t) => ({
78
+ ...t,
79
+ vaultAddress: M(S(e, t), t.chainId)
80
+ }), P = ({ expiry: e }) => BigInt(e) < BigInt(Math.floor(Date.now() / 1e3)), F = (e) => ({
81
+ recipient: {
82
+ H0x: e.recipient.H0x.toString(),
83
+ H0y: e.recipient.H0y.toString(),
84
+ H1x: e.recipient.H1x.toString(),
85
+ H1y: e.recipient.H1y.toString(),
86
+ stealthAddress: e.recipient.stealthAddress.toString()
87
+ },
88
+ owner: e.owner,
89
+ token: e.token,
90
+ maxFlatFee: e.maxFlatFee.toString(),
91
+ maxVariableRate: e.maxVariableRate,
92
+ expiry: e.expiry.toString()
93
+ }), I = (e) => new u.Wallet(u.keccak256(u.toUtf8Bytes(`${h}:${e.getShieldedPrivateKey()}`))), L = (e) => I(e).address, R = (e, t) => u.keccak256(u.solidityPacked([
94
+ "string",
95
+ "address",
96
+ "uint256"
97
+ ], [
98
+ g,
99
+ e,
100
+ t
101
+ ])), z = async (e, t) => {
102
+ let n = I(e), r = R(n.address, t);
103
+ return {
104
+ accountKey: n.address,
105
+ deadline: t.toString(),
106
+ signature: await n.signMessage(u.getBytes(r))
107
+ };
108
+ }, B = (e, t, n, r) => u.keccak256(u.solidityPacked([
109
+ "string",
110
+ "uint256",
111
+ "address",
112
+ "address",
113
+ "bytes32"
114
+ ], [
115
+ m,
116
+ BigInt(e),
117
+ c(t),
118
+ c(n),
119
+ u.keccak256(r)
120
+ ])), V = async (e, t, n) => {
121
+ let r = D(t.chainId);
122
+ if (!r) throw Error(`receive vault: no factory on chain ${t.chainId}`);
123
+ let i = B(t.chainId, r, t.vaultAddress, n);
124
+ return b(e, t).signMessage(u.getBytes(i));
125
+ }, H = (t, n, r, i, a, o) => {
126
+ let s = u.keccak256(u.solidityPacked([
127
+ "string",
128
+ "uint256",
129
+ "address",
130
+ "address",
131
+ "address",
132
+ "address",
133
+ "uint256"
134
+ ], [
135
+ p,
136
+ BigInt(t),
137
+ c(n),
138
+ c(r),
139
+ c(i),
140
+ c(a),
141
+ o
142
+ ]));
143
+ return e(t) ? u.keccak256(u.concat([u.toUtf8Bytes("TRON Signed Message:\n32"), s])) : s;
144
+ }, U = async (t, n, r, i, a, o) => {
145
+ let s = D(i);
146
+ if (!s) throw Error(`receive vault: no factory on chain ${i}`);
147
+ let c = H(i, s, n.vaultAddress, r, a, o), l = b(t, n);
148
+ return e(i) ? new u.SigningKey(l.privateKey).sign(c).serialized : l.signMessage(u.getBytes(c));
149
+ };
150
+ //#endregion
151
+ export { N as buildReceiveVaultRecord, E as computeReceiveVaultAddress, C as encodeReceiveVaultParams, L as getReceiveVaultAccountKey, M as getReceiveVaultAddress, x as getReceiveVaultEncryptionKey, y as getReceiveVaultExpiry, D as getReceiveVaultFactoryAddress, v as getReceiveVaultFeeCeiling, A as getReceiveVaultInitCodeHash, B as getReceiveVaultOutputDigest, S as getReceiveVaultParams, H as getReceiveVaultRecoveryDigest, b as getReceiveVaultRecoveryWallet, P as isReceiveVaultExpired, j as isReceiveVaultSupported, T as receiveVaultParamsToTuple, F as serializeReceiveVaultParams, z as signReceiveVaultAccount, V as signReceiveVaultOutput, U as signReceiveVaultRecovery };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`);var t=(t,n)=>{let r=`${t}-${n}`;return e.isSolanaLike(n)||e.isTronLike(n)?r:r.toLowerCase()},n=(t,n,r=!1)=>{let i=`${t}-${n}`;if(r){let{hinkalAddress:t}=e.networkRegistry[n].contractData;return`${i}-${t}`.toLowerCase()}return i.toLowerCase()},r=(e,t,n)=>{if(!t||!n)throw Error(`oldPart and newPart must be provided`);return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase())};exports.getStateKey=n,exports.getTokenStateKey=t,exports.replaceAllInstances=r;
1
+ const e=require(`../../constants/chains.constants.cjs`);var t=e=>{e.startsWith(`0x`)&&(e=e.slice(2));let t=[];for(let n=0;n<e.length;n+=2){let r=parseInt(e.slice(n,n+2),16);t.push(r)}return new TextDecoder(`utf-8`).decode(new Uint8Array(t))},n=(t,n)=>{let r=`${t}-${n}`;return e.isSolanaLike(n)||e.isTronLike(n)?r:r.toLowerCase()},r=(t,n,r=!1)=>{let i=`${t}-${n}`;if(r){let{hinkalAddress:t}=e.networkRegistry[n].contractData;return`${i}-${t}`.toLowerCase()}return i.toLowerCase()},i=(e,t,n)=>{if(!t||!n)throw Error(`oldPart and newPart must be provided`);return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase())};exports.getStateKey=r,exports.getTokenStateKey=n,exports.hexToUtf8=t,exports.replaceAllInstances=i;
@@ -1,18 +1,26 @@
1
1
  import { isSolanaLike as e, isTronLike as t, networkRegistry as n } from "../../constants/chains.constants.mjs";
2
2
  //#region libs/shared/common/src/functions/utils/string.utils.ts
3
- var r = (n, r) => {
3
+ var r = (e) => {
4
+ e.startsWith("0x") && (e = e.slice(2));
5
+ let t = [];
6
+ for (let n = 0; n < e.length; n += 2) {
7
+ let r = parseInt(e.slice(n, n + 2), 16);
8
+ t.push(r);
9
+ }
10
+ return new TextDecoder("utf-8").decode(new Uint8Array(t));
11
+ }, i = (n, r) => {
4
12
  let i = `${n}-${r}`;
5
13
  return e(r) || t(r) ? i : i.toLowerCase();
6
- }, i = (e, t, r = !1) => {
14
+ }, a = (e, t, r = !1) => {
7
15
  let i = `${e}-${t}`;
8
16
  if (r) {
9
17
  let { hinkalAddress: e } = n[t].contractData;
10
18
  return `${i}-${e}`.toLowerCase();
11
19
  }
12
20
  return i.toLowerCase();
13
- }, a = (e, t, n) => {
21
+ }, o = (e, t, n) => {
14
22
  if (!t || !n) throw Error("oldPart and newPart must be provided");
15
23
  return e.toLowerCase().split(t.toLowerCase()).join(n.toLowerCase());
16
24
  };
17
25
  //#endregion
18
- export { i as getStateKey, r as getTokenStateKey, a as replaceAllInstances };
26
+ export { a as getStateKey, i as getTokenStateKey, r as hexToUtf8, o as replaceAllInstances };
@@ -1 +1 @@
1
- require(`../../error-handling/error-codes.constants.cjs`),require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`./addresses.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./fees.utils.cjs`),require(`./enclave-utxo-storage.cjs`),require(`../../data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs`),require(`./enclave-recipient-info-storage.cjs`);
1
+ require(`../../error-handling/error-codes.constants.cjs`),require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`./addresses.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`./fees.utils.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`../../data-structures/Hinkal/hinkalSolanaSponsoredShield.cjs`),require(`./enclave-recipient-info-storage.cjs`);
@@ -3,8 +3,8 @@ import "../web3/etherFunctions.mjs";
3
3
  import "../../data-structures/crypto-keys/keys.mjs";
4
4
  import "./addresses.mjs";
5
5
  import "../pre-transaction/getFeeStructure.mjs";
6
- import "./getRecipientInfoFromUserKeys.mjs";
7
6
  import "./fees.utils.mjs";
7
+ import "./getRecipientInfoFromUserKeys.mjs";
8
8
  import "./enclave-utxo-storage.mjs";
9
9
  import "../../data-structures/Hinkal/hinkalSolanaSponsoredShield.mjs";
10
10
  import "./enclave-recipient-info-storage.mjs";
@@ -1 +1 @@
1
- require(`./token-check.utils.cjs`),require(`../../error-handling/index.cjs`),require(`../../constants/index.cjs`),require(`../../data-structures/crypto-keys/index.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./tx-confirmation.utils.cjs`);
1
+ require(`../../data-structures/crypto-keys/index.cjs`),require(`./token-check.utils.cjs`),require(`../../error-handling/index.cjs`),require(`../../constants/index.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./tx-confirmation.utils.cjs`);
@@ -1,7 +1,7 @@
1
+ import "../../data-structures/crypto-keys/index.mjs";
1
2
  import "./token-check.utils.mjs";
2
3
  import "../../error-handling/index.mjs";
3
4
  import "../../constants/index.mjs";
4
- import "../../data-structures/crypto-keys/index.mjs";
5
5
  import "./getRecipientInfoFromUserKeys.mjs";
6
6
  import "./enclave-utxo-storage.mjs";
7
7
  import "./tx-confirmation.utils.mjs";
@@ -0,0 +1 @@
1
+ require(`../../constants/chains.constants.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`./tron.utils.cjs`);require(`./create-provider.cjs`);const r=require(`./publicBalance.utils.cjs`),i=require(`../../API/evm-token-assets.cjs`);require(`@solana/web3.js`),require(`@solana/spl-token`);var a=async(t,n)=>{let[a,o]=await Promise.all([r.getPublicBalanceByTokenAddress(t,n,e.zeroAddress),i.getEvmTokenBalancesFromServer(t,n)]);a&&a>0n&&o.push({contractAddress:e.zeroAddress,tokenBalance:a.toString()});let s={};return o.forEach(e=>{(!s[e.contractAddress]||BigInt(e.tokenBalance)>0n)&&(s[e.contractAddress]=e)}),Object.keys(s)},o=200,s=async(e,r)=>{let i=`${n.getTronWalletRpcUrl(r)}/v1/accounts/${e}/transactions/trc20?only_to=true&limit=${o}`,a=((await t.httpClient.get(i))?.data??[]).map(e=>e.token_info?.address).filter(e=>!!e).map(n.addressToHexFormat);return Array.from(new Set(a))},c=async(r,i)=>{let a=n.toTronBase58IfHex(r),o=`${n.getTronWalletRpcUrl(i)}/v1/accounts/${a}`,c=(await t.httpClient.get(o))?.data?.[0];if(!c)return s(a,i);let l=[];return c.balance&&c.balance>0&&l.push(e.zeroAddress),(c.trc20??[]).forEach(e=>{Object.entries(e).forEach(([e,t])=>{BigInt(t)>0n&&l.push(n.addressToHexFormat(e))})}),Array.from(new Set(l))};exports.getEvmWalletTokenAddresses=a,exports.getTronWalletTokenAddresses=c;
@@ -0,0 +1,4 @@
1
+ export declare const getEvmWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
2
+ export declare const getSolanaWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
3
+ export declare const getWalletTokenAddresses: (chainId: number, walletAddress: string) => Promise<string[]>;
4
+ export declare const getTronWalletTokenAddresses: (walletAddress: string, chainId: number) => Promise<string[]>;
@@ -0,0 +1,36 @@
1
+ import "../../constants/chains.constants.mjs";
2
+ import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
3
+ import { httpClient as t } from "../../data-structures/http/HttpClient.mjs";
4
+ import "../../data-structures/http/index.mjs";
5
+ import { addressToHexFormat as n, getTronWalletRpcUrl as r, toTronBase58IfHex as i } from "./tron.utils.mjs";
6
+ import "./create-provider.mjs";
7
+ import { getPublicBalanceByTokenAddress as a } from "./publicBalance.utils.mjs";
8
+ import { getEvmTokenBalancesFromServer as o } from "../../API/evm-token-assets.mjs";
9
+ import "@solana/web3.js";
10
+ import "@solana/spl-token";
11
+ //#region libs/shared/common/src/functions/utils/wallet-token-discovery.utils.ts
12
+ var s = async (t, n) => {
13
+ let [r, i] = await Promise.all([a(t, n, e), o(t, n)]);
14
+ r && r > 0n && i.push({
15
+ contractAddress: e,
16
+ tokenBalance: r.toString()
17
+ });
18
+ let s = {};
19
+ return i.forEach((e) => {
20
+ (!s[e.contractAddress] || BigInt(e.tokenBalance) > 0n) && (s[e.contractAddress] = e);
21
+ }), Object.keys(s);
22
+ }, c = 200, l = async (e, i) => {
23
+ let a = `${r(i)}/v1/accounts/${e}/transactions/trc20?only_to=true&limit=${c}`, o = ((await t.get(a))?.data ?? []).map((e) => e.token_info?.address).filter((e) => !!e).map(n);
24
+ return Array.from(new Set(o));
25
+ }, u = async (a, o) => {
26
+ let s = i(a), c = `${r(o)}/v1/accounts/${s}`, u = (await t.get(c))?.data?.[0];
27
+ if (!u) return l(s, o);
28
+ let d = [];
29
+ return u.balance && u.balance > 0 && d.push(e), (u.trc20 ?? []).forEach((e) => {
30
+ Object.entries(e).forEach(([e, t]) => {
31
+ BigInt(t) > 0n && d.push(n(e));
32
+ });
33
+ }), Array.from(new Set(d));
34
+ };
35
+ //#endregion
36
+ export { s as getEvmWalletTokenAddresses, u as getTronWalletTokenAddresses };
@@ -1 +1 @@
1
- require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../utils/time.utils.cjs`),n=require(`../../../types/ethereum-network.types.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m,h,g,_,v=!0,y=!1)=>{let b=Array.isArray(d)?d:[d],x=Array.isArray(f)?f:[f];if(b.length!==x.length)throw Error(`token and amount length mismatch`);let S=l.getContractWithSigner(u,n.ContractType.HinkalContract),C=await l.getEthereumAddressByChain(u),w=g??S,T=_??S,E=`transact`,D=x.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),O=x.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),k=D===-1?0n:b[D],A=l.getProviderAdapter(u),j=await A.supportsBatchCall?.(u);if(!y&&O&&j&&A.sendBatchCallsTransaction){let e=o.buildApproveAndTransactCalls(x.map(e=>e.erc20TokenAddress),b,r.getContractAddress(w),T,p,h,m,k);return await A.sendBatchCallsTransaction(u,e)}if(!y&&(await a.approveTokensToHinkal(l,u,w,x,b),O)){let e=x.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:b[t]}));await s.waitForErc20Approvals(l,u,C,r.getContractAddress(w),e)}let M={value:k>0n?BigInt(k).toString():void 0,gasLimit:void 0},N,P=[p[0],p[1],p[2],h,m,{...M,from:C}],{runner:F}=T;if(!(F instanceof c.ethers.AbstractSigner))throw Error(`expected signer`);if(v)try{N=Number(await T[E].estimateGas(...P))}catch(e){console.log(`hinkalDeposit: gas estimation error`,{err:e})}let I=N&&N>=0?Math.ceil(N*12/10):void 0;I&&(P[5].gasLimit=I),await t.waitLittle();let L;try{L=y?await T[E].populateTransaction(...P):await T[E](...P)}catch(e){if(!e?.transactionHash)throw e;let t=await i.recoverTransactionFromError(F.provider,e.transactionHash);if(!t)throw e;L=t}return L};exports.transactCallDirect=l;
1
+ const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../utils/time.utils.cjs`),n=require(`../../../types/ethereum-network.types.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`../../utils/isSigner.cjs`),a=require(`./recoverTransactionFromError.cjs`),o=require(`./approveTokensToHinkal.cjs`),s=require(`./constructBatchCall.cjs`),c=require(`./waitForErc20Approvals.cjs`);var l=async(l,u,d,f,p,m,h,g,_,v=!0,y=!1)=>{let b=Array.isArray(d)?d:[d],x=Array.isArray(f)?f:[f];if(b.length!==x.length)throw Error(`token and amount length mismatch`);let S=l.getContractWithSigner(u,n.ContractType.HinkalContract),C=await l.getEthereumAddressByChain(u),w=g??S,T=_??S,E=`transact`,D=x.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),O=x.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),k=D===-1?0n:b[D],A=l.getProviderAdapter(u),j=await A.supportsBatchCall?.(u);if(!y&&O&&j&&A.sendBatchCallsTransaction){let e=s.buildApproveAndTransactCalls(x.map(e=>e.erc20TokenAddress),b,r.getContractAddress(w),T,p,h,m,k);return await A.sendBatchCallsTransaction(u,e)}if(!y&&(await o.approveTokensToHinkal(l,u,w,x,b),O)){let e=x.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:b[t]}));await c.waitForErc20Approvals(l,u,C,r.getContractAddress(w),e)}let M={value:k>0n?BigInt(k).toString():void 0,gasLimit:void 0},N,P=[p[0],p[1],p[2],h,m,{...M,from:C}],{runner:F}=T;if(!i.isSigner(F))throw Error(`expected signer`);if(v)try{N=Number(await T[E].estimateGas(...P))}catch(e){console.log(`hinkalDeposit: gas estimation error`,{err:e})}let I=N&&N>=0?Math.ceil(N*12/10):void 0;I&&(P[5].gasLimit=I),await t.waitLittle();let L;try{L=y?await T[E].populateTransaction(...P):await T[E](...P)}catch(e){if(!e?.transactionHash||!F.provider)throw e;let t=await a.recoverTransactionFromError(F.provider,e.transactionHash);if(!t)throw e;L=t}return L};exports.transactCallDirect=l;
@@ -2,26 +2,26 @@ import { zeroAddress as e } from "../../../constants/protocol.constants.mjs";
2
2
  import { waitLittle as t } from "../../utils/time.utils.mjs";
3
3
  import { ContractType as n } from "../../../types/ethereum-network.types.mjs";
4
4
  import { getContractAddress as r } from "../../utils/getContractAddress.mjs";
5
- import { recoverTransactionFromError as i } from "./recoverTransactionFromError.mjs";
6
- import { approveTokensToHinkal as a } from "./approveTokensToHinkal.mjs";
7
- import { buildApproveAndTransactCalls as o } from "./constructBatchCall.mjs";
8
- import { waitForErc20Approvals as s } from "./waitForErc20Approvals.mjs";
9
- import { ethers as c } from "ethers";
5
+ import { isSigner as i } from "../../utils/isSigner.mjs";
6
+ import { recoverTransactionFromError as a } from "./recoverTransactionFromError.mjs";
7
+ import { approveTokensToHinkal as o } from "./approveTokensToHinkal.mjs";
8
+ import { buildApproveAndTransactCalls as s } from "./constructBatchCall.mjs";
9
+ import { waitForErc20Approvals as c } from "./waitForErc20Approvals.mjs";
10
10
  //#region libs/shared/common/src/functions/web3/functionCalls/transactCallDirect.ts
11
11
  var l = async (l, u, d, f, p, m, h, g, _, v = !0, y = !1) => {
12
12
  let b = Array.isArray(d) ? d : [d], x = Array.isArray(f) ? f : [f];
13
13
  if (b.length !== x.length) throw Error("token and amount length mismatch");
14
14
  let S = l.getContractWithSigner(u, n.HinkalContract), C = await l.getEthereumAddressByChain(u), w = g ?? S, T = _ ?? S, E = "transact", D = x.findIndex(({ erc20TokenAddress: t }) => t === e), O = x.some(({ erc20TokenAddress: t }) => t !== e), k = D === -1 ? 0n : b[D], A = l.getProviderAdapter(u), j = await A.supportsBatchCall?.(u);
15
15
  if (!y && O && j && A.sendBatchCallsTransaction) {
16
- let e = o(x.map((e) => e.erc20TokenAddress), b, r(w), T, p, h, m, k);
16
+ let e = s(x.map((e) => e.erc20TokenAddress), b, r(w), T, p, h, m, k);
17
17
  return await A.sendBatchCallsTransaction(u, e);
18
18
  }
19
- if (!y && (await a(l, u, w, x, b), O)) {
19
+ if (!y && (await o(l, u, w, x, b), O)) {
20
20
  let e = x.map(({ erc20TokenAddress: e }, t) => ({
21
21
  tokenAddress: e,
22
22
  requiredAmount: b[t]
23
23
  }));
24
- await s(l, u, C, r(w), e);
24
+ await c(l, u, C, r(w), e);
25
25
  }
26
26
  let M = {
27
27
  value: k > 0n ? BigInt(k).toString() : void 0,
@@ -37,7 +37,7 @@ var l = async (l, u, d, f, p, m, h, g, _, v = !0, y = !1) => {
37
37
  from: C
38
38
  }
39
39
  ], { runner: F } = T;
40
- if (!(F instanceof c.AbstractSigner)) throw Error("expected signer");
40
+ if (!i(F)) throw Error("expected signer");
41
41
  if (v) try {
42
42
  N = Number(await T[E].estimateGas(...P));
43
43
  } catch (e) {
@@ -49,8 +49,8 @@ var l = async (l, u, d, f, p, m, h, g, _, v = !0, y = !1) => {
49
49
  try {
50
50
  L = y ? await T[E].populateTransaction(...P) : await T[E](...P);
51
51
  } catch (e) {
52
- if (!e?.transactionHash) throw e;
53
- let t = await i(F.provider, e.transactionHash);
52
+ if (!e?.transactionHash || !F.provider) throw e;
53
+ let t = await a(F.provider, e.transactionHash);
54
54
  if (!t) throw e;
55
55
  L = t;
56
56
  }
@@ -1 +1 @@
1
- var e=function(e){return e[e.HinkalContract=0]=`HinkalContract`,e[e.HinkalHelperContract=1]=`HinkalHelperContract`,e[e.HinkalWrapperContract=2]=`HinkalWrapperContract`,e[e.DepositOnChainUtxosContract=3]=`DepositOnChainUtxosContract`,e[e.ERC20Contract=4]=`ERC20Contract`,e[e.ERC721Contract=5]=`ERC721Contract`,e[e.ERC1155Contract=6]=`ERC1155Contract`,e[e.WATokenContract=7]=`WATokenContract`,e[e.MerkleTreeContract=8]=`MerkleTreeContract`,e}({});exports.ContractType=e;
1
+ var e=function(e){return e[e.HinkalContract=0]=`HinkalContract`,e[e.HinkalHelperContract=1]=`HinkalHelperContract`,e[e.HinkalWrapperContract=2]=`HinkalWrapperContract`,e[e.DepositOnChainUtxosContract=3]=`DepositOnChainUtxosContract`,e[e.ERC20Contract=4]=`ERC20Contract`,e[e.ERC721Contract=5]=`ERC721Contract`,e[e.ERC1155Contract=6]=`ERC1155Contract`,e[e.WATokenContract=7]=`WATokenContract`,e[e.MerkleTreeContract=8]=`MerkleTreeContract`,e[e.ReceiveVaultFactoryContract=9]=`ReceiveVaultFactoryContract`,e}({});exports.ContractType=e;
@@ -13,7 +13,8 @@ export declare enum ContractType {
13
13
  ERC721Contract = 5,
14
14
  ERC1155Contract = 6,
15
15
  WATokenContract = 7,
16
- MerkleTreeContract = 8
16
+ MerkleTreeContract = 8,
17
+ ReceiveVaultFactoryContract = 9
17
18
  }
18
19
  export interface ContractData {
19
20
  hinkalAddress: string;
@@ -23,6 +24,8 @@ export interface ContractData {
23
24
  hinkalHelperABI?: InterfaceAbi;
24
25
  hinkalWrapperAddress?: string;
25
26
  hinkalWrapperABI?: InterfaceAbi;
27
+ receiveVaultFactoryAddress?: string;
28
+ receiveVaultFactoryABI?: InterfaceAbi;
26
29
  depositOnChainUtxosExternalActionAddress?: string;
27
30
  depositOnChainUtxosExternalActionABI?: InterfaceAbi;
28
31
  lifiExternalActionInstanceAddress?: string;
@@ -1,6 +1,6 @@
1
1
  //#region libs/shared/common/src/types/ethereum-network.types.ts
2
2
  var e = /* @__PURE__ */ function(e) {
3
- return e[e.HinkalContract = 0] = "HinkalContract", e[e.HinkalHelperContract = 1] = "HinkalHelperContract", e[e.HinkalWrapperContract = 2] = "HinkalWrapperContract", e[e.DepositOnChainUtxosContract = 3] = "DepositOnChainUtxosContract", e[e.ERC20Contract = 4] = "ERC20Contract", e[e.ERC721Contract = 5] = "ERC721Contract", e[e.ERC1155Contract = 6] = "ERC1155Contract", e[e.WATokenContract = 7] = "WATokenContract", e[e.MerkleTreeContract = 8] = "MerkleTreeContract", e;
3
+ return e[e.HinkalContract = 0] = "HinkalContract", e[e.HinkalHelperContract = 1] = "HinkalHelperContract", e[e.HinkalWrapperContract = 2] = "HinkalWrapperContract", e[e.DepositOnChainUtxosContract = 3] = "DepositOnChainUtxosContract", e[e.ERC20Contract = 4] = "ERC20Contract", e[e.ERC721Contract = 5] = "ERC721Contract", e[e.ERC1155Contract = 6] = "ERC1155Contract", e[e.WATokenContract = 7] = "WATokenContract", e[e.MerkleTreeContract = 8] = "MerkleTreeContract", e[e.ReceiveVaultFactoryContract = 9] = "ReceiveVaultFactoryContract", e;
4
4
  }({});
5
5
  //#endregion
6
6
  export { e as ContractType };
@@ -1 +1 @@
1
- var e=function(e){return e.Transact=`Transact`,e.Lifi=`Lifi`,e.Okx=`Okx`,e.Emporium=`Emporium`,e.Wallet=`Wallet`,e.DepositOnChainUtxos=`DepositOnChainUtxos`,e.ProofLess=`ProofLess`,e}({});exports.ExternalActionId=e;
1
+ var e=function(e){return e.Transact=`Transact`,e.Lifi=`Lifi`,e.Okx=`Okx`,e.Emporium=`Emporium`,e.Wallet=`Wallet`,e.DepositOnChainUtxos=`DepositOnChainUtxos`,e.ProofLess=`ProofLess`,e.ReceiveVaultSettle=`ReceiveVaultSettle`,e}({});exports.ExternalActionId=e;
@@ -5,7 +5,8 @@ export declare enum ExternalActionId {
5
5
  Emporium = "Emporium",
6
6
  Wallet = "Wallet",
7
7
  DepositOnChainUtxos = "DepositOnChainUtxos",
8
- ProofLess = "ProofLess"
8
+ ProofLess = "ProofLess",// Note: not an actual external action, added to handle proofless deposit gas calculation
9
+ ReceiveVaultSettle = "ReceiveVaultSettle"
9
10
  }
10
11
  export interface ExternalActionData<T = 0n | ExternalActionId> {
11
12
  externalActionId: T;
@@ -1,6 +1,6 @@
1
1
  //#region libs/shared/common/src/types/external-action.types.ts
2
2
  var e = /* @__PURE__ */ function(e) {
3
- return e.Transact = "Transact", e.Lifi = "Lifi", e.Okx = "Okx", e.Emporium = "Emporium", e.Wallet = "Wallet", e.DepositOnChainUtxos = "DepositOnChainUtxos", e.ProofLess = "ProofLess", e;
3
+ return e.Transact = "Transact", e.Lifi = "Lifi", e.Okx = "Okx", e.Emporium = "Emporium", e.Wallet = "Wallet", e.DepositOnChainUtxos = "DepositOnChainUtxos", e.ProofLess = "ProofLess", e.ReceiveVaultSettle = "ReceiveVaultSettle", e;
4
4
  }({});
5
5
  //#endregion
6
6
  export { e as ExternalActionId };
@@ -1 +1 @@
1
- require(`./chains.types.cjs`),require(`./hinkal.types.cjs`),require(`./circom-data.types.cjs`),require(`./ethereum-network.types.cjs`),require(`./external-action.types.cjs`),require(`./token.types.cjs`),require(`./transactions.types.cjs`),require(`./admin.types.cjs`),require(`./activities.types.cjs`),require(`./transaction.types.cjs`),require(`./balances.types.cjs`),require(`./cache.types.cjs`),require(`./eip5792.types.cjs`),require(`./offscreen.types.cjs`),require(`./solana.types.cjs`),require(`./events.types.cjs`),require(`./schedule.types.cjs`),require(`./transact.types.cjs`),require(`./solana-transact.types.cjs`);
1
+ require(`./chains.types.cjs`),require(`./hinkal.types.cjs`),require(`./circom-data.types.cjs`),require(`./ethereum-network.types.cjs`),require(`./external-action.types.cjs`),require(`./token.types.cjs`),require(`./transactions.types.cjs`),require(`./admin.types.cjs`),require(`./activities.types.cjs`),require(`./transaction.types.cjs`),require(`./balances.types.cjs`),require(`./cache.types.cjs`),require(`./eip5792.types.cjs`),require(`./offscreen.types.cjs`),require(`./solana.types.cjs`),require(`./events.types.cjs`),require(`./schedule.types.cjs`),require(`./transact.types.cjs`),require(`./solana-transact.types.cjs`),require(`./receive-vault.types.cjs`);
@@ -59,3 +59,4 @@ export * from './enclaveApi.types';
59
59
  export * from './transact.types';
60
60
  export * from './proxy-progress.types';
61
61
  export * from './solana-transact.types';
62
+ export * from './receive-vault.types';
@@ -17,3 +17,4 @@ import "./events.types.mjs";
17
17
  import "./schedule.types.mjs";
18
18
  import "./transact.types.mjs";
19
19
  import "./solana-transact.types.mjs";
20
+ import "./receive-vault.types.mjs";
@@ -0,0 +1 @@
1
+ var e=function(e){return e.Expired=`expired`,e.NotShieldable=`notShieldable`,e.RiskySender=`riskySender`,e}({});exports.ReceiveVaultBlockReason=e;
@@ -0,0 +1,68 @@
1
+ import { StealthAddressStructure } from './circom-data.types';
2
+ import { ERC20Token } from './token.types';
3
+ /** Every field is part of the vault's CREATE2 salt, so the relayer cannot change one and still
4
+ * point at an address that holds anything. */
5
+ export type ReceiveVaultParams<T = bigint> = {
6
+ recipient: StealthAddressStructure<T>;
7
+ owner: string;
8
+ token: string;
9
+ maxFlatFee: T;
10
+ maxVariableRate: number;
11
+ expiry: T;
12
+ };
13
+ /** The terms sit in the salt, so a fresh quote cannot reproduce them: re-deriving a handed-out
14
+ * address needs the ones it was built with. */
15
+ export type ReceiveVaultRecord = {
16
+ index: number;
17
+ chainId: number;
18
+ token: string;
19
+ maxFlatFee: string;
20
+ maxVariableRate: number;
21
+ expiry: string;
22
+ vaultAddress: string;
23
+ };
24
+ /** Why a balance sitting in a deposit address is the owner's to recover rather than shieldable. */
25
+ export declare enum ReceiveVaultBlockReason {
26
+ Expired = "expired",
27
+ NotShieldable = "notShieldable",
28
+ RiskySender = "riskySender"
29
+ }
30
+ /** The relayer declining to shield a token is the one thing the owner cannot work out on their own,
31
+ * so it is the only thing recorded. The balance itself is read off chain. */
32
+ export type ReceiveVaultBlock = {
33
+ vaultAddress: string;
34
+ chainId: number;
35
+ token: string;
36
+ };
37
+ export type ReceiveVaultRegistration = {
38
+ vaultAddress: string;
39
+ params: ReceiveVaultParams<string>;
40
+ encryptionKey: string;
41
+ encryptedOutput: string;
42
+ outputSignature: string;
43
+ chainId: number;
44
+ };
45
+ /** Proves control of the shielded account itself, rather than of one deposit address, so the terms
46
+ * needed to re-derive an address can be fetched back after local storage is gone. */
47
+ export type ReceiveVaultAccountProof = {
48
+ accountKey: string;
49
+ deadline: string;
50
+ signature: string;
51
+ };
52
+ /** A deposit address the user has handed out, with its token resolved. */
53
+ export type ReceiveVaultEntry = {
54
+ record: ReceiveVaultRecord;
55
+ token: ERC20Token;
56
+ expiresAt: Date;
57
+ };
58
+ /** A balance the relayer declined to shield, sitting in a vault only its owner can derive. */
59
+ export type ReceiveVaultBlockedFund = {
60
+ record: ReceiveVaultRecord;
61
+ token: ERC20Token;
62
+ amount: bigint;
63
+ reason: ReceiveVaultBlockReason;
64
+ };
65
+ export type ReceiveVaultAccount = {
66
+ entries: ReceiveVaultEntry[];
67
+ blockedFunds: ReceiveVaultBlockedFund[];
68
+ };
@@ -0,0 +1,6 @@
1
+ //#region libs/shared/common/src/types/receive-vault.types.ts
2
+ var e = /* @__PURE__ */ function(e) {
3
+ return e.Expired = "expired", e.NotShieldable = "notShieldable", e.RiskySender = "riskySender", e;
4
+ }({});
5
+ //#endregion
6
+ export { e as ReceiveVaultBlockReason };
@@ -111,6 +111,9 @@ export interface PrepareTxParams extends PrepareTxBase {
111
111
  selfOutputAmounts?: bigint[];
112
112
  messageSeed?: bigint;
113
113
  slippageValues?: bigint[];
114
+ /** Makes the enclave take the recipient's encryption key from the vault's sealed registration
115
+ * rather than from recipientAddress, so a relayer cannot address the note to its own key. */
116
+ receiveVaultAddress?: string;
114
117
  }
115
118
  export interface PrepareTxRequestType extends PrepareTxBase {
116
119
  amountChanges: string[];
@@ -120,6 +123,7 @@ export interface PrepareTxRequestType extends PrepareTxBase {
120
123
  nullifyingKey: string;
121
124
  spendingPublicKey: [string, string];
122
125
  slippageValues?: string[];
126
+ receiveVaultAddress?: string;
123
127
  }
124
128
  export interface EchoedPrepareTxRequestType {
125
129
  chainId: string;
@@ -148,6 +152,7 @@ export interface EchoedPrepareTxRequestType {
148
152
  skipLock: boolean;
149
153
  speculative?: SpeculativeTreeParams;
150
154
  slippageValues: string[] | null;
155
+ receiveVaultAddress?: string;
151
156
  }
152
157
  export interface EstimateNullifiersParams {
153
158
  chainId: number;
@@ -1,2 +1,2 @@
1
- const e=require(`./workerProxy-BHzCZ9HT.js`);let t=require(`buffer`),n=require(`process`);n=e.c(n);let r=require(`circomlibjs-hinkal-fork`),i=require(`ethers`),a=require(`libsodium-wrappers`);a=e.c(a);let o=require(`@solana/web3.js`),s=require(`bs58`);s=e.c(s);let c=require(`tweetnacl`);c=e.c(c);let l=require(`tronweb`);var u=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?`bigint:${t.toString()}`:t),d=e=>JSON.parse(e,(e,t)=>typeof t==`string`&&t.startsWith(`bigint:`)?BigInt(t.slice(7)):t),f=new class{babyjub=void 0;async init(){this.babyjub||=e.o?(0,r.buildBabyJubRN)():await(0,r.buildBabyjub)()}getJub(){return this.babyjub}},p=()=>f.getJub(),m=new class{eddsa=void 0;async init(){this.eddsa||=e.o?await(0,r.buildEddsaRN)():await(0,r.buildEddsa)()}getEddsa(){return this.eddsa}},h=()=>m.getEddsa();function g(e){return typeof e==`object`&&`toBigInt`in e?e.toBigInt():BigInt(e)}var _=new class{poseidon=void 0;async init(){this.poseidon||=e.o?(0,r.buildPoseidonRN)():await(0,r.buildPoseidon)()}getPoseidon(){return this.poseidon}};function v(...e){let t=_.getPoseidon();return g(t.F.toString(t(e)))}var y=(...e)=>{let t=_.getPoseidon();return i.ethers.toBeHex(t.F.toString(t([...e])))},b=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=t.Buffer,globalThis.process=n.default),await Promise.all([a.default.ready,_.init(),f.init(),...e?[]:[m.init()]])};`${`00`.repeat(20)}`;var x=21888242871839275222246405745257275088548364400416034343698204186575808495617n,S=x/2n,C=2n**250n,w=200n,T=class{inMemoryCache=new Map;constructor(e){e&&this.mergeWithSerialized(e)}getInMemory(e){return this.inMemoryCache.get(e)??void 0}setInMemory(e,t){this.inMemoryCache.set(e,t)}deleteInMemory(e){this.inMemoryCache.delete(e)}mergeWithSerialized(e){Object.entries(e).forEach(([e,t])=>{this.set(e,d(t))})}},E=class extends T{isAttached=!1;get(e){return this.getInMemory(e)}set(e,t){this.setInMemory(e,t)}serialize(){return Object.fromEntries([...this.inMemoryCache].map(([e,t])=>[e,u(t)]))}attach(e){if(this.isAttached)throw Error(`can't reattach cache device`);return this.isAttached=!0,(...t)=>{let n=u(t),r=this.get(n);if(r!==void 0)return r;let i=e(...t);return this.set(n,i),i}}},D=e=>{if(e<0n||e>=21888242871839275222246405745257275088548364400416034343698204186575808495617n)throw RangeError();return e>S},O=e=>D(e)?1n:0n,k=new E,A=class{signature;nullifyingKey;PREFIX_FOR_SPENDING_PAIR=`1`;constructor(e,t){this.signature=e,this.nullifyingKey=t}getSignature(){return this.requireSignature(),this.signature}hasSignature(){return!!this.signature}setSignature(e){this.signature=e}requireSignature(){if(!this.signature)throw Error(`No signature provided`)}requireKeyMaterial(){if(!this.signature&&!this.nullifyingKey)throw Error(`No signature or private key provided`)}verifyTronMessage(e,t){return this.requireSignature(),t===l.Trx.verifyMessageV2(e,this.signature)}getShieldedPrivateKey=()=>{if(this.requireKeyMaterial(),!this.nullifyingKey){let e=BigInt(y(this.signature));this.nullifyingKey=i.ethers.toBeHex(e%C)}return this.nullifyingKey};getShieldedPrivateKeySeed=()=>i.ethers.keccak256(this.getShieldedPrivateKey());getShieldedPublicKey=()=>(this.requireKeyMaterial(),y(this.getShieldedPrivateKey()));getSpendingKeyPair=()=>{this.requireSignature();let e=h(),t=p(),n=y(this.PREFIX_FOR_SPENDING_PAIR,this.getSignature()),r=Buffer.from(i.ethers.getBytes(n)),a=e.prv2pub(r);return{privSpendingKey:n,pubSpendingBJJPoint:[BigInt(t.F.toString(a[0])),BigInt(t.F.toString(a[1]))]}};signEddsa=e=>{this.requireSignature();let t=p(),n=h(),r=Buffer.from(i.ethers.getBytes(this.getSpendingKeyPair().privSpendingKey)),a=t.F.e(e),o=n.signPoseidon(r,a);return{R8:[BigInt(t.F.toString(o.R8[0])),BigInt(t.F.toString(o.R8[1]))],S:BigInt(o.S)}};getShieldedPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(`hinkal-offchain-shielded-key:${t}`))};getClaimableSignatureFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(`hinkal-claimable-utxo-signature:${t}`))};getNearIntentsAccountId=()=>{this.requireKeyMaterial();let e=o.Keypair.fromSeed(i.ethers.getBytes(this.getShieldedPrivateKeySeed()));return i.ethers.hexlify(e.publicKey.toBytes()).slice(2)};getNearIntentsKeyPairString=()=>{this.requireKeyMaterial();let e=o.Keypair.fromSeed(i.ethers.getBytes(this.getShieldedPrivateKeySeed()));return`ed25519:${s.default.encode(e.secretKey)}`};getSignerPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(t))};getSignerSolanaPrivateKeyFromNonce=e=>{let t=this.getSignerPrivateKeyFromNonce(e),n=i.ethers.getBytes(t),r=o.Keypair.fromSeed(n);return s.default.encode(r.secretKey)};verifyMessage(e){return this.requireSignature(),i.ethers.verifyMessage(e,this.signature)}verifySolanaMessage(e,t){this.requireSignature();let n=new TextEncoder().encode(e),r=i.ethers.getBytes(this.signature),a=new o.PublicKey(t).toBytes();return c.default.sign.detached.verify(n,r,a)}static getRandomizedStealthPair=k.attach((e,t)=>{let n=p(),r=n.mulPointEscalar(n.Base8,e),i=n.mulPointEscalar(r,BigInt(t));return{H0:[BigInt(n.F.toString(r[0])),BigInt(n.F.toString(r[1]))],H1:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))]}});static getH1FromH0=(e,t)=>{let n=p(),r=[n.F.e(e[0]),n.F.e(e[1])],i=n.mulPointEscalar(r,BigInt(t));return[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))]};static verifyStealthPair=(e,t,n,r=!0)=>{let i=this.getH1FromH0(e,n);return r?i[1]===t[1]:i===t};static getStealthAddress=(e,t,n)=>{if(n?.length!==2)throw Error(`Spending public key must be an array of 2 elements`);let r=this.getH1FromH0(e,t);return y(2n*O(e[0])+O(r[0]),e[1],r[1],n[0],n[1],t)};static findCorrectRandomization(e,t){if(!t)throw Error(`No Private Shielded Key Provided`);let n=BigInt(t),r,i,a=0n;do r=e*10n**a%x,i=r*n%x,a+=1n;while(i>=2n**250n||r>=2n**250n);return r}static getH0FromRandomization=e=>{let t=p(),n=t.mulPointEscalar(t.Base8,e);return[BigInt(t.F.toString(n[0])),BigInt(t.F.toString(n[1]))]};static findH0(e,t){if(!t)return;let{H0:n}=this.getRandomizedStealthPair(e,t);return n}static getEncryptionKeyPair=e=>{let t=a.default.crypto_box_seed_keypair(i.ethers.getBytes(i.ethers.keccak256(e)));return{privateKey:i.ethers.hexlify(t.privateKey),publicKey:i.ethers.hexlify(t.publicKey)}};getAccessKey=()=>(this.requireKeyMaterial(),y(this.getShieldedPrivateKey(),this.getShieldedPublicKey()));getBackendToken=()=>(this.requireKeyMaterial(),y(this.getAccessKey(),this.getShieldedPublicKey()))},j={WC_NO_MATCHING_KEY:`creating the transaction failed
1
+ const e=require(`./workerProxy-DF35H7vU.js`);let t=require(`buffer`),n=require(`process`);n=e.c(n);let r=require(`circomlibjs-hinkal-fork`),i=require(`ethers`),a=require(`libsodium-wrappers`);a=e.c(a);let o=require(`@solana/web3.js`),s=require(`bs58`);s=e.c(s);let c=require(`tweetnacl`);c=e.c(c);let l=require(`tronweb`);var u=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?`bigint:${t.toString()}`:t),d=e=>JSON.parse(e,(e,t)=>typeof t==`string`&&t.startsWith(`bigint:`)?BigInt(t.slice(7)):t),f=new class{babyjub=void 0;async init(){this.babyjub||=e.o?(0,r.buildBabyJubRN)():await(0,r.buildBabyjub)()}getJub(){return this.babyjub}},p=()=>f.getJub(),m=new class{eddsa=void 0;async init(){this.eddsa||=e.o?await(0,r.buildEddsaRN)():await(0,r.buildEddsa)()}getEddsa(){return this.eddsa}},h=()=>m.getEddsa();function g(e){return typeof e==`object`&&`toBigInt`in e?e.toBigInt():BigInt(e)}var _=new class{poseidon=void 0;async init(){this.poseidon||=e.o?(0,r.buildPoseidonRN)():await(0,r.buildPoseidon)()}getPoseidon(){return this.poseidon}};function v(...e){let t=_.getPoseidon();return g(t.F.toString(t(e)))}var y=(...e)=>{let t=_.getPoseidon();return i.ethers.toBeHex(t.F.toString(t([...e])))},b=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=t.Buffer,globalThis.process=n.default),await Promise.all([a.default.ready,_.init(),f.init(),...e?[]:[m.init()]])};`${`00`.repeat(20)}`;var x=21888242871839275222246405745257275088548364400416034343698204186575808495617n,S=x/2n,C=2n**250n,w=200n,T=class{inMemoryCache=new Map;constructor(e){e&&this.mergeWithSerialized(e)}getInMemory(e){return this.inMemoryCache.get(e)??void 0}setInMemory(e,t){this.inMemoryCache.set(e,t)}deleteInMemory(e){this.inMemoryCache.delete(e)}mergeWithSerialized(e){Object.entries(e).forEach(([e,t])=>{this.set(e,d(t))})}},E=class extends T{isAttached=!1;get(e){return this.getInMemory(e)}set(e,t){this.setInMemory(e,t)}serialize(){return Object.fromEntries([...this.inMemoryCache].map(([e,t])=>[e,u(t)]))}attach(e){if(this.isAttached)throw Error(`can't reattach cache device`);return this.isAttached=!0,(...t)=>{let n=u(t),r=this.get(n);if(r!==void 0)return r;let i=e(...t);return this.set(n,i),i}}},D=e=>{if(e<0n||e>=21888242871839275222246405745257275088548364400416034343698204186575808495617n)throw RangeError();return e>S},O=e=>D(e)?1n:0n,k=new E,A=class{signature;nullifyingKey;PREFIX_FOR_SPENDING_PAIR=`1`;constructor(e,t){this.signature=e,this.nullifyingKey=t}getSignature(){return this.requireSignature(),this.signature}hasSignature(){return!!this.signature}setSignature(e){this.signature=e}requireSignature(){if(!this.signature)throw Error(`No signature provided`)}requireKeyMaterial(){if(!this.signature&&!this.nullifyingKey)throw Error(`No signature or private key provided`)}verifyTronMessage(e,t){return this.requireSignature(),t===l.Trx.verifyMessageV2(e,this.signature)}getShieldedPrivateKey=()=>{if(this.requireKeyMaterial(),!this.nullifyingKey){let e=BigInt(y(this.signature));this.nullifyingKey=i.ethers.toBeHex(e%C)}return this.nullifyingKey};getShieldedPrivateKeySeed=()=>i.ethers.keccak256(this.getShieldedPrivateKey());getShieldedPublicKey=()=>(this.requireKeyMaterial(),y(this.getShieldedPrivateKey()));getSpendingKeyPair=()=>{this.requireSignature();let e=h(),t=p(),n=y(this.PREFIX_FOR_SPENDING_PAIR,this.getSignature()),r=Buffer.from(i.ethers.getBytes(n)),a=e.prv2pub(r);return{privSpendingKey:n,pubSpendingBJJPoint:[BigInt(t.F.toString(a[0])),BigInt(t.F.toString(a[1]))]}};signEddsa=e=>{this.requireSignature();let t=p(),n=h(),r=Buffer.from(i.ethers.getBytes(this.getSpendingKeyPair().privSpendingKey)),a=t.F.e(e),o=n.signPoseidon(r,a);return{R8:[BigInt(t.F.toString(o.R8[0])),BigInt(t.F.toString(o.R8[1]))],S:BigInt(o.S)}};getShieldedPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(`hinkal-offchain-shielded-key:${t}`))};getClaimableSignatureFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(`hinkal-claimable-utxo-signature:${t}`))};getNearIntentsAccountId=()=>{this.requireKeyMaterial();let e=o.Keypair.fromSeed(i.ethers.getBytes(this.getShieldedPrivateKeySeed()));return i.ethers.hexlify(e.publicKey.toBytes()).slice(2)};getNearIntentsKeyPairString=()=>{this.requireKeyMaterial();let e=o.Keypair.fromSeed(i.ethers.getBytes(this.getShieldedPrivateKeySeed()));return`ed25519:${s.default.encode(e.secretKey)}`};getSignerPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=y(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return i.ethers.keccak256(i.ethers.toUtf8Bytes(t))};getSignerSolanaPrivateKeyFromNonce=e=>{let t=this.getSignerPrivateKeyFromNonce(e),n=i.ethers.getBytes(t),r=o.Keypair.fromSeed(n);return s.default.encode(r.secretKey)};verifyMessage(e){return this.requireSignature(),i.ethers.verifyMessage(e,this.signature)}verifySolanaMessage(e,t){this.requireSignature();let n=new TextEncoder().encode(e),r=i.ethers.getBytes(this.signature),a=new o.PublicKey(t).toBytes();return c.default.sign.detached.verify(n,r,a)}static getRandomizedStealthPair=k.attach((e,t)=>{let n=p(),r=n.mulPointEscalar(n.Base8,e),i=n.mulPointEscalar(r,BigInt(t));return{H0:[BigInt(n.F.toString(r[0])),BigInt(n.F.toString(r[1]))],H1:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))]}});static getH1FromH0=(e,t)=>{let n=p(),r=[n.F.e(e[0]),n.F.e(e[1])],i=n.mulPointEscalar(r,BigInt(t));return[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))]};static verifyStealthPair=(e,t,n,r=!0)=>{let i=this.getH1FromH0(e,n);return r?i[1]===t[1]:i===t};static getStealthAddress=(e,t,n)=>{if(n?.length!==2)throw Error(`Spending public key must be an array of 2 elements`);let r=this.getH1FromH0(e,t);return y(2n*O(e[0])+O(r[0]),e[1],r[1],n[0],n[1],t)};static findCorrectRandomization(e,t){if(!t)throw Error(`No Private Shielded Key Provided`);let n=BigInt(t),r,i,a=0n;do r=e*10n**a%x,i=r*n%x,a+=1n;while(i>=2n**250n||r>=2n**250n);return r}static getH0FromRandomization=e=>{let t=p(),n=t.mulPointEscalar(t.Base8,e);return[BigInt(t.F.toString(n[0])),BigInt(t.F.toString(n[1]))]};static findH0(e,t){if(!t)return;let{H0:n}=this.getRandomizedStealthPair(e,t);return n}static getEncryptionKeyPair=e=>{let t=a.default.crypto_box_seed_keypair(i.ethers.getBytes(i.ethers.keccak256(e)));return{privateKey:i.ethers.hexlify(t.privateKey),publicKey:i.ethers.hexlify(t.publicKey)}};getAccessKey=()=>(this.requireKeyMaterial(),y(this.getShieldedPrivateKey(),this.getShieldedPublicKey()));getBackendToken=()=>(this.requireKeyMaterial(),y(this.getAccessKey(),this.getShieldedPublicKey()))},j={WC_NO_MATCHING_KEY:`creating the transaction failed
2
2
  version`,CONNECTION_PROBLEM:`Failed to connect wallet. Please try again.`,REQUEST_PENDING:`request of type 'wallet_requestpermissions' already pending for origin`},M={INSUFFICIENT_FUNDS:`Insufficient funds`,INSUFFICIENT_FUNDS_WITHDRAW:`Not enough funds to withdraw`,INSUFFICIENT_FUNDS_TRANSFER:`Not enough funds to transfer`,INSUFFICIENT_FUNDS_TO_TRANSACT:`Not enough funds to transact`,INSUFFICIENT_FUNDS_GAS:`Insufficient funds for gas * price`,INSUFFICIENT_TRON_BALANCE_FOR_FEE:`Insufficient TRX balance to cover transfer amount and transaction fee reserve`,INSUFFICIENT_SOL_BALANCE:`Insufficient SOL balance`},N={GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT:`Skipped shielding due to gas fee exceeding your limit.`,AUTO_SHIELD_INSUFFICIENT_GAS:`Auto-Shield skipped due to insufficient gas.`};({...j,...M,...N});var P=e=>BigInt(i.ethers.hexlify(i.ethers.randomBytes(e))),F=()=>Math.floor(Date.now()/1e3),I=class t{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;constructor({amount:e,erc20TokenAddress:t,mintAddress:n,timeStamp:r,nullifyingKey:i,spendingPublicKey:a,randomization:o,H0:s,stealthAddress:c,encryptionKey:l,commitment:u=void 0,nullifier:d=void 0,isBlocked:f=!1}){if(this.amount=e,this.erc20TokenAddress=t,this.mintAddress=n,this.timeStamp=r??F().toString(),this.nullifyingKey=i,this.spendingPublicKey=a,this.stealthAddress=c,this.encryptionKey=l,this.commitment=u,this.nullifier=d,this.isBlocked=f,s!==void 0)this.H0=s;else{let e=o??(i?A.findCorrectRandomization(P(31),i):void 0);if(this.H0=e?A.findH0(e,i):void 0,!this.H0)throw Error(`UTXO requires H0 or nullifyingKey`)}}static createFrom(e,n){return new t({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...n})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,H0:this.H0}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,H0:this.H0}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=y(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),t=y(this.nullifyingKey,e);this.nullifier=y(e,t)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=A.getStealthAddress(this.H0,this.nullifyingKey,this.spendingPublicKey)}return this.stealthAddress}getTokenAddress(t){let n=e.r(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return A.getEncryptionKeyPair(this.nullifyingKey).publicKey}},L=()=>a.default.crypto_box_SEALBYTES+a.default.crypto_secretbox_KEYBYTES,R=e=>{let t=a.default.crypto_secretbox_NONCEBYTES,n=L(),r=0,i=e[r];r+=1;let o=e.slice(r,r+t);r+=t;let s=[];for(let t=0;t<i;t+=1)s.push(e.slice(r,r+n)),r+=n;return{nonce:o,sealedKeys:s,ciphertext:e.slice(r)}},z=(e,t,n,r)=>{let{nonce:o,sealedKeys:s,ciphertext:c}=R(e),l=a.default.crypto_box_seal_open(s[r],i.ethers.getBytes(n),i.ethers.getBytes(t)),u=a.default.crypto_secretbox_open_easy(c,o,l);return Buffer.from(u)},B=(e,t)=>{let{privateKey:n,publicKey:r}=A.getEncryptionKeyPair(t.getShieldedPrivateKey()),i=z(e,n,r,0),a=Buffer.from(i).toString(`utf-8`).split(`0x`).filter(e=>e.length!==0),s=e=>BigInt(`0x${e}`),c=e=>`0x${e}`,l=a[7]?c(a[7]):void 0,u=l?new o.PublicKey(Buffer.from(l.slice(2),`hex`)).toString():void 0;return{amount:s(a[0]),erc20TokenAddress:c(a[1]),stealthAddress:c(a[2]),nullifyingKey:t.getShieldedPrivateKey(),timeStamp:s(a[3]).toString(),H0:[s(a[4]),s(a[5])],mintAddress:u}},V=(e,t)=>new I(B(e,t)),H=(...t)=>{e.a&&console.log(...t)};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return y}});