@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,20 @@
1
+ import { getErc20TokenFromAPI as e } from "../../functions/utils/erc20tokenFunctions.mjs";
2
+ import { getReceiveVaultAccountSnapshot as t } from "../../functions/utils/receive-vault-account.utils.mjs";
3
+ import { getReceiveVaultBlockedFunds as n } from "../../functions/utils/receive-vault-scan.utils.mjs";
4
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultAccount.ts
5
+ var r = async (r) => {
6
+ let { records: i, blocks: a } = await t(r.userKeys);
7
+ return {
8
+ entries: (await Promise.all(i.map(async (t) => {
9
+ let n = await e(t.chainId, t.token);
10
+ return n ? {
11
+ record: t,
12
+ token: n,
13
+ expiresAt: /* @__PURE__ */ new Date(Number(t.expiry) * 1e3)
14
+ } : void 0;
15
+ }))).filter((e) => !!e).sort((e, t) => t.expiresAt.getTime() - e.expiresAt.getTime()),
16
+ blockedFunds: await n(i, a)
17
+ };
18
+ };
19
+ //#endregion
20
+ export { r as hinkalGetReceiveVaultAccount };
@@ -0,0 +1 @@
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/receive-vault.utils.cjs`),i=require(`../../API/receiveVaultCalls.cjs`),a=require(`../../functions/pre-transaction/getFeeStructure.cjs`),o=require(`../../functions/utils/receive-vault-account.utils.cjs`),s=require(`./hinkalReceiveVaultSettle.cjs`);var c=async(e,t,n,a)=>{let o=r.getReceiveVaultParams(e,a),c=s.buildReceiveVaultEncryptedOutput(o,t);return i.registerReceiveVault(a,o,t,n,c,await r.signReceiveVaultOutput(e,a,c))},l=(e,n,r)=>e.filter(e=>e.chainId===n&&t.caseInsensitiveEqual(e.token,r)).reduce((e,t)=>Math.max(e,t.index+1),0),u=async(t,i,o,s,d,f)=>{let{flatFee:p}=await a.getFeeStructure(i,o,[o],n.ExternalActionId.ReceiveVaultSettle,[],e.RECEIVE_VAULT_VARIABLE_RATE),m=r.getReceiveVaultFeeCeiling(p).toString(),h=r.getReceiveVaultExpiry().toString(),g=r.buildReceiveVaultRecord(t,{index:l(f,i,o),chainId:i,token:o,maxFlatFee:m,maxVariableRate:Number(e.RECEIVE_VAULT_VARIABLE_RATE),expiry:h});return await c(t,s,d,g)?u(t,i,o,s,d,[...f,g]):g},d=(e,n,i)=>e.filter(e=>e.chainId===n&&t.caseInsensitiveEqual(e.token,i)&&!r.isReceiveVaultExpired(e)).sort((e,t)=>t.index-e.index)[0],f=async(e,t,n,i=!1)=>{if(!r.isReceiveVaultSupported(t))throw Error(`receive vault: no factory on chain ${t}`);let{userKeys:a}=e,s=r.getReceiveVaultEncryptionKey(a),l=r.getReceiveVaultAccountKey(a),{records:f}=await o.getReceiveVaultAccountSnapshot(a);if(!i){let e=d(f,t,n);if(e&&!await c(a,s,l,e))return e}return u(a,t,n,s,l,f)};exports.hinkalReceiveVaultCreate=f;
@@ -0,0 +1,3 @@
1
+ import { ReceiveVaultRecord } from '../../types/receive-vault.types';
2
+ import { IHinkal } from './IHinkal';
3
+ export declare const hinkalReceiveVaultCreate: (hinkal: IHinkal, chainId: number, token: string, forceFresh?: boolean) => Promise<ReceiveVaultRecord>;
@@ -0,0 +1,33 @@
1
+ import { RECEIVE_VAULT_VARIABLE_RATE as e } from "../../constants/protocol.constants.mjs";
2
+ import { caseInsensitiveEqual as t } from "../../functions/utils/caseInsensitive.utils.mjs";
3
+ import { ExternalActionId as n } from "../../types/external-action.types.mjs";
4
+ import { buildReceiveVaultRecord as r, getReceiveVaultAccountKey as i, getReceiveVaultEncryptionKey as a, getReceiveVaultExpiry as o, getReceiveVaultFeeCeiling as s, getReceiveVaultParams as c, isReceiveVaultExpired as l, isReceiveVaultSupported as u, signReceiveVaultOutput as d } from "../../functions/utils/receive-vault.utils.mjs";
5
+ import { registerReceiveVault as f } from "../../API/receiveVaultCalls.mjs";
6
+ import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
7
+ import { getReceiveVaultAccountSnapshot as m } from "../../functions/utils/receive-vault-account.utils.mjs";
8
+ import { buildReceiveVaultEncryptedOutput as h } from "./hinkalReceiveVaultSettle.mjs";
9
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultCreate.ts
10
+ var g = async (e, t, n, r) => {
11
+ let i = c(e, r), a = h(i, t);
12
+ return f(r, i, t, n, a, await d(e, r, a));
13
+ }, _ = (e, n, r) => e.filter((e) => e.chainId === n && t(e.token, r)).reduce((e, t) => Math.max(e, t.index + 1), 0), v = async (t, i, a, c, l, u) => {
14
+ let { flatFee: d } = await p(i, a, [a], n.ReceiveVaultSettle, [], e), f = s(d).toString(), m = o().toString(), h = r(t, {
15
+ index: _(u, i, a),
16
+ chainId: i,
17
+ token: a,
18
+ maxFlatFee: f,
19
+ maxVariableRate: Number(e),
20
+ expiry: m
21
+ });
22
+ return await g(t, c, l, h) ? v(t, i, a, c, l, [...u, h]) : h;
23
+ }, y = (e, n, r) => e.filter((e) => e.chainId === n && t(e.token, r) && !l(e)).sort((e, t) => t.index - e.index)[0], b = async (e, t, n, r = !1) => {
24
+ if (!u(t)) throw Error(`receive vault: no factory on chain ${t}`);
25
+ let { userKeys: o } = e, s = a(o), c = i(o), { records: l } = await m(o);
26
+ if (!r) {
27
+ let e = y(l, t, n);
28
+ if (e && !await g(o, s, c, e)) return e;
29
+ }
30
+ return v(o, t, n, s, c, l);
31
+ };
32
+ //#endregion
33
+ export { b as hinkalReceiveVaultCreate };
@@ -0,0 +1 @@
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/tron.utils.cjs`),r=require(`../../types/ethereum-network.types.cjs`),i=require(`../../functions/utils/receive-vault.utils.cjs`),a=require(`../../functions/utils/string.utils.cjs`),o=require(`../../error-handling/get-error.message.cjs`);let s=require(`ethers`);var c={NothingToSettle:`These funds have already been moved out of the receive address.`,RecoveryExpired:`The recovery request expired before it was confirmed. Please try again.`,BadRecoverySignature:`This wallet cannot recover these funds. Reconnect the account that generated the address.`,RecoveryAlreadyUsed:`This recovery was already submitted. Please try again.`},l=e=>{let t=e?.revert?.name;if(t&&c[t])return c[t];let n=JSON.stringify(e??``),r=Object.keys(c).find(e=>n.includes(s.ethers.id(`${e}()`).slice(2,10)));if(r)return c[r];let i=e?.message;return i&&s.ethers.isHexString(`0x${i}`)?a.hexToUtf8(i):e?.shortMessage??o.getErrorMessage(e)},u=async(a,o,s,c,u,d=!1)=>{let f=i.getReceiveVaultFactoryAddress(c);if(!f)throw Error(`receive vault: no factory on chain ${c}`);let p=BigInt(Math.floor(Date.now()/1e3)+900),m=await i.signReceiveVaultRecovery(a.userKeys,o,s,c,u,p),h=[i.receiveVaultParamsToTuple(i.getReceiveVaultParams(a.userKeys,o)),n.addressToHexFormat(s),n.addressToHexFormat(u),p,m];if(e.isTronLike(c)){let{receiveVaultFactoryABI:r}=e.networkRegistry[c].contractData;if(!r)throw Error(`receive vault: no factory ABI on chain ${c}`);let i=a.getTronWeb(),o=n.evmHexToTronBase58Address(f);if(d){let{transaction:e}=await i.transactionBuilder.triggerSmartContract(o,``,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:0,input:n.createTronCallData(r,`recover`,h)},[],await a.getEthereumAddressByChain(c));return e}let s=i.contract(r,o);try{return await s.recover(...h).send({feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN})}catch(e){throw Error(l(e))}}let g=a.getContractWithSigner(c,r.ContractType.ReceiveVaultFactoryContract);try{return d?g.recover.populateTransaction(...h):(await g.recover(...h)).hash}catch(e){throw Error(l(e))}};exports.hinkalReceiveVaultRecover=u;
@@ -0,0 +1,5 @@
1
+ import { ethers } from 'ethers';
2
+ import { Types as TronWebTypes } from 'tronweb';
3
+ import { ReceiveVaultRecord } from '../../types/receive-vault.types';
4
+ import { IHinkal } from './IHinkal';
5
+ export declare const hinkalReceiveVaultRecover: (hinkal: IHinkal, record: ReceiveVaultRecord, token: string, chainId: number, to: string, returnTxData?: boolean) => Promise<string | ethers.TransactionRequest | TronWebTypes.Transaction<TronWebTypes.TriggerSmartContract>>;
@@ -0,0 +1,59 @@
1
+ import { isTronLike as e, networkRegistry as t } from "../../constants/chains.constants.mjs";
2
+ import { TRON_DEFAULT_FEE_LIMIT_SUN as n } from "../../constants/protocol.constants.mjs";
3
+ import { addressToHexFormat as r, createTronCallData as i, evmHexToTronBase58Address as a } from "../../functions/utils/tron.utils.mjs";
4
+ import { ContractType as o } from "../../types/ethereum-network.types.mjs";
5
+ import { getReceiveVaultFactoryAddress as s, getReceiveVaultParams as c, receiveVaultParamsToTuple as l, signReceiveVaultRecovery as u } from "../../functions/utils/receive-vault.utils.mjs";
6
+ import { hexToUtf8 as d } from "../../functions/utils/string.utils.mjs";
7
+ import { getErrorMessage as f } from "../../error-handling/get-error.message.mjs";
8
+ import { ethers as p } from "ethers";
9
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultRecover.ts
10
+ var m = {
11
+ NothingToSettle: "These funds have already been moved out of the receive address.",
12
+ RecoveryExpired: "The recovery request expired before it was confirmed. Please try again.",
13
+ BadRecoverySignature: "This wallet cannot recover these funds. Reconnect the account that generated the address.",
14
+ RecoveryAlreadyUsed: "This recovery was already submitted. Please try again."
15
+ }, h = (e) => {
16
+ let t = e?.revert?.name;
17
+ if (t && m[t]) return m[t];
18
+ let n = JSON.stringify(e ?? ""), r = Object.keys(m).find((e) => n.includes(p.id(`${e}()`).slice(2, 10)));
19
+ if (r) return m[r];
20
+ let i = e?.message;
21
+ return i && p.isHexString(`0x${i}`) ? d(i) : e?.shortMessage ?? f(e);
22
+ }, g = async (d, f, p, m, g, _ = !1) => {
23
+ let v = s(m);
24
+ if (!v) throw Error(`receive vault: no factory on chain ${m}`);
25
+ let y = BigInt(Math.floor(Date.now() / 1e3) + 900), b = await u(d.userKeys, f, p, m, g, y), x = [
26
+ l(c(d.userKeys, f)),
27
+ r(p),
28
+ r(g),
29
+ y,
30
+ b
31
+ ];
32
+ if (e(m)) {
33
+ let { receiveVaultFactoryABI: e } = t[m].contractData;
34
+ if (!e) throw Error(`receive vault: no factory ABI on chain ${m}`);
35
+ let r = d.getTronWeb(), o = a(v);
36
+ if (_) {
37
+ let { transaction: t } = await r.transactionBuilder.triggerSmartContract(o, "", {
38
+ feeLimit: n,
39
+ callValue: 0,
40
+ input: i(e, "recover", x)
41
+ }, [], await d.getEthereumAddressByChain(m));
42
+ return t;
43
+ }
44
+ let s = r.contract(e, o);
45
+ try {
46
+ return await s.recover(...x).send({ feeLimit: n });
47
+ } catch (e) {
48
+ throw Error(h(e));
49
+ }
50
+ }
51
+ let S = d.getContractWithSigner(m, o.ReceiveVaultFactoryContract);
52
+ try {
53
+ return _ ? S.recover.populateTransaction(...x) : (await S.recover(...x)).hash;
54
+ } catch (e) {
55
+ throw Error(h(e));
56
+ }
57
+ };
58
+ //#endregion
59
+ export { g as hinkalReceiveVaultRecover };
@@ -0,0 +1 @@
1
+ require(`../../functions/utils/tron.utils.cjs`),require(`../../functions/utils/receive-vault.utils.cjs`),require(`./hinkalTransact.cjs`);const e=require(`./hinkalProoflessDeposit.utils.cjs`);var t=(t,n)=>e.buildProoflessEncryptedOutputs([t.recipient],[n])[0];exports.buildReceiveVaultEncryptedOutput=t;
@@ -0,0 +1,6 @@
1
+ import { ReceiveVaultParams } from '../../types/receive-vault.types';
2
+ import { TransactProof } from '../../types/transact.types';
3
+ import { IHinkal } from './IHinkal';
4
+ export declare const buildReceiveVaultSettleProof: (hinkal: IHinkal, chainId: number, vaultAddress: string, params: ReceiveVaultParams, encryptionKey: string, depositAmount: bigint) => Promise<TransactProof>;
5
+ /** The encrypted note the settlement deposits on behalf of whoever paid the address. */
6
+ export declare const buildReceiveVaultEncryptedOutput: (params: ReceiveVaultParams, encryptionKey: string) => string;
@@ -0,0 +1,8 @@
1
+ import "../../functions/utils/tron.utils.mjs";
2
+ import "../../functions/utils/receive-vault.utils.mjs";
3
+ import "./hinkalTransact.mjs";
4
+ import { buildProoflessEncryptedOutputs as e } from "./hinkalProoflessDeposit.utils.mjs";
5
+ //#region libs/shared/common/src/data-structures/Hinkal/hinkalReceiveVaultSettle.ts
6
+ var t = (t, n) => e([t.recipient], [n])[0];
7
+ //#endregion
8
+ export { t as buildReceiveVaultEncryptedOutput };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/solanaMint.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/snarkjs/common.snarkjs.cjs`),l=require(`../../functions/pre-transaction/solana.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../error-handling/retrySolanaError.cjs`),f=require(`../../API/admin-calls.cjs`);require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);const p=require(`./hinkalProoflessDeposit.utils.cjs`);let m=require(`@solana/web3.js`),h=require(`@coral-xyz/anchor`);var g=(n,r)=>{let i=s.validateAndGetChainId([r]),o=r.erc20TokenAddress,{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[i].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let f=n.getSolanaProgram(c),p=n.getSolanaPublicKey(),{connection:h,wallet:g}=f.provider;if(!g)throw Error(`missing solana wallet`);let _=new m.PublicKey(d),v=new m.PublicKey(u),{mintPublicKey:y}=a.formatMintAddress(o),b=y.toString()===t.solanaNativeAddress;return{chainId:i,mintAddress:o,program:f,publicKey:p,connection:h,wallet:g,originalDeployer:_,mintPublicKey:y,mint:b?null:y,atasValue:b?null:void 0,storageAccount:l.getStorageAccountPublicKey(v,_),storageVault:l.getStorageVaultPublicKey(v,_),merkleAccount:l.getMerkleAccountPublicKey(v,_)}},_=async(e,t,n,r,i)=>{let a=n.map(e=>l.buildAnchorStealthAddressStructure(e)),o=p.buildProoflessEncryptedOutputs(n,r).map(e=>Buffer.from(e.slice(2),`hex`)),{current:s,next:c}=await l.resolveSolanaRootBuckets(e.program,e.merkleAccount,t.length);return e.program.methods.multiPaymentDeposit(t.map(e=>new h.BN(e.toString())),a,o,i).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:s,rootBucketNext:c??e.program.programId,storageVaultAta:e.atasValue}).instruction()},v=async(e,t,n,r)=>{for(let i=0;i<10;i+=1){let a=i===9;try{let{blockhash:i,lastValidBlockHeight:a}=await e.getLatestBlockhash(),o=new m.VersionedTransaction(new m.TransactionMessage({payerKey:n,recentBlockhash:i,instructions:r}).compileToV0Message()),s=await t.signTransaction(o),c=await e.sendTransaction(s);return await e.confirmTransaction({signature:c,blockhash:i,lastValidBlockHeight:a},`confirmed`),c}catch(e){if(d.shouldRetryForSolanaError(e)&&!a)continue;throw e}}return``},y=(e,t)=>{if(e.length===0)throw Error(`amounts must not be empty`);if(e.length!==t.length)throw Error(`amounts and stealthAddressStructures length mismatch`);if(e.some(e=>e<=0n))throw Error(`all amounts must be positive`);p.assertNoDuplicateStealthAddressStructures(t)},b=async(e,t,n,r,i,a=!1,o,s=!1)=>{y(n,r);let c=g(e,t),l=u.constructAdminData(o,c.chainId,Array(n.length).fill(c.mintAddress),n,await e.getEthereumAddress()),d=await _(c,n,r,i,a);if(s){let{blockhash:e}=await c.connection.getLatestBlockhash(),t=new m.Transaction().add(d);return t.recentBlockhash=e,t.feePayer=c.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let p=await v(c.connection,c.wallet,c.publicKey,[d]);return await f.emitTxPublicData(l),p},x=async(e,t,n,a=!1)=>{let o=e.userKeys.getShieldedPrivateKey(),s=c.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),o),o,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint),l=i.UserKeys.getEncryptionKeyPair(o).publicKey;return b(e,n,[t],[s],[l],!1,void 0,a)},S=async(e,t,r,i,a=!1,s)=>{if(!o.isValidPrivateAddress(i))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let c=o.constructStealthAddressStructure(i),l=o.getEncryptionKeyFromRecipientInfo(i);return b(e,r,[t],[c],[l],!1,s,a)};exports.hinkalSolanaDeposit=x,exports.hinkalSolanaDepositForOther=S,exports.submitSolanaProoflessDeposit=b;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../constants/fees.constants.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../crypto-keys/keys.cjs`),o=require(`../../functions/utils/solanaMint.utils.cjs`),s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/solana.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../error-handling/retrySolanaError.cjs`),p=require(`../../API/admin-calls.cjs`),m=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`),h=require(`./hinkalProoflessDeposit.utils.cjs`);let g=require(`@solana/web3.js`),_=require(`@coral-xyz/anchor`);var v=(n,r)=>{let i=c.validateAndGetChainId([r]),a=r.erc20TokenAddress,{hinkalIdl:s,hinkalAddress:l,originalDeployer:d}=e.networkRegistry[i].contractData;if(!s)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let f=n.getSolanaProgram(s),p=n.getSolanaPublicKey(),{connection:m,wallet:h}=f.provider;if(!h)throw Error(`missing solana wallet`);let _=new g.PublicKey(d),v=new g.PublicKey(l),{mintPublicKey:y}=o.formatMintAddress(a),b=y.toString()===t.solanaNativeAddress;return{chainId:i,mintAddress:a,program:f,publicKey:p,connection:m,wallet:h,originalDeployer:_,mintPublicKey:y,mint:b?null:y,atasValue:b?null:void 0,storageAccount:u.getStorageAccountPublicKey(v,_),storageVault:u.getStorageVaultPublicKey(v,_),merkleAccount:u.getMerkleAccountPublicKey(v,_)}},y=async(e,t,n,r,i)=>{let a=n.map(e=>u.buildAnchorStealthAddressStructure(e)),o=h.buildProoflessEncryptedOutputs(n,r).map(e=>Buffer.from(e.slice(2),`hex`)),{current:s,next:c}=await u.resolveSolanaRootBuckets(e.program,e.merkleAccount,t.length);return e.program.methods.multiPaymentDeposit(t.map(e=>new _.BN(e.toString())),a,o,i).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:s,rootBucketNext:c??e.program.programId,storageVaultAta:e.atasValue}).instruction()},b=async(e,t,n,r)=>{for(let i=0;i<10;i+=1){let a=i===9;try{let{blockhash:i,lastValidBlockHeight:a}=await e.getLatestBlockhash(),o=new g.VersionedTransaction(new g.TransactionMessage({payerKey:n,recentBlockhash:i,instructions:r}).compileToV0Message()),s=await t.signTransaction(o),c=await e.sendTransaction(s);return await e.confirmTransaction({signature:c,blockhash:i,lastValidBlockHeight:a},`confirmed`),c}catch(e){if(f.shouldRetryForSolanaError(e)&&!a)continue;throw e}}return``},x=(e,t)=>{if(e.length===0)throw Error(`amounts must not be empty`);if(e.length!==t.length)throw Error(`amounts and stealthAddressStructures length mismatch`);if(e.some(e=>e<=0n))throw Error(`all amounts must be positive`);h.assertNoDuplicateStealthAddressStructures(t)},S=async(e,t,n,r,i,a=!1,o,s=!1)=>{x(n,r);let c=v(e,t),l=d.constructAdminData(o,c.chainId,Array(n.length).fill(c.mintAddress),n,await e.getEthereumAddress()),u=await y(c,n,r,i,a);if(s){let{blockhash:e}=await c.connection.getLatestBlockhash(),t=new g.Transaction().add(u);return t.recentBlockhash=e,t.feePayer=c.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let f=await b(c.connection,c.wallet,c.publicKey,[u]);return await p.emitTxPublicData(l),f},C=async(e,t,n,r,i,a,o=!1,s,c=!1)=>{x(n,r);let l=v(e,t),u=await e.getRandomRelay(l.chainId,!1);if(!u)throw Error(`No relay available for chainId ${l.chainId}`);let{instructions:f}=await m.buildSolanaTransferInstructions(l.connection,l.publicKey,new g.PublicKey(u),t,a),h=await y(l,n,r,i,o),_=[...f,h];if(c){let{blockhash:e}=await l.connection.getLatestBlockhash(),t=new g.Transaction().add(..._);return t.recentBlockhash=e,t.feePayer=l.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let S=d.constructAdminData(s,l.chainId,Array(n.length).fill(l.mintAddress),n,await e.getEthereumAddress()),C=await b(l.connection,l.wallet,l.publicKey,_);return await p.emitTxPublicData(S),C},w=async(e,t,n,r=!1)=>{let o=e.userKeys.getShieldedPrivateKey(),s=l.calcStealthAddressStructure(a.UserKeys.findCorrectRandomization(i.randomBigInt(31),o),o,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint),c=a.UserKeys.getEncryptionKeyPair(o).publicKey;return S(e,n,[t],[s],[c],!1,void 0,r)},T=async(e,t,i,a,o=!1,c=0n,l)=>{if(!s.isValidPrivateAddress(a))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let u=s.constructStealthAddressStructure(a),d=s.getEncryptionKeyFromRecipientInfo(a),f=c>0n?t*c/n.BPS_DENOMINATOR:0n;return C(e,i,[t],[u],[d],f,!1,l,o)};exports.hinkalSolanaDeposit=w,exports.hinkalSolanaDepositForOther=T,exports.submitSolanaProoflessDeposit=S;
@@ -3,6 +3,6 @@ import { ERC20Token } from '../../types/token.types';
3
3
  import { IHinkal } from './IHinkal';
4
4
  import { AdminTransactionType } from '../../types/admin.types';
5
5
  export declare const submitSolanaProoflessDeposit: (hinkal: IHinkal, token: ERC20Token, amounts: bigint[], stealthAddressStructures: StealthAddressStructure[], recipientEncryptionKeys: string[], createBlockedUtxos?: boolean, action?: AdminTransactionType, returnTxData?: boolean) => Promise<string>;
6
- export declare const hinkalSolanaProoflessDepositWithPublicFee: (hinkal: IHinkal, token: ERC20Token, amounts: bigint[], stealthAddressStructures: StealthAddressStructure[], recipientEncryptionKeys: string[], feeAmount: bigint, createBlockedUtxos?: boolean, action?: AdminTransactionType) => Promise<string>;
6
+ export declare const hinkalSolanaProoflessDepositWithPublicFee: (hinkal: IHinkal, token: ERC20Token, amounts: bigint[], stealthAddressStructures: StealthAddressStructure[], recipientEncryptionKeys: string[], feeAmount: bigint, createBlockedUtxos?: boolean, action?: AdminTransactionType, returnTxData?: boolean) => Promise<string>;
7
7
  export declare const hinkalSolanaDeposit: (hinkal: IHinkal, amount: bigint, token: ERC20Token, returnTxData?: boolean) => Promise<string>;
8
- export declare const hinkalSolanaDepositForOther: (hinkal: IHinkal, amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, action?: AdminTransactionType) => Promise<string>;
8
+ export declare const hinkalSolanaDepositForOther: (hinkal: IHinkal, amount: bigint, token: ERC20Token, recipientInfo: string, returnTxData?: boolean, variableRate?: bigint, action?: AdminTransactionType) => Promise<string>;
@@ -1,46 +1,47 @@
1
1
  import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
2
  import { solanaNativeAddress as t } from "../../constants/protocol.constants.mjs";
3
- import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
4
- import { randomBigInt as r } from "../../functions/web3/etherFunctions.mjs";
5
- import { UserKeys as i } from "../crypto-keys/keys.mjs";
6
- import { formatMintAddress as a } from "../../functions/utils/solanaMint.utils.mjs";
7
- import { constructStealthAddressStructure as o, getEncryptionKeyFromRecipientInfo as s, isValidPrivateAddress as c } from "../../functions/utils/addresses.mjs";
8
- import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
9
- import { calcStealthAddressStructure as u } from "../../functions/snarkjs/common.snarkjs.mjs";
10
- import { buildAnchorStealthAddressStructure as d, getMerkleAccountPublicKey as f, getStorageAccountPublicKey as p, getStorageVaultPublicKey as m, resolveSolanaRootBuckets as h } from "../../functions/pre-transaction/solana.mjs";
11
- import { constructAdminData as g } from "../../functions/pre-transaction/constructAdminData.mjs";
12
- import { shouldRetryForSolanaError as _ } from "../../error-handling/retrySolanaError.mjs";
13
- import { emitTxPublicData as v } from "../../API/admin-calls.mjs";
14
- import "../../functions/pre-transaction/solanaTransfer.utils.mjs";
15
- import { assertNoDuplicateStealthAddressStructures as y, buildProoflessEncryptedOutputs as b } from "./hinkalProoflessDeposit.utils.mjs";
16
- import { PublicKey as x, Transaction as S, TransactionMessage as C, VersionedTransaction as w } from "@solana/web3.js";
17
- import { BN as T } from "@coral-xyz/anchor";
3
+ import { BPS_DENOMINATOR as n } from "../../constants/fees.constants.mjs";
4
+ import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
+ import { randomBigInt as i } from "../../functions/web3/etherFunctions.mjs";
6
+ import { UserKeys as a } from "../crypto-keys/keys.mjs";
7
+ import { formatMintAddress as o } from "../../functions/utils/solanaMint.utils.mjs";
8
+ import { constructStealthAddressStructure as s, getEncryptionKeyFromRecipientInfo as c, isValidPrivateAddress as l } from "../../functions/utils/addresses.mjs";
9
+ import { validateAndGetChainId as u } from "../../functions/utils/token-check.utils.mjs";
10
+ import { calcStealthAddressStructure as d } from "../../functions/snarkjs/common.snarkjs.mjs";
11
+ import { buildAnchorStealthAddressStructure as f, getMerkleAccountPublicKey as p, getStorageAccountPublicKey as m, getStorageVaultPublicKey as h, resolveSolanaRootBuckets as g } from "../../functions/pre-transaction/solana.mjs";
12
+ import { constructAdminData as _ } from "../../functions/pre-transaction/constructAdminData.mjs";
13
+ import { shouldRetryForSolanaError as v } from "../../error-handling/retrySolanaError.mjs";
14
+ import { emitTxPublicData as y } from "../../API/admin-calls.mjs";
15
+ import { buildSolanaTransferInstructions as b } from "../../functions/pre-transaction/solanaTransfer.utils.mjs";
16
+ import { assertNoDuplicateStealthAddressStructures as x, buildProoflessEncryptedOutputs as S } from "./hinkalProoflessDeposit.utils.mjs";
17
+ import { PublicKey as C, Transaction as w, TransactionMessage as T, VersionedTransaction as E } from "@solana/web3.js";
18
+ import { BN as D } from "@coral-xyz/anchor";
18
19
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaDeposit.ts
19
- var E = (n, r) => {
20
- let i = l([r]), o = r.erc20TokenAddress, { hinkalIdl: s, hinkalAddress: c, originalDeployer: u } = e[i].contractData;
20
+ var O = (n, r) => {
21
+ let i = u([r]), a = r.erc20TokenAddress, { hinkalIdl: s, hinkalAddress: c, originalDeployer: l } = e[i].contractData;
21
22
  if (!s) throw Error("No IDL configured for Solana program on this network");
22
- if (!u) throw Error("missing original deployer");
23
- let d = n.getSolanaProgram(s), h = n.getSolanaPublicKey(), { connection: g, wallet: _ } = d.provider;
23
+ if (!l) throw Error("missing original deployer");
24
+ let d = n.getSolanaProgram(s), f = n.getSolanaPublicKey(), { connection: g, wallet: _ } = d.provider;
24
25
  if (!_) throw Error("missing solana wallet");
25
- let v = new x(u), y = new x(c), { mintPublicKey: b } = a(o), S = b.toString() === t;
26
+ let v = new C(l), y = new C(c), { mintPublicKey: b } = o(a), x = b.toString() === t;
26
27
  return {
27
28
  chainId: i,
28
- mintAddress: o,
29
+ mintAddress: a,
29
30
  program: d,
30
- publicKey: h,
31
+ publicKey: f,
31
32
  connection: g,
32
33
  wallet: _,
33
34
  originalDeployer: v,
34
35
  mintPublicKey: b,
35
- mint: S ? null : b,
36
- atasValue: S ? null : void 0,
37
- storageAccount: p(y, v),
38
- storageVault: m(y, v),
39
- merkleAccount: f(y, v)
36
+ mint: x ? null : b,
37
+ atasValue: x ? null : void 0,
38
+ storageAccount: m(y, v),
39
+ storageVault: h(y, v),
40
+ merkleAccount: p(y, v)
40
41
  };
41
- }, D = async (e, t, n, r, i) => {
42
- let a = n.map((e) => d(e)), o = b(n, r).map((e) => Buffer.from(e.slice(2), "hex")), { current: s, next: c } = await h(e.program, e.merkleAccount, t.length);
43
- return e.program.methods.multiPaymentDeposit(t.map((e) => new T(e.toString())), a, o, i).accounts({
42
+ }, k = async (e, t, n, r, i) => {
43
+ let a = n.map((e) => f(e)), o = S(n, r).map((e) => Buffer.from(e.slice(2), "hex")), { current: s, next: c } = await g(e.program, e.merkleAccount, t.length);
44
+ return e.program.methods.multiPaymentDeposit(t.map((e) => new D(e.toString())), a, o, i).accounts({
44
45
  mint: e.mint,
45
46
  signer: e.publicKey,
46
47
  signerAta: e.atasValue,
@@ -52,11 +53,11 @@ var E = (n, r) => {
52
53
  rootBucketNext: c ?? e.program.programId,
53
54
  storageVaultAta: e.atasValue
54
55
  }).instruction();
55
- }, O = async (e, t, n, r) => {
56
+ }, A = async (e, t, n, r) => {
56
57
  for (let i = 0; i < 10; i += 1) {
57
58
  let a = i === 9;
58
59
  try {
59
- let { blockhash: i, lastValidBlockHeight: a } = await e.getLatestBlockhash(), o = new w(new C({
60
+ let { blockhash: i, lastValidBlockHeight: a } = await e.getLatestBlockhash(), o = new E(new T({
60
61
  payerKey: n,
61
62
  recentBlockhash: i,
62
63
  instructions: r
@@ -67,32 +68,43 @@ var E = (n, r) => {
67
68
  lastValidBlockHeight: a
68
69
  }, "confirmed"), c;
69
70
  } catch (e) {
70
- if (_(e) && !a) continue;
71
+ if (v(e) && !a) continue;
71
72
  throw e;
72
73
  }
73
74
  }
74
75
  return "";
75
- }, k = (e, t) => {
76
+ }, j = (e, t) => {
76
77
  if (e.length === 0) throw Error("amounts must not be empty");
77
78
  if (e.length !== t.length) throw Error("amounts and stealthAddressStructures length mismatch");
78
79
  if (e.some((e) => e <= 0n)) throw Error("all amounts must be positive");
79
- y(t);
80
- }, A = async (e, t, n, r, i, a = !1, o, s = !1) => {
81
- k(n, r);
82
- let c = E(e, t), l = g(o, c.chainId, Array(n.length).fill(c.mintAddress), n, await e.getEthereumAddress()), u = await D(c, n, r, i, a);
80
+ x(t);
81
+ }, M = async (e, t, n, r, i, a = !1, o, s = !1) => {
82
+ j(n, r);
83
+ let c = O(e, t), l = _(o, c.chainId, Array(n.length).fill(c.mintAddress), n, await e.getEthereumAddress()), u = await k(c, n, r, i, a);
83
84
  if (s) {
84
- let { blockhash: e } = await c.connection.getLatestBlockhash(), t = new S().add(u);
85
+ let { blockhash: e } = await c.connection.getLatestBlockhash(), t = new w().add(u);
85
86
  return t.recentBlockhash = e, t.feePayer = c.publicKey, Buffer.from(t.serialize({ requireAllSignatures: !1 })).toString("base64");
86
87
  }
87
- let d = await O(c.connection, c.wallet, c.publicKey, [u]);
88
- return await v(l), d;
89
- }, j = async (e, t, n, a = !1) => {
90
- let o = e.userKeys.getShieldedPrivateKey(), s = u(i.findCorrectRandomization(r(31), o), o, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint), c = i.getEncryptionKeyPair(o).publicKey;
91
- return A(e, n, [t], [s], [c], !1, void 0, a);
92
- }, M = async (e, t, r, i, a = !1, l) => {
93
- if (!c(i)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
94
- let u = o(i), d = s(i);
95
- return A(e, r, [t], [u], [d], !1, l, a);
88
+ let d = await A(c.connection, c.wallet, c.publicKey, [u]);
89
+ return await y(l), d;
90
+ }, N = async (e, t, n, r, i, a, o = !1, s, c = !1) => {
91
+ j(n, r);
92
+ let l = O(e, t), u = await e.getRandomRelay(l.chainId, !1);
93
+ if (!u) throw Error(`No relay available for chainId ${l.chainId}`);
94
+ let { instructions: d } = await b(l.connection, l.publicKey, new C(u), t, a), f = await k(l, n, r, i, o), p = [...d, f];
95
+ if (c) {
96
+ let { blockhash: e } = await l.connection.getLatestBlockhash(), t = new w().add(...p);
97
+ return t.recentBlockhash = e, t.feePayer = l.publicKey, Buffer.from(t.serialize({ requireAllSignatures: !1 })).toString("base64");
98
+ }
99
+ let m = _(s, l.chainId, Array(n.length).fill(l.mintAddress), n, await e.getEthereumAddress()), h = await A(l.connection, l.wallet, l.publicKey, p);
100
+ return await y(m), h;
101
+ }, P = async (e, t, n, r = !1) => {
102
+ let o = e.userKeys.getShieldedPrivateKey(), s = d(a.findCorrectRandomization(i(31), o), o, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint), c = a.getEncryptionKeyPair(o).publicKey;
103
+ return M(e, n, [t], [s], [c], !1, void 0, r);
104
+ }, F = async (e, t, i, a, o = !1, u = 0n, d) => {
105
+ if (!l(a)) throw Error(r.RECIPIENT_FORMAT_INCORRECT);
106
+ let f = s(a), p = c(a), m = u > 0n ? t * u / n : 0n;
107
+ return N(e, i, [t], [f], [p], m, !1, d, o);
96
108
  };
97
109
  //#endregion
98
- export { j as hinkalSolanaDeposit, M as hinkalSolanaDepositForOther, A as submitSolanaProoflessDeposit };
110
+ export { P as hinkalSolanaDeposit, F as hinkalSolanaDepositForOther, M as submitSolanaProoflessDeposit };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/solanaMint.utils.cjs`),c=require(`../../functions/utils/addresses.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/solana-transact.types.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/pre-transaction/speculativeUtxo.cjs`);require(`../../functions/pre-transaction/index.cjs`);const _=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const y=require(`./hinkalProoflessDeposit.utils.cjs`),b=require(`./hinkalSolanaTransact.cjs`);let x=require(`ethers`),S=require(`@solana/web3.js`),C=require(`@coral-xyz/anchor`);var w=(n,a,o,c)=>{let{hinkalIdl:l,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!l)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(l),g=n.getSolanaPublicKey(),_=new S.PublicKey(d),v=new S.PublicKey(u),{mintPublicKey:y}=s.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),C=p.getStorageVaultPublicKey(v,_),w=p.getMerkleAccountPublicKey(v,_),T=c.map(()=>f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint)),E=T.map(e=>p.buildAnchorStealthAddressStructure(e)),D=i.UserKeys.getEncryptionKeyPair(m).publicKey,O=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:O?null:y,atasValue:O?null:void 0,storageAccount:x,storageVault:C,merkleAccount:w,amounts:c,mintAddressString:b,stealthAddressStructures:T,anchorStealthStructures:E,ownEncryptionKey:D}},T=async(e,t)=>{let n=y.buildProoflessEncryptedOutputs(e.stealthAddressStructures,e.amounts.map(()=>e.ownEncryptionKey)).map(e=>Buffer.from(e.slice(2),`hex`)),{current:r,next:i}=await p.resolveSolanaRootBuckets(e.program,e.merkleAccount,e.amounts.length);return e.program.methods.multiPaymentDepositAt(e.amounts.map(e=>new C.BN(e.toString())),e.anchorStealthStructures,n,!0,t?new C.BN(t):null).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:r,rootBucketNext:i??e.program.programId,storageVaultAta:e.atasValue})},E=async(r,i,c,l,d,f,p,h,_,y)=>{let x=c.erc20TokenAddress;if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:S}=e.networkRegistry[i].contractData;if(!S)throw Error(`missing data`);let C=await r.getRandomRelay(i,!0);if(!C)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=a.getCurrentTimeInSeconds().toString(),T=r.generateProofRemotely?5:1,E=[];for(let e=0;e<l.length;e+=T){let n=l.slice(e,e+T),a=await Promise.all(n.map(async({recipientAddress:n,utxo:a},l)=>{let S=e+l,T={recipient:n,mint:x===`11111111111111111111111111111111`?void 0:x},E=await v.calculateModifiedFeeStructure(i,c,f[S],d),D=m.constructAdminData(p,i,[x],[f[S]],await r.getEthereumAddress()),{compressedAddress:O}=s.formatMintAddress(t.solanaNativeAddress),k=new o.Utxo({amount:0n,mintAddress:x,erc20TokenAddress:O,nullifyingKey:r.userKeys.getShieldedPrivateKey(),timeStamp:w,spendingPublicKey:r.userKeys.getSpendingKeyPair().pubSpendingBJJPoint}),{args:A,commitmentValidationData:j}=await b.hinkalSolanaTransact(r,{chainId:i,mintAddresses:[x],amountChanges:[-a.amount],relayAddress:C,recipient:n,signer:C,functionName:`transact`,accounts:T,relayerFee:E.flatFee,variableRate:E.variableRate,inputUtxos:[[a,k]],useBlockedUtxos:!0,speculative:y&&{pendingLeaves:y,inputUtxos:[[g.toSpeculativeUtxo(a)]]},submit:{mode:u.SolanaSubmitMode.ProofOnly}});return{relayAddress:C,functionName:`transact`,chainId:i,recipientAmount:f[S].toString(),args:A,accounts:T,adminData:D,commitmentValidationData:j,displayRecipient:h?.[S],destinationChainId:_?.chainId,destinationTokenAddress:_?.tokenAddress,destinationTokenAmount:_?.tokenAmounts?.[S]}}));E.push(...a)}return E},D=async(e,t,n,r,i,u,f,p,m,g,y)=>{let b=d.validateAndGetChainId([t]),S=t.erc20TokenAddress,C=c.hashEthereumAddress(await e.getEthereumAddressByChain(b)),D=m?c.hashString(m):void 0,O=u??await h.getFeeStructure(b,S,[S],l.ExternalActionId.Transact,[],25n,{mintTo:S,recipient:r[0],nullifierCount:1}),k=n.map(e=>e+v.calculateTotalFee(e,O)),A=w(e,b,t,k),j=a.getCurrentTimeInSeconds().toString(),{compressedAddress:M}=s.formatMintAddress(S),N=A.stealthAddressStructures.map((t,n)=>({recipientAddress:r[n],utxo:new o.Utxo({amount:k[n],timeStamp:j,nullifyingKey:e.userKeys.getShieldedPrivateKey(),mintAddress:S,erc20TokenAddress:M,stealthAddress:x.ethers.toBeHex(t.stealthAddress),H0:[t.H0x,t.H0y]})})),{connection:P,wallet:F}=A.program.provider,I=async()=>{let e=await(await T(A,j)).transaction();return e.recentBlockhash=(await P.getLatestBlockhash()).blockhash,e.feePayer=A.publicKey,P.sendRawTransaction((await F.signTransaction(e)).serialize())},L=N.map(({utxo:e})=>BigInt(e.getCommitment()).toString()),[R,z]=await Promise.all([I(),E(e,b,t,N,O,n,p,g,y,L)]);return{depositTxHash:R,scheduleId:await _.solanaTransactCallRelayerBatch(b,z,C,i,f,D,R)}};exports.hinkalSolanaDepositAndWithdraw=D;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/solanaMint.utils.cjs`),c=require(`../../functions/utils/addresses.cjs`),l=require(`../../types/external-action.types.cjs`),u=require(`../../types/solana-transact.types.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/utils/fees.utils.cjs`),_=require(`../../functions/pre-transaction/speculativeUtxo.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);require(`../../functions/web3/index.cjs`);const y=require(`./hinkalProoflessDeposit.utils.cjs`),b=require(`./hinkalSolanaTransact.cjs`);let x=require(`ethers`),S=require(`@solana/web3.js`),C=require(`@coral-xyz/anchor`);var w=(n,a,o,c)=>{let{hinkalIdl:l,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!l)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(l),g=n.getSolanaPublicKey(),_=new S.PublicKey(d),v=new S.PublicKey(u),{mintPublicKey:y}=s.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),C=p.getStorageVaultPublicKey(v,_),w=p.getMerkleAccountPublicKey(v,_),T=c.map(()=>f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint)),E=T.map(e=>p.buildAnchorStealthAddressStructure(e)),D=i.UserKeys.getEncryptionKeyPair(m).publicKey,O=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:O?null:y,atasValue:O?null:void 0,storageAccount:x,storageVault:C,merkleAccount:w,amounts:c,mintAddressString:b,stealthAddressStructures:T,anchorStealthStructures:E,ownEncryptionKey:D}},T=async(e,t)=>{let n=y.buildProoflessEncryptedOutputs(e.stealthAddressStructures,e.amounts.map(()=>e.ownEncryptionKey)).map(e=>Buffer.from(e.slice(2),`hex`)),{current:r,next:i}=await p.resolveSolanaRootBuckets(e.program,e.merkleAccount,e.amounts.length);return e.program.methods.multiPaymentDepositAt(e.amounts.map(e=>new C.BN(e.toString())),e.anchorStealthStructures,n,!0,t?new C.BN(t):null).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,rootBucketCurrent:r,rootBucketNext:i??e.program.programId,storageVaultAta:e.atasValue})},E=async(r,i,c,l,d,f,p,h,v,y)=>{let x=c.erc20TokenAddress;if(l.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:S}=e.networkRegistry[i].contractData;if(!S)throw Error(`missing data`);let C=await r.getRandomRelay(i,!0);if(!C)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=a.getCurrentTimeInSeconds().toString(),T=r.generateProofRemotely?5:1,E=[];for(let e=0;e<l.length;e+=T){let n=l.slice(e,e+T),a=await Promise.all(n.map(async({recipientAddress:n,utxo:a},l)=>{let S=e+l,T={recipient:n,mint:x===`11111111111111111111111111111111`?void 0:x},E=await g.calculateModifiedFeeStructure(i,c,f[S],d),D=m.constructAdminData(p,i,[x],[f[S]],await r.getEthereumAddress()),{compressedAddress:O}=s.formatMintAddress(t.solanaNativeAddress),k=new o.Utxo({amount:0n,mintAddress:x,erc20TokenAddress:O,nullifyingKey:r.userKeys.getShieldedPrivateKey(),timeStamp:w,spendingPublicKey:r.userKeys.getSpendingKeyPair().pubSpendingBJJPoint}),{args:A,commitmentValidationData:j}=await b.hinkalSolanaTransact(r,{chainId:i,mintAddresses:[x],amountChanges:[-a.amount],relayAddress:C,recipient:n,signer:C,functionName:`transact`,accounts:T,relayerFee:E.flatFee,variableRate:E.variableRate,inputUtxos:[[a,k]],useBlockedUtxos:!0,speculative:y&&{pendingLeaves:y,inputUtxos:[[_.toSpeculativeUtxo(a)]]},submit:{mode:u.SolanaSubmitMode.ProofOnly}});return{relayAddress:C,functionName:`transact`,chainId:i,recipientAmount:f[S].toString(),args:A,accounts:T,adminData:D,commitmentValidationData:j,displayRecipient:h?.[S],destinationChainId:v?.chainId,destinationTokenAddress:v?.tokenAddress,destinationTokenAmount:v?.tokenAmounts?.[S]}}));E.push(...a)}return E},D=async(e,t,n,r,i,u,f,p,m,_,y)=>{let b=d.validateAndGetChainId([t]),S=t.erc20TokenAddress,C=c.hashEthereumAddress(await e.getEthereumAddressByChain(b)),D=m?c.hashString(m):void 0,O=u??await h.getFeeStructure(b,S,[S],l.ExternalActionId.Transact,[],25n,{mintTo:S,recipient:r[0],nullifierCount:1}),k=n.map(e=>e+g.calculateTotalFee(e,O)),A=w(e,b,t,k),j=a.getCurrentTimeInSeconds().toString(),{compressedAddress:M}=s.formatMintAddress(S),N=A.stealthAddressStructures.map((t,n)=>({recipientAddress:r[n],utxo:new o.Utxo({amount:k[n],timeStamp:j,nullifyingKey:e.userKeys.getShieldedPrivateKey(),mintAddress:S,erc20TokenAddress:M,stealthAddress:x.ethers.toBeHex(t.stealthAddress),H0:[t.H0x,t.H0y]})})),{connection:P,wallet:F}=A.program.provider,I=async()=>{let e=await(await T(A,j)).transaction();return e.recentBlockhash=(await P.getLatestBlockhash()).blockhash,e.feePayer=A.publicKey,P.sendRawTransaction((await F.signTransaction(e)).serialize())},L=N.map(({utxo:e})=>BigInt(e.getCommitment()).toString()),[R,z]=await Promise.all([I(),E(e,b,t,N,O,n,p,_,y,L)]);return{depositTxHash:R,scheduleId:await v.solanaTransactCallRelayerBatch(b,z,C,i,f,D,R)}};exports.hinkalSolanaDepositAndWithdraw=D;
@@ -14,10 +14,10 @@ import { calcStealthAddressStructure as p } from "../../functions/snarkjs/common
14
14
  import { buildAnchorStealthAddressStructure as m, getMerkleAccountPublicKey as h, getStorageAccountPublicKey as g, getStorageVaultPublicKey as _, resolveSolanaRootBuckets as v } from "../../functions/pre-transaction/solana.mjs";
15
15
  import { constructAdminData as y } from "../../functions/pre-transaction/constructAdminData.mjs";
16
16
  import { getFeeStructure as b } from "../../functions/pre-transaction/getFeeStructure.mjs";
17
- import { toSpeculativeUtxo as x } from "../../functions/pre-transaction/speculativeUtxo.mjs";
17
+ import { calculateModifiedFeeStructure as x, calculateTotalFee as S } from "../../functions/utils/fees.utils.mjs";
18
+ import { toSpeculativeUtxo as C } from "../../functions/pre-transaction/speculativeUtxo.mjs";
18
19
  import "../../functions/pre-transaction/index.mjs";
19
- import { solanaTransactCallRelayerBatch as S } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
20
- import { calculateModifiedFeeStructure as C, calculateTotalFee as w } from "../../functions/utils/fees.utils.mjs";
20
+ import { solanaTransactCallRelayerBatch as w } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
21
  import "../../functions/web3/index.mjs";
22
22
  import { buildProoflessEncryptedOutputs as T } from "./hinkalProoflessDeposit.utils.mjs";
23
23
  import { hinkalSolanaTransact as E } from "./hinkalSolanaTransact.mjs";
@@ -72,7 +72,7 @@ var A = (n, a, o, c) => {
72
72
  let v = e + l, w = {
73
73
  recipient: n,
74
74
  mint: _ === "11111111111111111111111111111111" ? void 0 : _
75
- }, T = await C(i, c, f[v], u), D = y(p, i, [_], [f[v]], await r.getEthereumAddress()), { compressedAddress: O } = s(t), k = new o({
75
+ }, T = await x(i, c, f[v], u), D = y(p, i, [_], [f[v]], await r.getEthereumAddress()), { compressedAddress: O } = s(t), k = new o({
76
76
  amount: 0n,
77
77
  mintAddress: _,
78
78
  erc20TokenAddress: O,
@@ -94,7 +94,7 @@ var A = (n, a, o, c) => {
94
94
  useBlockedUtxos: !0,
95
95
  speculative: g && {
96
96
  pendingLeaves: g,
97
- inputUtxos: [[x(a)]]
97
+ inputUtxos: [[C(a)]]
98
98
  },
99
99
  submit: { mode: d.ProofOnly }
100
100
  });
@@ -121,7 +121,7 @@ var A = (n, a, o, c) => {
121
121
  mintTo: y,
122
122
  recipient: r[0],
123
123
  nullifierCount: 1
124
- }), E = n.map((e) => e + w(e, T)), O = A(e, v, t, E), k = a().toString(), { compressedAddress: N } = s(y), P = O.stealthAddressStructures.map((t, n) => ({
124
+ }), E = n.map((e) => e + S(e, T)), O = A(e, v, t, E), k = a().toString(), { compressedAddress: N } = s(y), P = O.stealthAddressStructures.map((t, n) => ({
125
125
  recipientAddress: r[n],
126
126
  utxo: new o({
127
127
  amount: E[n],
@@ -138,7 +138,7 @@ var A = (n, a, o, c) => {
138
138
  }, R = P.map(({ utxo: e }) => BigInt(e.getCommitment()).toString()), [z, B] = await Promise.all([L(), M(e, v, t, P, T, n, m, g, _, R)]);
139
139
  return {
140
140
  depositTxHash: z,
141
- scheduleId: await S(v, B, x, i, p, C, z)
141
+ scheduleId: await w(v, B, x, i, p, C, z)
142
142
  };
143
143
  };
144
144
  //#endregion
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/solanaMint.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/solana.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/utils/create-provider.cjs`),c=require(`../AccountActions/AccountActions.cjs`),l=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),u=require(`../../functions/utils/solana-program.utils.cjs`),d=require(`../../API/admin-calls.cjs`),f=require(`../../functions/utils/fees.utils.cjs`),p=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`),m=require(`./hinkalProoflessDeposit.utils.cjs`);let h=require(`@solana/web3.js`),g=require(`@coral-xyz/anchor`);var _=async({program:e,mintPublicKey:t,mintAddressString:n,tokenAmount:r,stealthAddressStructure:i,recipientEncryptionKey:o,senderPublickey:s,originalDeployer:c,storageAccount:l,storageVault:u,merkleAccount:d,rootBuckets:f,createBlockedUtxos:p})=>{let h=new g.BN(r.toString()),_=a.buildAnchorStealthAddressStructure(i),v=n===`11111111111111111111111111111111`?null:t,y=n===`11111111111111111111111111111111`?null:void 0,[b]=m.buildProoflessEncryptedOutputs([i],[o]),x=Buffer.from(b.slice(2),`hex`),{current:S,next:C}=f;return e.methods.prooflessDeposit(h,_,x,p).accounts({mint:v,signer:s,signerAta:y,originalDeployer:c,storageAccount:l,storageVault:u,merkleAccount:d,rootBucketCurrent:S,rootBucketNext:C??e.programId,storageVaultAta:y}).instruction()},v=async({chainId:i,token:o,tokenAmount:c,senderAddress:l,recipientInfo:d,createBlockedUtxos:f=!1})=>{if(!r.isValidPrivateAddress(d))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let{hinkalIdl:p,hinkalAddress:m,originalDeployer:g}=e.networkRegistry[i].contractData;if(!p)throw Error(`No IDL configured for Solana program on this network`);if(!g)throw Error(`missing original deployer`);let{rpcUrl:v}=e.networkRegistry[i],y=s.createCustomSolanaConnection(v),b=u.createReadOnlySolanaProgram(y,p),x=new h.PublicKey(g),S=new h.PublicKey(m),C=new h.PublicKey(l),{erc20TokenAddress:w}=o,{mintPublicKey:T}=n.formatMintAddress(w),E=T.toString(),D=a.getStorageAccountPublicKey(S,x),O=a.getStorageVaultPublicKey(S,x),k=a.getMerkleAccountPublicKey(S,x),A=r.constructStealthAddressStructure(d),j=r.getEncryptionKeyFromRecipientInfo(d),M=await a.resolveSolanaRootBuckets(b,k,1),N=await _({program:b,mintPublicKey:T,mintAddressString:E,tokenAmount:c,stealthAddressStructure:A,recipientEncryptionKey:j,senderPublickey:C,originalDeployer:x,storageAccount:D,storageVault:O,merkleAccount:k,rootBuckets:M,createBlockedUtxos:f}),P=n.getSolanaTokenProgramId(o.is2022Program);return{connection:y,senderAddress:l,senderPublickey:C,instructions:[N],storageAccount:D,storageVault:O,rootBucketCurrent:M.current,programId:P}},y=async(e,n,r,i,a,o,s=!1,l=0n)=>{let u=c.AccountActions.getAddressFromSubAccount(n,a);if(!u)throw Error(`Public account address is not available`);let d=await v({chainId:n,token:r,tokenAmount:i,senderAddress:u,recipientInfo:o??e.getRecipientInfo(),createBlockedUtxos:s});if(l<=0n)return d;let m=await e.getRandomRelay(n,!1);if(!m)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{instructions:g}=await p.buildSolanaTransferInstructions(d.connection,d.senderPublickey,new h.PublicKey(m),r,f.calculateVariableFee(i,l));return{...d,instructions:[...g,...d.instructions]}},b=async(e,t,n,r,a,s=!1,c=0n,u)=>{if(!r)throw Error(`subAccount is required`);let f=i.validateAndGetChainId([t]),[{connection:p,senderPublickey:m,instructions:h},g]=await Promise.all([y(e,f,t,n,r,a,s,c),e.getEthereumAddress()]),_=await l.sendProxyV0Transaction({connection:p,chainId:f,subAccount:r,payerPublicKey:m,instructions:h});return d.emitTxPublicData(o.constructAdminData(u,f,[t.erc20TokenAddress],[n],g)),_};exports.hinkalSolanaProxyShield=b;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/solanaMint.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/solana.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/utils/create-provider.cjs`),c=require(`../AccountActions/AccountActions.cjs`),l=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),u=require(`../../functions/utils/fees.utils.cjs`),d=require(`../../functions/utils/solana-program.utils.cjs`),f=require(`../../API/admin-calls.cjs`),p=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`),m=require(`./hinkalProoflessDeposit.utils.cjs`);let h=require(`@solana/web3.js`),g=require(`@coral-xyz/anchor`);var _=async({program:e,mintPublicKey:t,mintAddressString:n,tokenAmount:r,stealthAddressStructure:i,recipientEncryptionKey:o,senderPublickey:s,originalDeployer:c,storageAccount:l,storageVault:u,merkleAccount:d,rootBuckets:f,createBlockedUtxos:p})=>{let h=new g.BN(r.toString()),_=a.buildAnchorStealthAddressStructure(i),v=n===`11111111111111111111111111111111`?null:t,y=n===`11111111111111111111111111111111`?null:void 0,[b]=m.buildProoflessEncryptedOutputs([i],[o]),x=Buffer.from(b.slice(2),`hex`),{current:S,next:C}=f;return e.methods.prooflessDeposit(h,_,x,p).accounts({mint:v,signer:s,signerAta:y,originalDeployer:c,storageAccount:l,storageVault:u,merkleAccount:d,rootBucketCurrent:S,rootBucketNext:C??e.programId,storageVaultAta:y}).instruction()},v=async({chainId:i,token:o,tokenAmount:c,senderAddress:l,recipientInfo:u,createBlockedUtxos:f=!1})=>{if(!r.isValidPrivateAddress(u))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let{hinkalIdl:p,hinkalAddress:m,originalDeployer:g}=e.networkRegistry[i].contractData;if(!p)throw Error(`No IDL configured for Solana program on this network`);if(!g)throw Error(`missing original deployer`);let{rpcUrl:v}=e.networkRegistry[i],y=s.createCustomSolanaConnection(v),b=d.createReadOnlySolanaProgram(y,p),x=new h.PublicKey(g),S=new h.PublicKey(m),C=new h.PublicKey(l),{erc20TokenAddress:w}=o,{mintPublicKey:T}=n.formatMintAddress(w),E=T.toString(),D=a.getStorageAccountPublicKey(S,x),O=a.getStorageVaultPublicKey(S,x),k=a.getMerkleAccountPublicKey(S,x),A=r.constructStealthAddressStructure(u),j=r.getEncryptionKeyFromRecipientInfo(u),M=await a.resolveSolanaRootBuckets(b,k,1),N=await _({program:b,mintPublicKey:T,mintAddressString:E,tokenAmount:c,stealthAddressStructure:A,recipientEncryptionKey:j,senderPublickey:C,originalDeployer:x,storageAccount:D,storageVault:O,merkleAccount:k,rootBuckets:M,createBlockedUtxos:f}),P=n.getSolanaTokenProgramId(o.is2022Program);return{connection:y,senderAddress:l,senderPublickey:C,instructions:[N],storageAccount:D,storageVault:O,rootBucketCurrent:M.current,programId:P}},y=async(e,n,r,i,a,o,s=!1,l=0n)=>{let d=c.AccountActions.getAddressFromSubAccount(n,a);if(!d)throw Error(`Public account address is not available`);let f=await v({chainId:n,token:r,tokenAmount:i,senderAddress:d,recipientInfo:o??e.getRecipientInfo(),createBlockedUtxos:s});if(l<=0n)return f;let m=await e.getRandomRelay(n,!1);if(!m)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{instructions:g}=await p.buildSolanaTransferInstructions(f.connection,f.senderPublickey,new h.PublicKey(m),r,u.calculateVariableFee(i,l));return{...f,instructions:[...g,...f.instructions]}},b=async(e,t,n,r,a,s=!1,c=0n,u)=>{if(!r)throw Error(`subAccount is required`);let d=i.validateAndGetChainId([t]),[{connection:p,senderPublickey:m,instructions:h},g]=await Promise.all([y(e,d,t,n,r,a,s,c),e.getEthereumAddress()]),_=await l.sendProxyV0Transaction({connection:p,chainId:d,subAccount:r,payerPublicKey:m,instructions:h});return f.emitTxPublicData(o.constructAdminData(u,d,[t.erc20TokenAddress],[n],g)),_};exports.hinkalSolanaProxyShield=b;
@@ -9,9 +9,9 @@ import { constructAdminData as p } from "../../functions/pre-transaction/constru
9
9
  import { createCustomSolanaConnection as m } from "../../functions/utils/create-provider.mjs";
10
10
  import { AccountActions as h } from "../AccountActions/AccountActions.mjs";
11
11
  import { sendProxyV0Transaction as g } from "../../functions/pre-transaction/sendV0Transaction.mjs";
12
- import { createReadOnlySolanaProgram as _ } from "../../functions/utils/solana-program.utils.mjs";
13
- import { emitTxPublicData as v } from "../../API/admin-calls.mjs";
14
- import { calculateVariableFee as y } from "../../functions/utils/fees.utils.mjs";
12
+ import { calculateVariableFee as _ } from "../../functions/utils/fees.utils.mjs";
13
+ import { createReadOnlySolanaProgram as v } from "../../functions/utils/solana-program.utils.mjs";
14
+ import { emitTxPublicData as y } from "../../API/admin-calls.mjs";
15
15
  import { buildSolanaTransferInstructions as b } from "../../functions/pre-transaction/solanaTransfer.utils.mjs";
16
16
  import { buildProoflessEncryptedOutputs as x } from "./hinkalProoflessDeposit.utils.mjs";
17
17
  import { PublicKey as S } from "@solana/web3.js";
@@ -31,12 +31,12 @@ var w = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
31
31
  rootBucketNext: S ?? e.programId,
32
32
  storageVaultAta: _
33
33
  }).instruction();
34
- }, T = async ({ chainId: s, token: c, tokenAmount: p, senderAddress: h, recipientInfo: g, createBlockedUtxos: v = !1 }) => {
34
+ }, T = async ({ chainId: s, token: c, tokenAmount: p, senderAddress: h, recipientInfo: g, createBlockedUtxos: _ = !1 }) => {
35
35
  if (!o(g)) throw Error(t.RECIPIENT_FORMAT_INCORRECT);
36
36
  let { hinkalIdl: y, hinkalAddress: b, originalDeployer: x } = e[s].contractData;
37
37
  if (!y) throw Error("No IDL configured for Solana program on this network");
38
38
  if (!x) throw Error("missing original deployer");
39
- let { rpcUrl: C } = e[s], T = m(C), E = _(T, y), D = new S(x), O = new S(b), k = new S(h), { erc20TokenAddress: A } = c, { mintPublicKey: j } = n(A), M = j.toString(), N = u(O, D), P = d(O, D), F = l(O, D), I = i(g), L = a(g), R = await f(E, F, 1), z = await w({
39
+ let { rpcUrl: C } = e[s], T = m(C), E = v(T, y), D = new S(x), O = new S(b), k = new S(h), { erc20TokenAddress: A } = c, { mintPublicKey: j } = n(A), M = j.toString(), N = u(O, D), P = d(O, D), F = l(O, D), I = i(g), L = a(g), R = await f(E, F, 1), z = await w({
40
40
  program: E,
41
41
  mintPublicKey: j,
42
42
  mintAddressString: M,
@@ -49,7 +49,7 @@ var w = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
49
49
  storageVault: P,
50
50
  merkleAccount: F,
51
51
  rootBuckets: R,
52
- createBlockedUtxos: v
52
+ createBlockedUtxos: _
53
53
  }), B = r(c.is2022Program);
54
54
  return {
55
55
  connection: T,
@@ -75,7 +75,7 @@ var w = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
75
75
  if (c <= 0n) return u;
76
76
  let d = await e.getRandomRelay(n, !1);
77
77
  if (!d) throw Error(t.RELAYER_NOT_AVAILABLE);
78
- let { instructions: f } = await b(u.connection, u.senderPublickey, new S(d), r, y(i, c));
78
+ let { instructions: f } = await b(u.connection, u.senderPublickey, new S(d), r, _(i, c));
79
79
  return {
80
80
  ...u,
81
81
  instructions: [...f, ...u.instructions]
@@ -89,7 +89,7 @@ var w = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
89
89
  payerPublicKey: d,
90
90
  instructions: f
91
91
  });
92
- return v(p(c, l, [t.erc20TokenAddress], [n], m)), h;
92
+ return y(p(c, l, [t.erc20TokenAddress], [n], m)), h;
93
93
  };
94
94
  //#endregion
95
95
  export { D as hinkalSolanaProxyShield };
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/utils/erc20tokenFunctions.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../AccountActions/AccountActions.cjs`),c=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`),u=require(`../../API/admin-calls.cjs`);require(`../../constants/index.cjs`);const d=require(`../../functions/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);require(`../AccountActions/index.cjs`);let p=require(`@solana/web3.js`);var m=async(e,t)=>{let{addressLookupTableAccount:n,instructionLists:r}=JSON.parse(t).data,i=await Promise.all(n.map(async t=>{let n=await e.getAddressLookupTable(new p.PublicKey(t));if(!n.value)throw Error(`Failed to fetch lookup table: ${t}`);return n.value}));if(r.length===0)throw Error(`No instructions found`);return{instructions:r.map(e=>new p.TransactionInstruction({keys:e.accounts.map(e=>({pubkey:new p.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable})),programId:new p.PublicKey(e.programId),data:Buffer.from(e.data,`base64`)})),lookupTableAccounts:i}},h=async(e,t)=>{let n=p.VersionedTransaction.deserialize(Buffer.from(t,`base64`)),r=await Promise.all(n.message.addressTableLookups.map(async({accountKey:t})=>{let n=await e.getAddressLookupTable(t);if(!n.value)throw Error(`Failed to fetch lookup table: ${t.toBase58()}`);return n.value})),{instructions:i}=p.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:r});return{instructions:i,lookupTableAccounts:r}},g=async(t,r,i,a)=>{let c=s.AccountActions.getAddressFromSubAccount(t,i);if(!c)throw Error(`Public account address is not available`);let{rpcUrl:l}=e.networkRegistry[t],u=o.createCustomSolanaConnection(l),d=new p.PublicKey(c),{instructions:f,lookupTableAccounts:g}=a===n.ExternalActionId.Lifi?await h(u,r):await m(u,r);return{connection:u,walletPublicKey:d,instructions:f,lookupTableAccounts:g}},_=async(e,o,s,m,h,_,v,y,b,x,S,C)=>{let w=r.validateAndGetChainId(o),[{connection:T,walletPublicKey:E,instructions:D,lookupTableAccounts:O},k,A]=await Promise.all([g(w,m,h,_),e.getRandomRelay(w),e.getEthereumAddressByChain(w)]);if(!k)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j=D,M=b??await l.getFeeStructure(w,y,o.map(e=>e.erc20TokenAddress),n.ExternalActionId.Emporium,[],35n);if(v){let e=o[1],t=s[1]*M.variableRate/10000n,{instructions:n}=await f.buildSolanaTransferInstructions(T,E,new p.PublicKey(k),e,t);j=[...D,...n]}else{let e={...M,flatFee:0n},t=S&&C!==void 0?await d.calculateModifiedFeeStructure(w,S,C,e):e;if(t.flatFee>0n){let e=await i.getErc20TokenFromAPI(w,t.feeToken);if(!e)throw Error(`Failed to find fee token`);let{instructions:n}=await f.buildSolanaTransferInstructions(T,E,new p.PublicKey(k),e,t.flatFee);j=[...D,...n]}}let N=await c.sendProxyV0Transaction({connection:T,chainId:w,subAccount:h,payerPublicKey:E,instructions:j,lookupTableAccounts:O});return u.emitTxPublicData(a.constructAdminData(x,w,o.map(e=>e.erc20TokenAddress),s,A,o)),N};exports.hinkalSolanaProxySwap=_;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/utils/erc20tokenFunctions.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../AccountActions/AccountActions.cjs`),c=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`),u=require(`../../functions/utils/fees.utils.cjs`),d=require(`../../API/admin-calls.cjs`);require(`../../constants/index.cjs`);const f=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);require(`../AccountActions/index.cjs`);let p=require(`@solana/web3.js`);var m=async(e,t)=>{let{addressLookupTableAccount:n,instructionLists:r}=JSON.parse(t).data,i=await Promise.all(n.map(async t=>{let n=await e.getAddressLookupTable(new p.PublicKey(t));if(!n.value)throw Error(`Failed to fetch lookup table: ${t}`);return n.value}));if(r.length===0)throw Error(`No instructions found`);return{instructions:r.map(e=>new p.TransactionInstruction({keys:e.accounts.map(e=>({pubkey:new p.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable})),programId:new p.PublicKey(e.programId),data:Buffer.from(e.data,`base64`)})),lookupTableAccounts:i}},h=async(e,t)=>{let n=p.VersionedTransaction.deserialize(Buffer.from(t,`base64`)),r=await Promise.all(n.message.addressTableLookups.map(async({accountKey:t})=>{let n=await e.getAddressLookupTable(t);if(!n.value)throw Error(`Failed to fetch lookup table: ${t.toBase58()}`);return n.value})),{instructions:i}=p.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:r});return{instructions:i,lookupTableAccounts:r}},g=async(t,r,i,a)=>{let c=s.AccountActions.getAddressFromSubAccount(t,i);if(!c)throw Error(`Public account address is not available`);let{rpcUrl:l}=e.networkRegistry[t],u=o.createCustomSolanaConnection(l),d=new p.PublicKey(c),{instructions:f,lookupTableAccounts:g}=a===n.ExternalActionId.Lifi?await h(u,r):await m(u,r);return{connection:u,walletPublicKey:d,instructions:f,lookupTableAccounts:g}},_=async(e,o,s,m,h,_,v,y,b,x,S,C)=>{let w=r.validateAndGetChainId(o),[{connection:T,walletPublicKey:E,instructions:D,lookupTableAccounts:O},k,A]=await Promise.all([g(w,m,h,_),e.getRandomRelay(w),e.getEthereumAddressByChain(w)]);if(!k)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j=D,M=b??await l.getFeeStructure(w,y,o.map(e=>e.erc20TokenAddress),n.ExternalActionId.Emporium,[],35n);if(v){let e=o[1],t=s[1]*M.variableRate/10000n,{instructions:n}=await f.buildSolanaTransferInstructions(T,E,new p.PublicKey(k),e,t);j=[...D,...n]}else{let e={...M,flatFee:0n},t=S&&C!==void 0?await u.calculateModifiedFeeStructure(w,S,C,e):e;if(t.flatFee>0n){let e=await i.getErc20TokenFromAPI(w,t.feeToken);if(!e)throw Error(`Failed to find fee token`);let{instructions:n}=await f.buildSolanaTransferInstructions(T,E,new p.PublicKey(k),e,t.flatFee);j=[...D,...n]}}let N=await c.sendProxyV0Transaction({connection:T,chainId:w,subAccount:h,payerPublicKey:E,instructions:j,lookupTableAccounts:O});return d.emitTxPublicData(a.constructAdminData(x,w,o.map(e=>e.erc20TokenAddress),s,A,o)),N};exports.hinkalSolanaProxySwap=_;
@@ -9,9 +9,9 @@ import { createCustomSolanaConnection as o } from "../../functions/utils/create-
9
9
  import { AccountActions as s } from "../AccountActions/AccountActions.mjs";
