@hinkal/common 0.3.11 → 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 (200) hide show
  1. package/README.md +13 -13
  2. package/common/src/API/API.cjs +1 -1
  3. package/common/src/API/API.d.ts +3 -0
  4. package/common/src/API/API.mjs +5 -2
  5. package/common/src/API/evm-token-assets.cjs +1 -0
  6. package/common/src/API/evm-token-assets.mjs +14 -0
  7. package/common/src/API/index.cjs +1 -1
  8. package/common/src/API/index.d.ts +1 -0
  9. package/common/src/API/index.mjs +1 -0
  10. package/common/src/API/receiveVaultCalls.cjs +1 -0
  11. package/common/src/API/receiveVaultCalls.d.ts +10 -0
  12. package/common/src/API/receiveVaultCalls.mjs +32 -0
  13. package/common/src/constants/contracts.constants.cjs +1 -1
  14. package/common/src/constants/contracts.constants.mjs +5 -1
  15. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.cjs +1 -1
  16. package/common/src/constants/deploy-data/deploy-data-arbMainnet.json.mjs +2 -1
  17. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.cjs +1 -1
  18. package/common/src/constants/deploy-data/deploy-data-arcTestnet.json.mjs +2 -1
  19. package/common/src/constants/deploy-data/deploy-data-base.json.cjs +1 -1
  20. package/common/src/constants/deploy-data/deploy-data-base.json.mjs +2 -1
  21. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.cjs +1 -1
  22. package/common/src/constants/deploy-data/deploy-data-bnbMainnet.json.mjs +2 -1
  23. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.cjs +1 -1
  24. package/common/src/constants/deploy-data/deploy-data-ethMainnet.json.mjs +2 -1
  25. package/common/src/constants/deploy-data/deploy-data-localhost.json.cjs +1 -1
  26. package/common/src/constants/deploy-data/deploy-data-localhost.json.mjs +2 -1
  27. package/common/src/constants/deploy-data/deploy-data-optimism.json.cjs +1 -1
  28. package/common/src/constants/deploy-data/deploy-data-optimism.json.mjs +2 -1
  29. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.cjs +1 -1
  30. package/common/src/constants/deploy-data/deploy-data-optimismTest.json.mjs +2 -1
  31. package/common/src/constants/deploy-data/deploy-data-polygon.json.cjs +1 -1
  32. package/common/src/constants/deploy-data/deploy-data-polygon.json.mjs +2 -1
  33. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.cjs +1 -1
  34. package/common/src/constants/deploy-data/deploy-data-sepoliaTestnet.json.mjs +2 -1
  35. package/common/src/constants/deploy-data/deploy-data-tempo.json.cjs +1 -1
  36. package/common/src/constants/deploy-data/deploy-data-tempo.json.mjs +2 -1
  37. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.cjs +1 -1
  38. package/common/src/constants/deploy-data/deploy-data-tronMainnet.json.mjs +2 -1
  39. package/common/src/constants/deploy-data/deploy-data-tronNile.json.cjs +1 -1
  40. package/common/src/constants/deploy-data/deploy-data-tronNile.json.mjs +2 -1
  41. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.cjs +1 -1
  42. package/common/src/constants/deploy-data/shared-deploy-data-evm.json.mjs +2 -1
  43. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.cjs +1 -1
  44. package/common/src/constants/deploy-data/shared-deploy-data-tron.json.mjs +3 -2
  45. package/common/src/constants/events.constants.d.ts +1 -0
  46. package/common/src/constants/protocol.constants.cjs +1 -1
  47. package/common/src/constants/protocol.constants.d.ts +6 -0
  48. package/common/src/constants/protocol.constants.mjs +2 -2
  49. package/common/src/constants/server.constants.cjs +1 -1
  50. package/common/src/constants/server.constants.d.ts +5 -0
  51. package/common/src/constants/server.constants.mjs +5 -0
  52. package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
  53. package/common/src/data-structures/Hinkal/Hinkal.d.ts +6 -2
  54. package/common/src/data-structures/Hinkal/Hinkal.mjs +62 -50
  55. package/common/src/data-structures/Hinkal/IHinkal.d.ts +6 -2
  56. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  57. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +10 -10
  58. package/common/src/data-structures/Hinkal/hinkalActionReceive.cjs +1 -1
  59. package/common/src/data-structures/Hinkal/hinkalActionReceive.mjs +4 -4
  60. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.cjs +1 -1
  61. package/common/src/data-structures/Hinkal/hinkalBridgePrivateToPrivate.mjs +24 -24
  62. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  63. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +33 -33
  64. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  65. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +8 -8
  66. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  67. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.d.ts +1 -1
  68. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +22 -22
  69. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.cjs +1 -1
  70. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.utils.mjs +8 -8
  71. package/common/src/data-structures/Hinkal/hinkalProxySwap.cjs +1 -1
  72. package/common/src/data-structures/Hinkal/hinkalProxySwap.mjs +5 -5
  73. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.cjs +1 -1
  74. package/common/src/data-structures/Hinkal/hinkalProxyToPrivate.mjs +4 -4
  75. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.cjs +1 -0
  76. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.d.ts +3 -0
  77. package/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.mjs +20 -0
  78. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.cjs +1 -0
  79. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.d.ts +3 -0
  80. package/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.mjs +33 -0
  81. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.cjs +1 -0
  82. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.d.ts +5 -0
  83. package/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.mjs +59 -0
  84. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.cjs +1 -0
  85. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.d.ts +6 -0
  86. package/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.mjs +8 -0
  87. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  88. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.d.ts +2 -2
  89. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +61 -49
  90. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  91. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +7 -7
  92. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  93. package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +8 -8
  94. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  95. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.d.ts +1 -1
  96. package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +55 -40
  97. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  98. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
  99. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  100. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
  101. package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
  102. package/common/src/data-structures/Hinkal/hinkalTransact.mjs +7 -6
  103. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  104. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +4 -4
  105. package/common/src/data-structures/Hinkal/index.d.ts +4 -0
  106. package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.d.ts +0 -3
  107. package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.d.ts +0 -1
  108. package/common/src/data-structures/TokenDBs/TronPublicTokensDB.d.ts +0 -2
  109. package/common/src/data-structures/crypto-keys/index.cjs +1 -1
  110. package/common/src/data-structures/crypto-keys/index.mjs +1 -1
  111. package/common/src/error-handling/error-codes.constants.cjs +1 -1
  112. package/common/src/error-handling/error-codes.constants.d.ts +4 -0
  113. package/common/src/error-handling/error-codes.constants.mjs +5 -2
  114. package/common/src/error-handling/get-error.message.cjs +1 -1
  115. package/common/src/error-handling/get-error.message.mjs +50 -49
  116. package/common/src/functions/index.cjs +1 -1
  117. package/common/src/functions/index.mjs +2 -1
  118. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.cjs +1 -0
  119. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.d.ts +4 -0
  120. package/common/src/functions/pre-transaction/build-proofless-deposit-fee.mjs +3 -0
  121. package/common/src/functions/pre-transaction/index.cjs +1 -1
  122. package/common/src/functions/pre-transaction/index.d.ts +1 -0
  123. package/common/src/functions/pre-transaction/index.mjs +1 -0
  124. package/common/src/functions/snarkjs/constructTxEnclaveVerify.cjs +1 -1
  125. package/common/src/functions/snarkjs/constructTxEnclaveVerify.mjs +2 -1
  126. package/common/src/functions/utils/abi.utils.cjs +1 -1
  127. package/common/src/functions/utils/abi.utils.mjs +4 -1
  128. package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
  129. package/common/src/functions/utils/encryptInputForEnclave.d.ts +2 -1
  130. package/common/src/functions/utils/encryptInputForEnclave.mjs +1 -1
  131. package/common/src/functions/utils/erc20tokenFunctions.cjs +1 -1
  132. package/common/src/functions/utils/erc20tokenFunctions.mjs +11 -11
  133. package/common/src/functions/utils/fees.utils.cjs +1 -1
  134. package/common/src/functions/utils/fees.utils.mjs +1 -1
  135. package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
  136. package/common/src/functions/utils/getSignerFromContract.d.ts +1 -1
  137. package/common/src/functions/utils/getSignerFromContract.mjs +2 -2
  138. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  139. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  140. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  141. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +1 -1
  142. package/common/src/functions/utils/index.cjs +1 -1
  143. package/common/src/functions/utils/index.d.ts +1 -0
  144. package/common/src/functions/utils/index.mjs +2 -1
  145. package/common/src/functions/utils/isSigner.cjs +1 -0
  146. package/common/src/functions/utils/isSigner.d.ts +2 -0
  147. package/common/src/functions/utils/isSigner.mjs +7 -0
  148. package/common/src/functions/utils/receive-vault-account.utils.cjs +1 -0
  149. package/common/src/functions/utils/receive-vault-account.utils.d.ts +8 -0
  150. package/common/src/functions/utils/receive-vault-account.utils.mjs +23 -0
  151. package/common/src/functions/utils/receive-vault-scan.utils.cjs +1 -0
  152. package/common/src/functions/utils/receive-vault-scan.utils.d.ts +2 -0
  153. package/common/src/functions/utils/receive-vault-scan.utils.mjs +60 -0
  154. package/common/src/functions/utils/receive-vault.utils.cjs +2 -0
  155. package/common/src/functions/utils/receive-vault.utils.d.ts +29 -0
  156. package/common/src/functions/utils/receive-vault.utils.mjs +151 -0
  157. package/common/src/functions/utils/string.utils.cjs +1 -1
  158. package/common/src/functions/utils/string.utils.mjs +12 -4
  159. package/common/src/functions/utils/temporary-wallet-recovery.utils.cjs +1 -1
  160. package/common/src/functions/utils/temporary-wallet-recovery.utils.mjs +1 -1
  161. package/common/src/functions/utils/transfer-claimable.utils.cjs +1 -1
  162. package/common/src/functions/utils/transfer-claimable.utils.mjs +1 -1
  163. package/common/src/functions/utils/wallet-token-discovery.utils.cjs +1 -0
  164. package/common/src/functions/utils/wallet-token-discovery.utils.d.ts +4 -0
  165. package/common/src/functions/utils/wallet-token-discovery.utils.mjs +36 -0
  166. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  167. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +11 -11
  168. package/common/src/types/ethereum-network.types.cjs +1 -1
  169. package/common/src/types/ethereum-network.types.d.ts +4 -1
  170. package/common/src/types/ethereum-network.types.mjs +1 -1
  171. package/common/src/types/external-action.types.cjs +1 -1
  172. package/common/src/types/external-action.types.d.ts +2 -1
  173. package/common/src/types/external-action.types.mjs +1 -1
  174. package/common/src/types/index.cjs +1 -1
  175. package/common/src/types/index.d.ts +1 -0
  176. package/common/src/types/index.mjs +1 -0
  177. package/common/src/types/receive-vault.types.cjs +1 -0
  178. package/common/src/types/receive-vault.types.d.ts +68 -0
  179. package/common/src/types/receive-vault.types.mjs +6 -0
  180. package/common/src/types/remote-tx-build.types.d.ts +5 -0
  181. package/common/src/webworker/{logError-cvFNxc-0.js → logError-BeXPKuv9.js} +1 -1
  182. package/common/src/webworker/package.json +10 -1
  183. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  184. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  185. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  186. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  187. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  188. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  189. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  190. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  191. package/common/src/webworker/workerProxy-DF35H7vU.js +1 -0
  192. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  193. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  194. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  195. package/package.json +10 -1
  196. package/services/Hinkal.cjs +1 -1
  197. package/services/Hinkal.d.ts +1 -1
  198. package/services/Hinkal.mjs +2 -2
  199. package/types/IHinkal.d.ts +1 -1
  200. package/common/src/webworker/workerProxy-BHzCZ9HT.js +0 -1
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`./caseInsensitive.utils.cjs`),n=require(`../../error-handling/logger.cjs`),r=require(`./tron.utils.cjs`),i=require(`../../types/receive-vault.types.cjs`),a=require(`./receive-vault.utils.cjs`),o=require(`./erc20tokenFunctions.cjs`),s=require(`./publicBalance.utils.cjs`),c=require(`./wallet-token-discovery.utils.cjs`);var l=async(e,t,n)=>await s.getPublicBalanceByTokenAddress(t,r.addressToHexFormat(e),r.addressToHexFormat(n))??0n,u=t=>e.FRONT_END_SUPPORTED_CHAINS.filter(n=>a.isReceiveVaultSupported(n)&&e.isTronLike(n)===e.isTronLike(t.chainId)),d=async(t,r)=>{try{return await(e.isTronLike(t)?c.getTronWalletTokenAddresses(r,t):c.getEvmWalletTokenAddresses(t,r))}catch(e){return n.Logger.error(`receive-vault scan: token discovery failed for chain ${t}`,e),[]}},f=async(e,n)=>{let r=new Map,o=(e,t,n,i)=>r.set(`${t}:${e.vaultAddress}:${n}`.toLowerCase(),{record:e,chainId:t,token:n,reason:i});return await Promise.all(e.map(async e=>{let n=a.isReceiveVaultExpired(e),r=n?i.ReceiveVaultBlockReason.Expired:i.ReceiveVaultBlockReason.NotShieldable;await Promise.all(u(e).map(async a=>{(await d(a,e.vaultAddress)).forEach(s=>{if(a===e.chainId&&t.caseInsensitiveEqual(s,e.token)){n&&o(e,a,s,i.ReceiveVaultBlockReason.Expired);return}o(e,a,s,r)})}))})),n.forEach(n=>{let r=e.find(e=>t.caseInsensitiveEqual(e.vaultAddress,n.vaultAddress));r&&o(r,n.chainId,n.token,i.ReceiveVaultBlockReason.RiskySender)}),[...r.values()]},p=async(e,t)=>{try{return(await Promise.all((await f(e,t)).map(async e=>{try{let[t,n]=await Promise.all([o.getErc20TokenFromAPI(e.chainId,e.token),l(e.record.vaultAddress,e.chainId,e.token)]);return t&&!o.isArcNativeToken(t)&&n>0n?{record:e.record,token:t,amount:n,reason:e.reason}:void 0}catch(t){n.Logger.error(`receive-vault scan: balance lookup failed for chain ${e.chainId} token ${e.token}`,t);return}}))).filter(e=>!!e)}catch(e){return n.Logger.log(`Error fetching vault's blcoked balances`,e),[]}};exports.getReceiveVaultBlockedFunds=p;
@@ -0,0 +1,2 @@
1
+ import { ReceiveVaultBlock, ReceiveVaultBlockedFund, ReceiveVaultRecord } from '../../types/receive-vault.types';
2
+ export declare const getReceiveVaultBlockedFunds: (records: ReceiveVaultRecord[], blocks: ReceiveVaultBlock[]) => Promise<ReceiveVaultBlockedFund[]>;
@@ -0,0 +1,60 @@
1
+ import { FRONT_END_SUPPORTED_CHAINS as e, isTronLike as t } from "../../constants/chains.constants.mjs";
2
+ import { caseInsensitiveEqual as n } from "./caseInsensitive.utils.mjs";
3
+ import { Logger as r } from "../../error-handling/logger.mjs";
4
+ import { addressToHexFormat as i } from "./tron.utils.mjs";
5
+ import { ReceiveVaultBlockReason as a } from "../../types/receive-vault.types.mjs";
6
+ import { isReceiveVaultExpired as o, isReceiveVaultSupported as s } from "./receive-vault.utils.mjs";
7
+ import { getErc20TokenFromAPI as c, isArcNativeToken as l } from "./erc20tokenFunctions.mjs";
8
+ import { getPublicBalanceByTokenAddress as u } from "./publicBalance.utils.mjs";
9
+ import { getEvmWalletTokenAddresses as d, getTronWalletTokenAddresses as f } from "./wallet-token-discovery.utils.mjs";
10
+ //#region libs/shared/common/src/functions/utils/receive-vault-scan.utils.ts
11
+ var p = async (e, t, n) => await u(t, i(e), i(n)) ?? 0n, m = (n) => e.filter((e) => s(e) && t(e) === t(n.chainId)), h = async (e, n) => {
12
+ try {
13
+ return await (t(e) ? f(n, e) : d(e, n));
14
+ } catch (t) {
15
+ return r.error(`receive-vault scan: token discovery failed for chain ${e}`, t), [];
16
+ }
17
+ }, g = async (e, t) => {
18
+ let r = /* @__PURE__ */ new Map(), i = (e, t, n, i) => r.set(`${t}:${e.vaultAddress}:${n}`.toLowerCase(), {
19
+ record: e,
20
+ chainId: t,
21
+ token: n,
22
+ reason: i
23
+ });
24
+ return await Promise.all(e.map(async (e) => {
25
+ let t = o(e), r = t ? a.Expired : a.NotShieldable;
26
+ await Promise.all(m(e).map(async (o) => {
27
+ (await h(o, e.vaultAddress)).forEach((s) => {
28
+ if (o === e.chainId && n(s, e.token)) {
29
+ t && i(e, o, s, a.Expired);
30
+ return;
31
+ }
32
+ i(e, o, s, r);
33
+ });
34
+ }));
35
+ })), t.forEach((t) => {
36
+ let r = e.find((e) => n(e.vaultAddress, t.vaultAddress));
37
+ r && i(r, t.chainId, t.token, a.RiskySender);
38
+ }), [...r.values()];
39
+ }, _ = async (e, t) => {
40
+ try {
41
+ return (await Promise.all((await g(e, t)).map(async (e) => {
42
+ try {
43
+ let [t, n] = await Promise.all([c(e.chainId, e.token), p(e.record.vaultAddress, e.chainId, e.token)]);
44
+ return t && !l(t) && n > 0n ? {
45
+ record: e.record,
46
+ token: t,
47
+ amount: n,
48
+ reason: e.reason
49
+ } : void 0;
50
+ } catch (t) {
51
+ r.error(`receive-vault scan: balance lookup failed for chain ${e.chainId} token ${e.token}`, t);
52
+ return;
53
+ }
54
+ }))).filter((e) => !!e);
55
+ } catch (e) {
56
+ return r.log("Error fetching vault's blcoked balances", e), [];
57
+ }
58
+ };
59
+ //#endregion
60
+ export { _ as getReceiveVaultBlockedFunds };
@@ -0,0 +1,2 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../data-structures/crypto-keys/keys.cjs`),r=require(`../../data-structures/utxo/Utxo.cjs`),i=require(`./tron.utils.cjs`);require(`../../data-structures/crypto-keys/index.cjs`);let a=require(`ethers`);var o=`HINKAL_RECEIVE_V1`,s=`HINKAL_RECEIVE_RECOVERY_V1`,c=`HINKAL_RECEIVE_RECOVER`,l=`HINKAL_RECEIVE_OUTPUT`,u=`HINKAL_RECEIVE_ACCOUNT_V1`,d=`HINKAL_RECEIVE_VAULT_ACCOUNT`,f=({chainId:e,token:t,index:n})=>`${e}:${i.addressToHexFormat(t).toLowerCase()}:${n}`,p=e=>e*t.RECEIVE_VAULT_FEE_CEILING_MULTIPLIER,m=()=>BigInt(Math.floor(Date.now()/1e3)+t.RECEIVE_VAULT_EXPIRY_SECONDS),h=(e,t)=>{let n=a.ethers.keccak256(a.ethers.toUtf8Bytes(`${s}:${e.getShieldedPrivateKey()}:${f(t)}`));return new a.ethers.Wallet(n)},g=e=>n.UserKeys.getEncryptionKeyPair(e.getShieldedPrivateKey()).publicKey,_=(e,s)=>{let c=e.getShieldedPrivateKey(),l=BigInt(a.ethers.keccak256(a.ethers.toUtf8Bytes(`${o}:${c}:${f(s)}`))),u=new r.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c,randomization:n.UserKeys.findCorrectRandomization(l,c),spendingPublicKey:e.getSpendingKeyPair().pubSpendingBJJPoint}),{H0:d}=u;if(!d)throw Error(`receive vault: H0 is not set`);let p=n.UserKeys.getH1FromH0(d,c);return{recipient:{H0x:d[0],H0y:d[1],H1x:p[0],H1y:p[1],stealthAddress:BigInt(u.getStealthAddress())},owner:h(e,s).address,token:i.addressToHexFormat(s.token),maxFlatFee:BigInt(s.maxFlatFee),maxVariableRate:Number(t.RECEIVE_VAULT_VARIABLE_RATE),expiry:BigInt(s.expiry)}},v=e=>a.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(tuple(uint256,uint256,uint256,uint256,uint256),address,address,uint256,uint16,uint64)`],[[[e.recipient.H0x,e.recipient.H0y,e.recipient.H1x,e.recipient.H1y,e.recipient.stealthAddress],e.owner,e.token,e.maxFlatFee,e.maxVariableRate,e.expiry]]),y=t=>e.isTronLike(t)?`0x41`:`0xff`,b=e=>[[e.recipient.H0x,e.recipient.H0y,e.recipient.H1x,e.recipient.H1y,e.recipient.stealthAddress],e.owner,e.token,e.maxFlatFee,e.maxVariableRate,e.expiry],x=(e,t,n,r)=>a.ethers.getAddress(a.ethers.dataSlice(a.ethers.solidityPackedKeccak256([`bytes1`,`address`,`bytes32`,`bytes32`],[y(r),i.addressToHexFormat(t),a.ethers.keccak256(v(e)),n]),12)),S=t=>e.networkRegistry[t]?.contractData?.receiveVaultFactoryAddress||void 0,C=`0xe5f823a7777291668021ab2734f77bc16b4854c16034051c86967a5eb2415e54`,w=`0xedef7fda070f3ae59616c754f3f10ec4dfe4cb5c531ae39141ab2d323b36e3ec`,T=t=>e.isTronLike(t)?w:C,E=e=>!!S(e),D=(t,n)=>{let r=S(n);if(!r)throw Error(`receive vault: no factory on chain ${n}`);let a=x(t,r,T(n),n);return e.isTronLike(n)?i.evmHexToTronBase58Address(a):a},O=(e,t)=>({...t,vaultAddress:D(_(e,t),t.chainId)}),k=({expiry:e})=>BigInt(e)<BigInt(Math.floor(Date.now()/1e3)),A=e=>({recipient:{H0x:e.recipient.H0x.toString(),H0y:e.recipient.H0y.toString(),H1x:e.recipient.H1x.toString(),H1y:e.recipient.H1y.toString(),stealthAddress:e.recipient.stealthAddress.toString()},owner:e.owner,token:e.token,maxFlatFee:e.maxFlatFee.toString(),maxVariableRate:e.maxVariableRate,expiry:e.expiry.toString()}),j=e=>new a.ethers.Wallet(a.ethers.keccak256(a.ethers.toUtf8Bytes(`${u}:${e.getShieldedPrivateKey()}`))),M=e=>j(e).address,N=(e,t)=>a.ethers.keccak256(a.ethers.solidityPacked([`string`,`address`,`uint256`],[d,e,t])),P=async(e,t)=>{let n=j(e),r=N(n.address,t);return{accountKey:n.address,deadline:t.toString(),signature:await n.signMessage(a.ethers.getBytes(r))}},F=(e,t,n,r)=>a.ethers.keccak256(a.ethers.solidityPacked([`string`,`uint256`,`address`,`address`,`bytes32`],[l,BigInt(e),i.addressToHexFormat(t),i.addressToHexFormat(n),a.ethers.keccak256(r)])),I=async(e,t,n)=>{let r=S(t.chainId);if(!r)throw Error(`receive vault: no factory on chain ${t.chainId}`);let i=F(t.chainId,r,t.vaultAddress,n);return h(e,t).signMessage(a.ethers.getBytes(i))},L=(t,n,r,o,s,l)=>{let u=a.ethers.keccak256(a.ethers.solidityPacked([`string`,`uint256`,`address`,`address`,`address`,`address`,`uint256`],[c,BigInt(t),i.addressToHexFormat(n),i.addressToHexFormat(r),i.addressToHexFormat(o),i.addressToHexFormat(s),l]));return e.isTronLike(t)?a.ethers.keccak256(a.ethers.concat([a.ethers.toUtf8Bytes(`TRON Signed Message:
2
+ 32`),u])):u},R=async(t,n,r,i,o,s)=>{let c=S(i);if(!c)throw Error(`receive vault: no factory on chain ${i}`);let l=L(i,c,n.vaultAddress,r,o,s),u=h(t,n);return e.isTronLike(i)?new a.ethers.SigningKey(u.privateKey).sign(l).serialized:u.signMessage(a.ethers.getBytes(l))};exports.buildReceiveVaultRecord=O,exports.computeReceiveVaultAddress=x,exports.encodeReceiveVaultParams=v,exports.getReceiveVaultAccountKey=M,exports.getReceiveVaultAddress=D,exports.getReceiveVaultEncryptionKey=g,exports.getReceiveVaultExpiry=m,exports.getReceiveVaultFactoryAddress=S,exports.getReceiveVaultFeeCeiling=p,exports.getReceiveVaultInitCodeHash=T,exports.getReceiveVaultOutputDigest=F,exports.getReceiveVaultParams=_,exports.getReceiveVaultRecoveryDigest=L,exports.getReceiveVaultRecoveryWallet=h,exports.isReceiveVaultExpired=k,exports.isReceiveVaultSupported=E,exports.receiveVaultParamsToTuple=b,exports.serializeReceiveVaultParams=A,exports.signReceiveVaultAccount=P,exports.signReceiveVaultOutput=I,exports.signReceiveVaultRecovery=R;
@@ -0,0 +1,29 @@
1
+ import { ethers } from 'ethers';
2
+ import { UserKeys } from '../../data-structures/crypto-keys';
3
+ import { ReceiveVaultAccountProof, ReceiveVaultParams, ReceiveVaultRecord } from '../../types/receive-vault.types';
4
+ export type ReceiveVaultTerms = Omit<ReceiveVaultRecord, 'vaultAddress'>;
5
+ /** A ceiling, not a price: the relayer still charges what the settlement costs. It only has to stay
6
+ * above that while gas moves under an unspent address. */
7
+ export declare const getReceiveVaultFeeCeiling: (quotedFlatFee: bigint) => bigint;
8
+ export declare const getReceiveVaultExpiry: () => bigint;
9
+ export declare const getReceiveVaultRecoveryWallet: (userKeys: UserKeys, terms: ReceiveVaultTerms) => ethers.Wallet;
10
+ export declare const getReceiveVaultEncryptionKey: (userKeys: UserKeys) => string;
11
+ export declare const getReceiveVaultParams: (userKeys: UserKeys, terms: ReceiveVaultTerms) => ReceiveVaultParams;
12
+ export declare const encodeReceiveVaultParams: (params: ReceiveVaultParams) => string;
13
+ export declare const receiveVaultParamsToTuple: (params: ReceiveVaultParams) => (string | number | bigint | bigint[])[];
14
+ export declare const computeReceiveVaultAddress: (params: ReceiveVaultParams, factoryAddress: string, initCodeHash: string, chainId: number) => string;
15
+ export declare const getReceiveVaultFactoryAddress: (chainId: number) => string | undefined;
16
+ export declare const getReceiveVaultInitCodeHash: (chainId: number) => string;
17
+ export declare const isReceiveVaultSupported: (chainId: number) => boolean;
18
+ export declare const getReceiveVaultAddress: (params: ReceiveVaultParams, chainId: number) => string;
19
+ export declare const buildReceiveVaultRecord: (userKeys: UserKeys, terms: ReceiveVaultTerms) => ReceiveVaultRecord;
20
+ export declare const isReceiveVaultExpired: ({ expiry }: ReceiveVaultTerms) => boolean;
21
+ export declare const serializeReceiveVaultParams: (params: ReceiveVaultParams) => ReceiveVaultParams<string>;
22
+ export declare const deserializeReceiveVaultParams: (params: ReceiveVaultParams<string>) => ReceiveVaultParams;
23
+ export declare const getReceiveVaultRecipientInfo: (params: ReceiveVaultParams, encryptionKey: string) => string;
24
+ export declare const getReceiveVaultAccountKey: (userKeys: UserKeys) => string;
25
+ export declare const signReceiveVaultAccount: (userKeys: UserKeys, deadline: bigint) => Promise<ReceiveVaultAccountProof>;
26
+ export declare const getReceiveVaultOutputDigest: (chainId: number, factoryAddress: string, vault: string, encryptedOutput: string) => string;
27
+ export declare const signReceiveVaultOutput: (userKeys: UserKeys, record: ReceiveVaultRecord, encryptedOutput: string) => Promise<string>;
28
+ export declare const getReceiveVaultRecoveryDigest: (chainId: number, factoryAddress: string, vault: string, token: string, to: string, deadline: bigint) => string;
29
+ export declare const signReceiveVaultRecovery: (userKeys: UserKeys, record: ReceiveVaultRecord, token: string, chainId: number, to: string, deadline: bigint) => Promise<string>;
@@ -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 };