10
10
  import { sendProxyV0Transaction as c } from "../../functions/pre-transaction/sendV0Transaction.mjs";
11
11
  import { getFeeStructure as l } from "../../functions/pre-transaction/getFeeStructure.mjs";
12
- import { emitTxPublicData as u } from "../../API/admin-calls.mjs";
12
+ import { calculateModifiedFeeStructure as u } from "../../functions/utils/fees.utils.mjs";
13
+ import { emitTxPublicData as d } from "../../API/admin-calls.mjs";
13
14
  import "../../constants/index.mjs";
14
- import { calculateModifiedFeeStructure as d } from "../../functions/utils/fees.utils.mjs";
15
15
  import { buildSolanaTransferInstructions as f } from "../../functions/pre-transaction/solanaTransfer.utils.mjs";
16
16
  import "../AccountActions/index.mjs";
17
17
  import { PublicKey as p, TransactionInstruction as m, TransactionMessage as h, VersionedTransaction as g } from "@solana/web3.js";
@@ -70,7 +70,7 @@ var _ = async (e, t) => {
70
70
  let e = {
71
71
  ...M,
72
72
  flatFee: 0n
73
- }, t = S && C !== void 0 ? await d(w, S, C, e) : e;
73
+ }, t = S && C !== void 0 ? await u(w, S, C, e) : e;
74
74
  if (t.flatFee > 0n) {
75
75
  let e = await i(w, t.feeToken);
76
76
  if (!e) throw Error("Failed to find fee token");
@@ -86,7 +86,7 @@ var _ = async (e, t) => {
86
86
  instructions: j,
87
87
  lookupTableAccounts: O
88
88
  });
89
- return u(a(x, w, o.map((e) => e.erc20TokenAddress), s, A, o)), N;
89
+ return d(a(x, w, o.map((e) => e.erc20TokenAddress), s, A, o)), N;
90
90
  };
91
91
  //#endregion
92
92
  export { b as hinkalSolanaProxySwap };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`../../functions/utils/fees.utils.cjs`),d=require(`./hinkalSolanaTransact.cjs`);var f=async(f,p,m,h,g,_,v,y=!1)=>{if(y)throw Error(`onlyGasEstimate is not supported for Solana transfer`);if(!r.isValidPrivateAddress(h))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let b=o.validateAndGetChainId(p),x=[...m],S=p.map(e=>e.erc20TokenAddress);if(S.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let{originalDeployer:C}=e.networkRegistry[b].contractData;if(!C)throw Error(`missing data`);let w=g??S[0],T={mintTo:w,nullifierCount:await c.calculateSolanaNullifierCount(f,b,S,x),rootInsertCount:2},E=_??await l.getFeeStructure(b,w,S,i.ExternalActionId.Transact,[],25n,T);E.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let D=-x[0],O=u.calculateTotalFee(D,E);x[0]-=O;let[k,A]=await Promise.all([f.getRandomRelay(b,!0),f.getEthereumAddressByChain(b)]);if(!k)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j={recipient:k,mint:S[0]===`11111111111111111111111111111111`?void 0:S[0]},M=s.constructAdminData(v,b,S,x,A);return d.hinkalSolanaTransact(f,{chainId:b,mintAddresses:S,amountChanges:x,relayAddress:k,recipient:t.solanaNativeAddress,signer:k,functionName:`transfer`,accounts:j,relayerFee:O,recipientAddress:h,recipientAmounts:[D],submit:{mode:a.SolanaSubmitMode.Relayer,adminData:M}})};exports.hinkalSolanaTransfer=f;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/solana-transact.types.cjs`);require(`../../types/index.cjs`);const o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/pre-transaction/calculateSolanaNullifierCount.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`),u=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/pre-transaction/index.cjs`);const d=require(`./hinkalSolanaTransact.cjs`);var f=async(f,p,m,h,g,_,v,y=!1)=>{if(y)throw Error(`onlyGasEstimate is not supported for Solana transfer`);if(!r.isValidPrivateAddress(h))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let b=o.validateAndGetChainId(p),x=[...m],S=p.map(e=>e.erc20TokenAddress);if(S.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let{originalDeployer:C}=e.networkRegistry[b].contractData;if(!C)throw Error(`missing data`);let w=g??S[0],T={mintTo:w,nullifierCount:await c.calculateSolanaNullifierCount(f,b,S,x),rootInsertCount:2},E=_??await l.getFeeStructure(b,w,S,i.ExternalActionId.Transact,[],25n,T);E.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let D=-x[0],O=u.calculateTotalFee(D,E);x[0]-=O;let[k,A]=await Promise.all([f.getRandomRelay(b,!0),f.getEthereumAddressByChain(b)]);if(!k)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j={recipient:k,mint:S[0]===`11111111111111111111111111111111`?void 0:S[0]},M=s.constructAdminData(v,b,S,x,A);return d.hinkalSolanaTransact(f,{chainId:b,mintAddresses:S,amountChanges:x,relayAddress:k,recipient:t.solanaNativeAddress,signer:k,functionName:`transfer`,accounts:j,relayerFee:O,recipientAddress:h,recipientAmounts:[D],submit:{mode:a.SolanaSubmitMode.Relayer,adminData:M}})};exports.hinkalSolanaTransfer=f;
@@ -9,8 +9,8 @@ import { validateAndGetChainId as s } from "../../functions/utils/token-check.ut
9
9
  import { constructAdminData as c } from "../../functions/pre-transaction/constructAdminData.mjs";
10
10
  import { calculateSolanaNullifierCount as l } from "../../functions/pre-transaction/calculateSolanaNullifierCount.mjs";
11
11
  import { getFeeStructure as u } from "../../functions/pre-transaction/getFeeStructure.mjs";
12
- import "../../functions/pre-transaction/index.mjs";
13
12
  import { calculateTotalFee as d } from "../../functions/utils/fees.utils.mjs";
13
+ import "../../functions/pre-transaction/index.mjs";
14
14
  import { hinkalSolanaTransact as f } from "./hinkalSolanaTransact.mjs";
15
15
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaTransfer.ts
16
16
  var p = async (p, m, h, g, _, v, y, b = !1) => {