@hinkal/common 0.2.33 → 0.2.35

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 (167) hide show
  1. package/API/callNearIntentsAPI.cjs +1 -0
  2. package/API/callNearIntentsAPI.d.ts +3 -0
  3. package/API/callNearIntentsAPI.mjs +8 -0
  4. package/API/enclaveSignatureCalls.cjs +1 -1
  5. package/API/enclaveSignatureCalls.d.ts +1 -1
  6. package/API/enclaveSignatureCalls.mjs +1 -1
  7. package/API/index.cjs +1 -1
  8. package/API/index.d.ts +1 -0
  9. package/API/index.mjs +1 -0
  10. package/constants/bridging.constants.cjs +1 -1
  11. package/constants/bridging.constants.d.ts +15 -1
  12. package/constants/bridging.constants.mjs +25 -5
  13. package/constants/chains.constants.cjs +1 -1
  14. package/constants/chains.constants.d.ts +12 -1
  15. package/constants/chains.constants.mjs +94 -26
  16. package/constants/index.cjs +1 -1
  17. package/constants/index.mjs +1 -0
  18. package/constants/protocol.constants.cjs +1 -1
  19. package/constants/protocol.constants.d.ts +3 -0
  20. package/constants/protocol.constants.mjs +2 -2
  21. package/constants/server.constants.cjs +1 -1
  22. package/constants/server.constants.d.ts +2 -0
  23. package/constants/server.constants.mjs +2 -0
  24. package/constants/token-data/ERC20Registry.cjs +1 -1
  25. package/constants/token-data/ERC20Registry.mjs +49 -14
  26. package/constants/token-data/avalancheRegistry.json.cjs +1 -0
  27. package/constants/token-data/avalancheRegistry.json.mjs +44 -0
  28. package/constants/token-data/bnbMainnetRegistry.json.cjs +1 -0
  29. package/constants/token-data/bnbMainnetRegistry.json.mjs +44 -0
  30. package/constants/token-data/cronosRegistry.json.cjs +1 -0
  31. package/constants/token-data/cronosRegistry.json.mjs +44 -0
  32. package/constants/token-data/hyperEvmRegistry.json.cjs +1 -0
  33. package/constants/token-data/hyperEvmRegistry.json.mjs +36 -0
  34. package/constants/token-data/index.cjs +1 -1
  35. package/constants/token-data/index.d.ts +58 -1
  36. package/constants/token-data/index.mjs +10 -2
  37. package/constants/token-data/inkRegistry.json.cjs +1 -0
  38. package/constants/token-data/inkRegistry.json.mjs +28 -0
  39. package/constants/token-data/monadRegistry.json.cjs +1 -0
  40. package/constants/token-data/monadRegistry.json.mjs +36 -0
  41. package/constants/token-data/plasmaRegistry.json.cjs +1 -0
  42. package/constants/token-data/plasmaRegistry.json.mjs +28 -0
  43. package/constants/token-data/popularNonRebasingTokens.cjs +1 -0
  44. package/constants/token-data/popularNonRebasingTokens.d.ts +2 -0
  45. package/constants/token-data/popularNonRebasingTokens.mjs +11 -0
  46. package/constants/tokens.constants.cjs +1 -1
  47. package/constants/tokens.constants.mjs +8 -1
  48. package/data-structures/Hinkal/Hinkal.cjs +1 -1
  49. package/data-structures/Hinkal/Hinkal.d.ts +8 -2
  50. package/data-structures/Hinkal/Hinkal.mjs +123 -101
  51. package/data-structures/Hinkal/IHinkal.d.ts +8 -2
  52. package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  53. package/data-structures/Hinkal/handleAutoDepositBack.mjs +15 -15
  54. package/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  55. package/data-structures/Hinkal/hinkalClaimUtxo.mjs +33 -35
  56. package/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  57. package/data-structures/Hinkal/hinkalDepositAndBridge.mjs +43 -49
  58. package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  59. package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +38 -40
  60. package/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -0
  61. package/data-structures/Hinkal/hinkalNearDepositAndBridge.d.ts +6 -0
  62. package/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +43 -0
  63. package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  64. package/data-structures/Hinkal/hinkalPrivateWallet.mjs +21 -26
  65. package/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  66. package/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +62 -64
  67. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  68. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
  69. package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +36 -36
  70. package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
  71. package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +7 -7
  72. package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
  73. package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +9 -9
  74. package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
  75. package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +8 -8
  76. package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  77. package/data-structures/Hinkal/hinkalSolanaSwap.mjs +50 -51
  78. package/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  79. package/data-structures/Hinkal/hinkalSolanaTransfer.mjs +45 -46
  80. package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  81. package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +38 -39
  82. package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  83. package/data-structures/Hinkal/hinkalSwap.mjs +18 -19
  84. package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  85. package/data-structures/Hinkal/hinkalTransfer.mjs +21 -22
  86. package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  87. package/data-structures/Hinkal/hinkalWithdraw.mjs +24 -25
  88. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  89. package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +39 -41
  90. package/data-structures/Hinkal/index.cjs +1 -1
  91. package/data-structures/Hinkal/index.d.ts +1 -0
  92. package/data-structures/Hinkal/index.mjs +1 -0
  93. package/data-structures/crypto-keys/keys.cjs +1 -1
  94. package/data-structures/crypto-keys/keys.d.ts +18 -0
  95. package/data-structures/crypto-keys/keys.mjs +10 -0
  96. package/data-structures/index.cjs +1 -1
  97. package/data-structures/index.mjs +1 -0
  98. package/error-handling/error-codes.constants.cjs +1 -1
  99. package/error-handling/error-codes.constants.d.ts +4 -0
  100. package/error-handling/error-codes.constants.mjs +4 -0
  101. package/error-handling/get-error.message.cjs +1 -1
  102. package/error-handling/get-error.message.mjs +2 -1
  103. package/functions/index.cjs +1 -1
  104. package/functions/index.mjs +8 -6
  105. package/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  106. package/functions/pre-transaction/buildCommitmentValidationData.d.ts +12 -2
  107. package/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -36
  108. package/functions/pre-transaction/sendV0Transaction.cjs +2 -1
  109. package/functions/pre-transaction/sendV0Transaction.d.ts +2 -2
  110. package/functions/pre-transaction/sendV0Transaction.mjs +65 -60
  111. package/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  112. package/functions/snarkjs/constructGeneralZkProof.d.ts +1 -0
  113. package/functions/snarkjs/constructGeneralZkProof.mjs +6 -5
  114. package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  115. package/functions/snarkjs/constructSolanaZkProof.d.ts +1 -0
  116. package/functions/snarkjs/constructSolanaZkProof.mjs +35 -34
  117. package/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -0
  118. package/functions/snarkjs/generateMainAndCommitmentZkProof.d.ts +11 -0
  119. package/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +16 -0
  120. package/functions/snarkjs/generateZkProof.cjs +1 -1
  121. package/functions/snarkjs/generateZkProof.d.ts +3 -3
  122. package/functions/snarkjs/generateZkProof.mjs +5 -9
  123. package/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
  124. package/functions/snarkjs/generateZkProofEnclave.d.ts +2 -2
  125. package/functions/snarkjs/generateZkProofEnclave.mjs +8 -8
  126. package/functions/snarkjs/generateZkProofSelf.cjs +1 -1
  127. package/functions/snarkjs/generateZkProofSelf.mjs +5 -5
  128. package/functions/snarkjs/index.cjs +1 -1
  129. package/functions/snarkjs/index.d.ts +1 -0
  130. package/functions/snarkjs/index.mjs +1 -0
  131. package/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
  132. package/functions/snarkjs/verifyCommitmentValidationData.mjs +5 -5
  133. package/functions/utils/customEnclaveFunctionsRegister.d.ts +3 -3
  134. package/functions/utils/enclave-signature-storage.cjs +1 -1
  135. package/functions/utils/enclave-signature-storage.d.ts +1 -1
  136. package/functions/utils/enclave-signature-storage.mjs +1 -1
  137. package/functions/utils/index.cjs +1 -1
  138. package/functions/utils/index.d.ts +1 -0
  139. package/functions/utils/index.mjs +6 -5
  140. package/functions/utils/nearIntents.utils.cjs +1 -0
  141. package/functions/utils/nearIntents.utils.d.ts +11 -0
  142. package/functions/utils/nearIntents.utils.mjs +36 -0
  143. package/functions/utils/time.utils.cjs +1 -1
  144. package/functions/utils/time.utils.d.ts +1 -0
  145. package/functions/utils/time.utils.mjs +2 -2
  146. package/functions/web3/oneInchAPI.cjs +1 -1
  147. package/functions/web3/oneInchAPI.mjs +1 -1
  148. package/index.cjs +1 -1
  149. package/index.mjs +320 -315
  150. package/package.json +1 -1
  151. package/types/index.d.ts +1 -0
  152. package/types/near-intents.types.d.ts +60 -0
  153. package/types/solana.types.d.ts +1 -0
  154. package/webworker/{logError-fCJ4HXQz.js → logError-DoUkEIFE.js} +14 -14
  155. package/webworker/package.json +1 -1
  156. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  157. package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  158. package/webworker/snarkjsWorkerNode.cjs +1 -1
  159. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  160. package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  161. package/webworker/utxoWorkerNode.cjs +1 -1
  162. package/webworker/viteWorkerURL.constant.cjs +3 -3
  163. package/webworker/viteWorkerURL.constant.mjs +3 -3
  164. package/webworker/{workerProxy-BNBqYien.js → workerProxy-DQJE57Ye.js} +1 -1
  165. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  166. package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  167. package/webworker/zkProofWorkerNode.cjs +1 -1
@@ -12,18 +12,17 @@ import { constructAdminData as l } from "../../functions/pre-transaction/constru
12
12
  import { AccountActions as u } from "../AccountActions/AccountActions.mjs";
13
13
  import { recipientUtxoProcessing as d } from "../../functions/pre-transaction/recipientUtxoProcessing.mjs";
14
14
  import { getFeeStructure as f } from "../../functions/pre-transaction/getFeeStructure.mjs";
15
- import { buildCommitmentValidationData as p } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
16
15
  import "../../functions/pre-transaction/index.mjs";
17
- import { uniswapWorkaround as m } from "../../functions/utils/involves-permit2-op.mjs";
18
- import { convertEmporiumOpToCallInfo as h } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
19
- import { getAuthorizationDataIfNeeded as g } from "../../functions/private-wallet/emporium.helpers.mjs";
20
- import { constructZkProof as _ } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
21
- import { transactCallRelayer as v } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
22
- import { mergeWithFeeStructure as y } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
23
- import { mergeWithFeeStructureEmporium as b } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
24
- import { handleAutoDepositBack as x } from "./handleAutoDepositBack.mjs";
16
+ import { uniswapWorkaround as p } from "../../functions/utils/involves-permit2-op.mjs";
17
+ import { convertEmporiumOpToCallInfo as m } from "../../functions/utils/convertEmporiumOpToCallInfo.mjs";
18
+ import { getAuthorizationDataIfNeeded as h } from "../../functions/private-wallet/emporium.helpers.mjs";
19
+ import { constructZkProof as g } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
20
+ import { transactCallRelayer as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
+ import { mergeWithFeeStructure as v } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
22
+ import { mergeWithFeeStructureEmporium as y } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
23
+ import { handleAutoDepositBack as b } from "./handleAutoDepositBack.mjs";
25
24
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalPrivateWallet.ts
26
- var S = async (e, t, n, r, i) => {
25
+ var x = async (e, t, n, r, i) => {
27
26
  let a = [...await s(e, t, n, r)], l = [], u = o().toString();
28
27
  for (let t = 0; t < n.length; t += 1) {
29
28
  let { outputUtxos: n } = c(e.userKeys, a[t], r[t], u);
@@ -33,21 +32,17 @@ var S = async (e, t, n, r, i) => {
33
32
  inputUtxosArray: a,
34
33
  outputUtxosArray: l
35
34
  };
36
- }, C = async (o, s, c, d, C, w, T, E, D, O, k, A = !1, j, M, N) => {
37
- if (N && !i(N.recipientInfo)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
38
- if (T.length > 0 && !E) throw Error("Subaccount is required for private wallet transactions");
39
- let P = c.map((e) => e.erc20TokenAddress), F = await o.getEthereumAddressByChain(s), I = E ? u.getAddressFromSubAccount(s, E) : void 0, { contractData: L } = t[s], { emporiumAddress: R } = L;
40
- if (!R) throw Error("No Emporium Address Provided");
41
- let z = O ?? await f(s, D, P, e.Emporium, w.map((e) => h(e, I ?? "", s)));
42
- for (I ? await b(o, s, I, w, P, d, z, T.find((e) => r(e.token.erc20TokenAddress, z.feeToken))?.amount ?? 0n) : y(s, P, d, z); C.length < P.length;) C.push(!1);
43
- let [{ inputUtxosArray: B, outputUtxosArray: V }, H] = await Promise.all([S(o, s, P, d, N), k ?? await o.getRandomRelay(s, !0)]);
44
- if (!H) throw Error(a.RELAYER_NOT_AVAILABLE);
45
- let U = E ? u.getPrivateKeyFromSubAccount(s, E) : void 0, [{ zkCallData: W, circomData: G, dimData: K }, q, J] = await Promise.all([
46
- _(o.merkleTreeHinkalByChain[s], B, V, o.userKeys, e.Emporium, R, w, o.generateProofRemotely, z, H, s, C, void 0, void 0, U),
47
- g(s, U),
48
- p(s, o.userKeys, P, B)
49
- ]), Y = await v(s, W, K, G, J, m(w), q, l(M, s, T.map((e) => e.token.erc20TokenAddress), T.map((e) => e.amount), F, M === n.PublicSwap ? T.map(({ token: e }) => e) : void 0));
50
- return A && E && x(o, s, I, E, z.feeToken, j, T, G), Y;
35
+ }, S = async (o, s, c, d, S, C, w, T, E, D, O, k = !1, A, j, M) => {
36
+ if (M && !i(M.recipientInfo)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
37
+ if (w.length > 0 && !T) throw Error("Subaccount is required for private wallet transactions");
38
+ let N = c.map((e) => e.erc20TokenAddress), P = await o.getEthereumAddressByChain(s), F = T ? u.getAddressFromSubAccount(s, T) : void 0, { contractData: I } = t[s], { emporiumAddress: L } = I;
39
+ if (!L) throw Error("No Emporium Address Provided");
40
+ let R = D ?? await f(s, E, N, e.Emporium, C.map((e) => m(e, F ?? "", s)));
41
+ for (F ? await y(o, s, F, C, N, d, R, w.find((e) => r(e.token.erc20TokenAddress, R.feeToken))?.amount ?? 0n) : v(s, N, d, R); S.length < N.length;) S.push(!1);
42
+ let [{ inputUtxosArray: z, outputUtxosArray: B }, V] = await Promise.all([x(o, s, N, d, M), O ?? await o.getRandomRelay(s, !0)]);
43
+ if (!V) throw Error(a.RELAYER_NOT_AVAILABLE);
44
+ let H = T ? u.getPrivateKeyFromSubAccount(s, T) : void 0, [{ zkCallData: U, circomData: W, dimData: G, commitmentValidationData: K }, q] = await Promise.all([g(o.merkleTreeHinkalByChain[s], z, B, o.userKeys, e.Emporium, L, C, o.generateProofRemotely, R, V, s, S, void 0, void 0, H), h(s, H)]), J = await _(s, U, G, W, K, p(C), q, l(j, s, w.map((e) => e.token.erc20TokenAddress), w.map((e) => e.amount), P, j === n.PublicSwap ? w.map(({ token: e }) => e) : void 0));
45
+ return k && T && b(o, s, F, T, R.feeToken, A, w, W), J;
51
46
  };
52
47
  //#endregion
53
- export { C as hinkalPrivateWallet };
48
+ export { S as hinkalPrivateWallet };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../crypto-keys/keys.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../utxo/Utxo.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`),d=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const f=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let m=require(`ethers`);var h=async(h,g,_,v,y)=>{let b=c.validateAndGetChainId([g]),x=g.erc20TokenAddress;if(_.getTokenAddress(b)!==x)throw Error(`Off-chain UTXO token mismatch`);let S=y?new a.UserKeys(y):new a.UserKeys(_.nullifyingKey,_.nullifyingKey);if(!_.nullifyingKey&&!y)throw Error(`Claimable UTXO nullifyingKey is missing`);let C=S.getShieldedPrivateKey();if(_.nullifyingKey&&_.nullifyingKey!==C)throw Error(`Claimable UTXO key mismatch`);let{originalDeployer:w}=t.networkRegistry[b].contractData;if(!w)throw Error(`missing data`);let T=s.Utxo.createFrom(_,{nullifyingKey:C}),E=v??await u.getFeeStructure(b,x,[x],e.ExternalActionId.Transact,void 0,void 0,{mintTo:x,nullifierCount:1});if(E.feeToken!==x)throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let D=E.variableRate>0n?E.variableRate:n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(T.amount<=E.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let O=T.amount-E.flatFee,k=O*D/10000n,A=O-k;if(A<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let j=E.flatFee+k,[M,N,P,,F]=h.getRecipientInfo().split(`,`);if(!N||!P||!M||!F)throw Error(`Invalid recipient info`);let I=o.getCurrentTimeInSeconds().toString(),L=new s.Utxo({amount:0n,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,nullifyingKey:S.getShieldedPrivateKey(),...T.isNewStyle?{spendingPublicKey:S.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),R=new s.Utxo({amount:0n,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,nullifyingKey:S.getShieldedPrivateKey(),timeStamp:I,spendingPublicKey:S.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),z=new s.Utxo({amount:A,erc20TokenAddress:T.erc20TokenAddress,mintAddress:T.mintAddress,timeStamp:I,H0:[BigInt(N),BigInt(P)],stealthAddress:M,encryptionKey:F,isNewStyle:!0}),B=[T,L],V=[R,z],H=await h.getRandomRelay(b,!0);if(!H)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let U=a.UserKeys.findCorrectRandomization(i.randomBigInt(31),S.getShieldedPrivateKey()),W={tokenNumber:1,nullifierAmount:B.length,outputAmount:V.length},G=l.calcEncryptedOutputs([V])[0].map(e=>Array.from(m.ethers.getBytes(e))),[{proofAArr:K,proofBArr:q,proofCArr:J,publicInputsArr:Y},X]=await Promise.all([f.constructSolanaZkProof(h.generateProofRemotely,h.merkleTreeHinkalByChain[b],S,[x],[B],[V],U,j,0n,n.solanaNativeAddress,H,W,G,b),d.buildCommitmentValidationData(b,S,[x],[B])]),Z={recipient:H,mint:x===`11111111111111111111111111111111`?void 0:x};return p.solanaTransactCallRelayer({chainId:b,relayAddress:H,functionName:`transfer`,args:{proofAArr:K,proofBArr:q,proofCArr:J,publicInputsArr:Y,encryptedOutputs:G,relayerFee:j.toString(),dimensions:W},accounts:Z,commitmentValidationData:X})};exports.hinkalSolanaClaimUtxo=h;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../crypto-keys/keys.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../utxo/Utxo.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`),d=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),f=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let p=require(`ethers`);var m=async(m,h,g,_,v)=>{let y=c.validateAndGetChainId([h]),b=h.erc20TokenAddress;if(g.getTokenAddress(y)!==b)throw Error(`Off-chain UTXO token mismatch`);let x=v?new a.UserKeys(v):new a.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let S=x.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==S)throw Error(`Claimable UTXO key mismatch`);let{originalDeployer:C}=t.networkRegistry[y].contractData;if(!C)throw Error(`missing data`);let w=s.Utxo.createFrom(g,{nullifyingKey:S}),T=_??await u.getFeeStructure(y,b,[b],e.ExternalActionId.Transact,void 0,void 0,{mintTo:b,nullifierCount:1});if(T.feeToken!==b)throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let E=T.variableRate>0n?T.variableRate:n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(w.amount<=T.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let D=w.amount-T.flatFee,O=D*E/10000n,k=D-O;if(k<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let A=T.flatFee+O,[j,M,N,,P]=m.getRecipientInfo().split(`,`);if(!M||!N||!j||!P)throw Error(`Invalid recipient info`);let F=o.getCurrentTimeInSeconds().toString(),I=new s.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),...w.isNewStyle?{spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),L=new s.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),timeStamp:F,spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),R=new s.Utxo({amount:k,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,timeStamp:F,H0:[BigInt(M),BigInt(N)],stealthAddress:j,encryptionKey:P,isNewStyle:!0}),z=[w,I],B=[L,R],V=await m.getRandomRelay(y,!0);if(!V)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=a.UserKeys.findCorrectRandomization(i.randomBigInt(31),x.getShieldedPrivateKey()),U={tokenNumber:1,nullifierAmount:z.length,outputAmount:B.length},W=l.calcEncryptedOutputs([B])[0].map(e=>Array.from(p.ethers.getBytes(e))),{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,commitmentValidationData:Y}=await d.constructSolanaZkProof(m.generateProofRemotely,m.merkleTreeHinkalByChain[y],x,[b],[z],[B],H,A,0n,n.solanaNativeAddress,V,U,W,y),X={recipient:V,mint:b===`11111111111111111111111111111111`?void 0:b};return f.solanaTransactCallRelayer({chainId:y,relayAddress:V,functionName:`transfer`,args:{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,encryptedOutputs:W,relayerFee:A.toString(),dimensions:U},accounts:X,commitmentValidationData:Y})};exports.hinkalSolanaClaimUtxo=m;
@@ -10,84 +10,82 @@ import { Utxo as c } from "../utxo/Utxo.mjs";
10
10
  import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
11
11
  import { calcEncryptedOutputs as u } from "../../functions/snarkjs/common.snarkjs.mjs";
12
12
  import { getFeeStructure as d } from "../../functions/pre-transaction/getFeeStructure.mjs";
13
- import { buildCommitmentValidationData as f } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
14
- import "../../functions/pre-transaction/index.mjs";
15
- import { constructSolanaZkProof as p } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
16
- import { solanaTransactCallRelayer as m } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
17
- import { ethers as h } from "ethers";
13
+ import { constructSolanaZkProof as f } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
14
+ import { solanaTransactCallRelayer as p } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
15
+ import { ethers as m } from "ethers";
18
16
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.ts
19
- var g = async (g, _, v, y, b) => {
20
- let x = l([_]), S = _.erc20TokenAddress;
21
- if (v.getTokenAddress(x) !== S) throw Error("Off-chain UTXO token mismatch");
22
- let C = b ? new o(b) : new o(v.nullifyingKey, v.nullifyingKey);
23
- if (!v.nullifyingKey && !b) throw Error("Claimable UTXO nullifyingKey is missing");
24
- let w = C.getShieldedPrivateKey();
25
- if (v.nullifyingKey && v.nullifyingKey !== w) throw Error("Claimable UTXO key mismatch");
26
- let { originalDeployer: T } = t[x].contractData;
27
- if (!T) throw Error("missing data");
28
- let E = c.createFrom(v, { nullifyingKey: w }), D = y ?? await d(x, S, [S], e.Transact, void 0, void 0, {
29
- mintTo: S,
17
+ var h = async (h, g, _, v, y) => {
18
+ let b = l([g]), x = g.erc20TokenAddress;
19
+ if (_.getTokenAddress(b) !== x) throw Error("Off-chain UTXO token mismatch");
20
+ let S = y ? new o(y) : new o(_.nullifyingKey, _.nullifyingKey);
21
+ if (!_.nullifyingKey && !y) throw Error("Claimable UTXO nullifyingKey is missing");
22
+ let C = S.getShieldedPrivateKey();
23
+ if (_.nullifyingKey && _.nullifyingKey !== C) throw Error("Claimable UTXO key mismatch");
24
+ let { originalDeployer: w } = t[b].contractData;
25
+ if (!w) throw Error("missing data");
26
+ let T = c.createFrom(_, { nullifyingKey: C }), E = v ?? await d(b, x, [x], e.Transact, void 0, void 0, {
27
+ mintTo: x,
30
28
  nullifierCount: 1
31
29
  });
32
- if (D.feeToken !== S) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
33
- let O = D.variableRate > 0n ? D.variableRate : n;
34
- if (E.amount <= D.flatFee) throw Error(i.INSUFFICIENT_FUNDS_TO_TRANSACT);
35
- let k = E.amount - D.flatFee, A = k * O / 10000n, j = k - A;
36
- if (j <= 0n) throw Error(i.RECIPIENT_AMOUNT_INVALID);
37
- let M = D.flatFee + A, [N, P, F, , I] = g.getRecipientInfo().split(",");
38
- if (!P || !F || !N || !I) throw Error("Invalid recipient info");
39
- let L = s().toString(), R = new c({
30
+ if (E.feeToken !== x) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
31
+ let D = E.variableRate > 0n ? E.variableRate : n;
32
+ if (T.amount <= E.flatFee) throw Error(i.INSUFFICIENT_FUNDS_TO_TRANSACT);
33
+ let O = T.amount - E.flatFee, k = O * D / 10000n, A = O - k;
34
+ if (A <= 0n) throw Error(i.RECIPIENT_AMOUNT_INVALID);
35
+ let j = E.flatFee + k, [M, N, P, , F] = h.getRecipientInfo().split(",");
36
+ if (!N || !P || !M || !F) throw Error("Invalid recipient info");
37
+ let I = s().toString(), L = new c({
40
38
  amount: 0n,
41
- erc20TokenAddress: E.erc20TokenAddress,
42
- mintAddress: E.mintAddress,
43
- nullifyingKey: C.getShieldedPrivateKey(),
44
- ...E.isNewStyle ? {
45
- spendingPublicKey: C.getSpendingKeyPair().pubSpendingBJJPoint,
39
+ erc20TokenAddress: T.erc20TokenAddress,
40
+ mintAddress: T.mintAddress,
41
+ nullifyingKey: S.getShieldedPrivateKey(),
42
+ ...T.isNewStyle ? {
43
+ spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
46
44
  isNewStyle: !0
47
45
  } : { isNewStyle: !1 }
48
- }), z = new c({
46
+ }), R = new c({
49
47
  amount: 0n,
50
- erc20TokenAddress: E.erc20TokenAddress,
51
- mintAddress: E.mintAddress,
52
- nullifyingKey: C.getShieldedPrivateKey(),
53
- timeStamp: L,
54
- spendingPublicKey: C.getSpendingKeyPair().pubSpendingBJJPoint,
48
+ erc20TokenAddress: T.erc20TokenAddress,
49
+ mintAddress: T.mintAddress,
50
+ nullifyingKey: S.getShieldedPrivateKey(),
51
+ timeStamp: I,
52
+ spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
55
53
  isNewStyle: !0
56
- }), B = new c({
57
- amount: j,
58
- erc20TokenAddress: E.erc20TokenAddress,
59
- mintAddress: E.mintAddress,
60
- timeStamp: L,
61
- H0: [BigInt(P), BigInt(F)],
62
- stealthAddress: N,
63
- encryptionKey: I,
54
+ }), z = new c({
55
+ amount: A,
56
+ erc20TokenAddress: T.erc20TokenAddress,
57
+ mintAddress: T.mintAddress,
58
+ timeStamp: I,
59
+ H0: [BigInt(N), BigInt(P)],
60
+ stealthAddress: M,
61
+ encryptionKey: F,
64
62
  isNewStyle: !0
65
- }), V = [E, R], H = [z, B], U = await g.getRandomRelay(x, !0);
66
- if (!U) throw Error(i.RELAYER_NOT_AVAILABLE);
67
- let W = o.findCorrectRandomization(a(31), C.getShieldedPrivateKey()), G = {
63
+ }), B = [T, L], V = [R, z], H = await h.getRandomRelay(b, !0);
64
+ if (!H) throw Error(i.RELAYER_NOT_AVAILABLE);
65
+ let U = o.findCorrectRandomization(a(31), S.getShieldedPrivateKey()), W = {
68
66
  tokenNumber: 1,
69
- nullifierAmount: V.length,
70
- outputAmount: H.length
71
- }, K = u([H])[0].map((e) => Array.from(h.getBytes(e))), [{ proofAArr: q, proofBArr: J, proofCArr: Y, publicInputsArr: X }, Z] = await Promise.all([p(g.generateProofRemotely, g.merkleTreeHinkalByChain[x], C, [S], [V], [H], W, M, 0n, r, U, G, K, x), f(x, C, [S], [V])]), Q = {
72
- recipient: U,
73
- mint: S === "11111111111111111111111111111111" ? void 0 : S
67
+ nullifierAmount: B.length,
68
+ outputAmount: V.length
69
+ }, G = u([V])[0].map((e) => Array.from(m.getBytes(e))), { proofAArr: K, proofBArr: q, proofCArr: J, publicInputsArr: Y, commitmentValidationData: X } = await f(h.generateProofRemotely, h.merkleTreeHinkalByChain[b], S, [x], [B], [V], U, j, 0n, r, H, W, G, b), Z = {
70
+ recipient: H,
71
+ mint: x === "11111111111111111111111111111111" ? void 0 : x
74
72
  };
75
- return m({
76
- chainId: x,
77
- relayAddress: U,
73
+ return p({
74
+ chainId: b,
75
+ relayAddress: H,
78
76
  functionName: "transfer",
79
77
  args: {
80
- proofAArr: q,
81
- proofBArr: J,
82
- proofCArr: Y,
83
- publicInputsArr: X,
84
- encryptedOutputs: K,
85
- relayerFee: M.toString(),
86
- dimensions: G
78
+ proofAArr: K,
79
+ proofBArr: q,
80
+ proofCArr: J,
81
+ publicInputsArr: Y,
82
+ encryptedOutputs: G,
83
+ relayerFee: j.toString(),
84
+ dimensions: W
87
85
  },
88
- accounts: Q,
89
- commitmentValidationData: Z
86
+ accounts: Z,
87
+ commitmentValidationData: X
90
88
  });
91
89
  };
92
90
  //#endregion
93
- export { g as hinkalSolanaClaimUtxo };
91
+ export { h as hinkalSolanaClaimUtxo };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/web3/etherFunctions.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../functions/utils/time.utils.cjs`),l=require(`../utxo/Utxo.cjs`),u=require(`../../functions/utils/solanaMint.utils.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/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),v=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const y=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),b=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const x=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),S=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),C=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let w=require(`ethers`),T=require(`@solana/web3.js`),E=require(`@coral-xyz/anchor`);var D=(e,r,i,a)=>{let{hinkalIdl:c,hinkalAddress:l,originalDeployer:d}=t.networkRegistry[r].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=e.userKeys.getShieldedPrivateKey(),h=e.getSolanaProgram(c),g=e.getSolanaPublicKey(),_=new T.PublicKey(d),v=new T.PublicKey(l),{mintPublicKey:y}=u.formatMintAddress(i.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),w=a.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(s.UserKeys.findCorrectRandomization(o.randomBigInt(31),m),m,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===n.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:a,anchorStealthStructures:w}},O=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new E.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),k=async(e,t,n,i,a,o,s)=>{let c=i.map(e=>e+b.calculateTotalFee(e,o)),l=D(e,t,n,c),d=(await C.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await O(l).rpc(),p=await l.program.provider.connection.getLatestBlockhash();await l.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(l.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await C.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=u.formatMintAddress(n.erc20TokenAddress),_=y.getOnChainUtxosFromReceiptSolana(m,l.program,e.userKeys,g),v=[],x=[..._];return a.forEach((e,t)=>{let n=c[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);v.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:v,depositTxHash:f,statusId:d}},A=async(e,i,d,p,h,g,_,y,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=t.networkRegistry[i].contractData;if(!A)throw Error(`missing data`);let j=await e.getRandomRelay(i,!0);if(!j)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=c.getCurrentTimeInSeconds().toString(),N=e.generateProofRemotely?5:1,P=[];for(let t=0;t<p.length;t+=N){let r=p.slice(t,t+N),a=await Promise.all(r.map(async({recipientAddress:t,utxo:r},a)=>{let{compressedAddress:c}=u.formatMintAddress(n.solanaNativeAddress),p=new l.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:M,...r.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[r,p],y=[p],S=s.UserKeys.findCorrectRandomization(o.randomBigInt(31),e.userKeys.getShieldedPrivateKey()),C={tokenNumber:1,nullifierAmount:g.length,outputAmount:y.length},T=f.calcEncryptedOutputs([y])[0][0],E=Array.from(w.ethers.getBytes(T)),O=await b.calculateModifiedFeeStructure(i,d,_[a],h),A=m.constructAdminData(D,i,[k],[_[a]],await e.getEthereumAddress()),[{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I},L]=await Promise.all([x.constructSolanaZkProof(e.generateProofRemotely,e.merkleTreeHinkalByChain[i],e.userKeys,[k],[g],[y],S,O.flatFee,O.variableRate,t,j,C,[E],i),v.buildCommitmentValidationData(i,e.userKeys,[k],[g])]),R={recipient:t,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:i,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[E],relayerFee:O.flatFee.toString(),dimensions:C},accounts:R,adminData:A,commitmentValidationData:L}}));P.push(...a)}await C.safeUpdateDepositAndWithdrawStatus({id:y,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await S.solanaTransactCallRelayerBatch(i,P,g,T,E,O);return await C.safeUpdateDepositAndWithdrawStatus({id:y,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},j=async(t,n,r,a,o,s,c,l,u)=>{let f=d.validateAndGetChainId([n]),p=n.erc20TokenAddress,m=i.hashEthereumAddress(await t.getEthereumAddressByChain(f)),h=u?i.hashString(u):void 0,v=s??await g.getFeeStructure(f,p,[p],e.ExternalActionId.Transact,[],5n),{userDepositedUtxos:y,depositTxHash:b,statusId:x}=await k(t,f,n,r,a,v,m);return await _.waitForDepositedUtxosInMerkleTree(t,f,y),await A(t,f,n,y,v,m,r,x,o,c,l,h),b};exports.buildMultiPaymentDepositBuilder=O,exports.buildMultiPaymentDepositSetup=D,exports.hinkalSolanaDepositAndWithdraw=j,exports.hinkalSolanaWithdrawBatch=A;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/addresses.cjs`),a=require(`../../error-handling/error-codes.constants.cjs`),o=require(`../../functions/web3/etherFunctions.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../functions/utils/time.utils.cjs`),l=require(`../utxo/Utxo.cjs`),u=require(`../../functions/utils/solanaMint.utils.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/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),y=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const b=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),x=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),S=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let C=require(`ethers`),w=require(`@solana/web3.js`),T=require(`@coral-xyz/anchor`);var E=(e,r,i,a)=>{let{hinkalIdl:c,hinkalAddress:l,originalDeployer:d}=t.networkRegistry[r].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=e.userKeys.getShieldedPrivateKey(),h=e.getSolanaProgram(c),g=e.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(l),{mintPublicKey:y}=u.formatMintAddress(i.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=a.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(s.UserKeys.findCorrectRandomization(o.randomBigInt(31),m),m,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===n.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:a,anchorStealthStructures:T}},D=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new T.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),O=async(e,t,n,i,a,o,s)=>{let c=i.map(e=>e+y.calculateTotalFee(e,o)),l=E(e,t,n,c),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(l).rpc(),p=await l.program.provider.connection.getLatestBlockhash();await l.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(l.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:s,phase:r.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=u.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,l.program,e.userKeys,g),b=[],x=[..._];return a.forEach((e,t)=>{let n=c[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);b.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:b,depositTxHash:f,statusId:d}},k=async(e,i,d,p,h,g,_,v,w,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=t.networkRegistry[i].contractData;if(!A)throw Error(`missing data`);let j=await e.getRandomRelay(i,!0);if(!j)throw Error(a.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=c.getCurrentTimeInSeconds().toString(),N=e.generateProofRemotely?5:1,P=[];for(let t=0;t<p.length;t+=N){let r=p.slice(t,t+N),a=await Promise.all(r.map(async({recipientAddress:t,utxo:r},a)=>{let{compressedAddress:c}=u.formatMintAddress(n.solanaNativeAddress),p=new l.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:e.userKeys.getShieldedPrivateKey(),timeStamp:M,...r.isNewStyle?{spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[r,p],v=[p],x=s.UserKeys.findCorrectRandomization(o.randomBigInt(31),e.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=f.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(i,d,_[a],h),A=m.constructAdminData(E,i,[k],[_[a]],await e.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(e.generateProofRemotely,e.merkleTreeHinkalByChain[i],e.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,t,j,S,[T],i),R={recipient:t,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:i,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[T],relayerFee:D.flatFee.toString(),dimensions:S},accounts:R,adminData:A,commitmentValidationData:L,displayRecipient:O?.[a]}}));P.push(...a)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(i,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:i,hashedEthereumAddress:g,phase:r.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(t,n,r,a,o,s,c,l,u,f)=>{let p=d.validateAndGetChainId([n]),m=n.erc20TokenAddress,h=i.hashEthereumAddress(await t.getEthereumAddressByChain(p)),v=u?i.hashString(u):void 0,y=s??await g.getFeeStructure(p,m,[m],e.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(t,p,n,r,a,y,h);return await _.waitForDepositedUtxosInMerkleTree(t,p,b),await k(t,p,n,b,y,h,r,S,o,c,l,v,f),x};exports.buildMultiPaymentDepositBuilder=D,exports.buildMultiPaymentDepositSetup=E,exports.hinkalSolanaDepositAndWithdraw=A,exports.hinkalSolanaWithdrawBatch=k;
@@ -19,6 +19,6 @@ export type MultiPaymentDepositSetup = ReturnType<typeof buildMultiPaymentDeposi
19
19
  export declare const buildMultiPaymentDepositBuilder: (setup: MultiPaymentDepositSetup) => import('@coral-xyz/anchor/dist/cjs/program/namespace/methods').MethodsBuilder<import('@coral-xyz/anchor').Idl, import('@coral-xyz/anchor/dist/cjs/idl').IdlInstruction & {
20
20
  name: string;
21
21
  }, import('@coral-xyz/anchor/dist/cjs/idl').IdlInstructionAccountItem>;
22
- export declare const hinkalSolanaWithdrawBatch: (hinkal: IHinkal, chainId: number, token: ERC20Token, userDepositedUtxos: RecipientUtxo[], feeStructure: FeeStructure, hashedEthereumAddress: string, recipientAmounts: bigint[], statusId: string | undefined, txCompletionTime?: number, ref?: string, action?: AdminTransactionType, hashedDashboardAccountId?: string) => Promise<string>;
22
+ export declare const hinkalSolanaWithdrawBatch: (hinkal: IHinkal, chainId: number, token: ERC20Token, userDepositedUtxos: RecipientUtxo[], feeStructure: FeeStructure, hashedEthereumAddress: string, recipientAmounts: bigint[], statusId: string | undefined, txCompletionTime?: number, ref?: string, action?: AdminTransactionType, hashedDashboardAccountId?: string, displayRecipients?: string[]) => Promise<string>;
23
23
  export declare const hinkalSolanaDepositAndWithdraw: (hinkal: IHinkal, token: ERC20Token, recipientAmounts: bigint[], recipientAddresses: string[], txCompletionTime?: number, feeStructureOverride?: FeeStructure, // Should be passed fee for only one withdraw transaction, multiplication happening in this function
24
- ref?: string, action?: AdminTransactionType, dashboardAccountId?: string) => Promise<string>;
24
+ ref?: string, action?: AdminTransactionType, dashboardAccountId?: string, displayRecipients?: string[]) => Promise<string>;
@@ -17,24 +17,23 @@ import { constructAdminData as y } from "../../functions/pre-transaction/constru
17
17
  import { fetchSolanaTransaction as b } from "../../functions/pre-transaction/sendV0Transaction.mjs";
18
18
  import { getFeeStructure as x } from "../../functions/pre-transaction/getFeeStructure.mjs";
19
19
  import { waitForDepositedUtxosInMerkleTree as S } from "../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.mjs";
20
- import { buildCommitmentValidationData as C } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
21
20
  import "../../functions/pre-transaction/index.mjs";
22
- import { getOnChainUtxosFromReceiptSolana as w } from "../../functions/utils/getUtxosFromReceiptSolana.mjs";
23
- import { calculateModifiedFeeStructure as T, calculateTotalFee as E } from "../../functions/utils/fees.utils.mjs";
21
+ import { getOnChainUtxosFromReceiptSolana as C } from "../../functions/utils/getUtxosFromReceiptSolana.mjs";
22
+ import { calculateModifiedFeeStructure as w, calculateTotalFee as T } from "../../functions/utils/fees.utils.mjs";
24
23
  import "../../functions/web3/index.mjs";
25
- import { constructSolanaZkProof as D } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
26
- import { solanaTransactCallRelayerBatch as O } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
27
- import { safeUpdateDepositAndWithdrawStatus as k, updateDepositAndWithdrawStatus as A } from "../../API/deposit-and-withdraw-status-calls.mjs";
24
+ import { constructSolanaZkProof as E } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
25
+ import { solanaTransactCallRelayerBatch as D } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
26
+ import { safeUpdateDepositAndWithdrawStatus as O, updateDepositAndWithdrawStatus as k } from "../../API/deposit-and-withdraw-status-calls.mjs";
28
27
  import "../../functions/index.mjs";
29
- import { ethers as j } from "ethers";
30
- import { PublicKey as M } from "@solana/web3.js";
31
- import { BN as N } from "@coral-xyz/anchor";
28
+ import { ethers as A } from "ethers";
29
+ import { PublicKey as j } from "@solana/web3.js";
30
+ import { BN as M } from "@coral-xyz/anchor";
32
31
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.ts
33
- var P = (e, r, i, a) => {
32
+ var N = (e, r, i, a) => {
34
33
  let { hinkalIdl: o, hinkalAddress: l, originalDeployer: u } = t[r].contractData;
35
34
  if (!o) throw Error("No IDL configured for Solana program on this network");
36
35
  if (!u) throw Error("missing original deployer");
37
- let f = e.userKeys.getShieldedPrivateKey(), p = e.getSolanaProgram(o), y = e.getSolanaPublicKey(), b = new M(u), x = new M(l), { mintPublicKey: S } = d(i.erc20TokenAddress), C = S.toString(), w = _(x, b), T = v(x, b), E = g(x, b), D = a.map(() => h(m(c.findCorrectRandomization(s(31), f), f, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))), O = C === n;
36
+ let f = e.userKeys.getShieldedPrivateKey(), p = e.getSolanaProgram(o), y = e.getSolanaPublicKey(), b = new j(u), x = new j(l), { mintPublicKey: S } = d(i.erc20TokenAddress), C = S.toString(), w = _(x, b), T = v(x, b), E = g(x, b), D = a.map(() => h(m(c.findCorrectRandomization(s(31), f), f, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))), O = C === n;
38
37
  return {
39
38
  program: p,
40
39
  publicKey: y,
@@ -47,7 +46,7 @@ var P = (e, r, i, a) => {
47
46
  amounts: a,
48
47
  anchorStealthStructures: D
49
48
  };
50
- }, F = (e) => e.program.methods.multiPaymentDeposit(e.amounts.map((e) => new N(e.toString())), e.anchorStealthStructures, !0).accounts({
49
+ }, P = (e) => e.program.methods.multiPaymentDeposit(e.amounts.map((e) => new M(e.toString())), e.anchorStealthStructures, !0).accounts({
51
50
  mint: e.mint,
52
51
  signer: e.publicKey,
53
52
  signerAta: e.atasValue,
@@ -56,12 +55,12 @@ var P = (e, r, i, a) => {
56
55
  storageVault: e.storageVault,
57
56
  merkleAccount: e.merkleAccount,
58
57
  storageVaultAta: e.atasValue
59
- }), I = async (e, t, n, i, a, o, s) => {
60
- let c = i.map((e) => e + E(e, o)), l = P(e, t, n, c), u = (await A({
58
+ }), F = async (e, t, n, i, a, o, s) => {
59
+ let c = i.map((e) => e + T(e, o)), l = N(e, t, n, c), u = (await k({
61
60
  chainId: t,
62
61
  hashedEthereumAddress: s,
63
62
  phase: r.BEFORE_DEPOSIT
64
- })).id ?? void 0, f = await F(l).rpc(), p = await l.program.provider.connection.getLatestBlockhash();
63
+ })).id ?? void 0, f = await P(l).rpc(), p = await l.program.provider.connection.getLatestBlockhash();
65
64
  await l.program.provider.connection.confirmTransaction({
66
65
  blockhash: p.blockhash,
67
66
  lastValidBlockHeight: p.lastValidBlockHeight,
@@ -69,14 +68,14 @@ var P = (e, r, i, a) => {
69
68
  }, "finalized");
70
69
  let m = await b(l.program.provider.connection, f, "finalized");
71
70
  if (!m) throw Error("Transaction missing");
72
- await k({
71
+ await O({
73
72
  id: u,
74
73
  chainId: t,
75
74
  hashedEthereumAddress: s,
76
75
  phase: r.AFTER_DEPOSIT,
77
76
  depositTxHash: f
78
77
  });
79
- let { compressedAddress: h } = d(n.erc20TokenAddress), g = w(m, l.program, e.userKeys, h), _ = [], v = [...g];
78
+ let { compressedAddress: h } = d(n.erc20TokenAddress), g = C(m, l.program, e.userKeys, h), _ = [], v = [...g];
80
79
  return a.forEach((e, t) => {
81
80
  let n = c[t], r = v.find((e) => e.amount === n);
82
81
  if (!r) throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);
@@ -89,19 +88,19 @@ var P = (e, r, i, a) => {
89
88
  depositTxHash: f,
90
89
  statusId: u
91
90
  };
92
- }, L = async (e, i, a, f, m, h, g, _, v, b, x, S) => {
93
- let w = a.erc20TokenAddress;
91
+ }, I = async (e, i, a, f, m, h, g, _, v, b, x, S, C) => {
92
+ let T = a.erc20TokenAddress;
94
93
  if (f.length === 0) throw Error("userDepositedUtxos must not be empty");
95
- let { originalDeployer: E } = t[i].contractData;
96
- if (!E) throw Error("missing data");
97
- let A = await e.getRandomRelay(i, !0);
98
- if (!A) throw Error(o.RELAYER_NOT_AVAILABLE);
94
+ let { originalDeployer: k } = t[i].contractData;
95
+ if (!k) throw Error("missing data");
96
+ let j = await e.getRandomRelay(i, !0);
97
+ if (!j) throw Error(o.RELAYER_NOT_AVAILABLE);
99
98
  let M = l().toString(), N = e.generateProofRemotely ? 5 : 1, P = [];
100
99
  for (let t = 0; t < f.length; t += N) {
101
100
  let r = f.slice(t, t + N), o = await Promise.all(r.map(async ({ recipientAddress: t, utxo: r }, o) => {
102
101
  let { compressedAddress: l } = d(n), f = new u({
103
102
  amount: 0n,
104
- mintAddress: w,
103
+ mintAddress: T,
105
104
  erc20TokenAddress: l,
106
105
  nullifyingKey: e.userKeys.getShieldedPrivateKey(),
107
106
  timeStamp: M,
@@ -113,12 +112,12 @@ var P = (e, r, i, a) => {
113
112
  tokenNumber: 1,
114
113
  nullifierAmount: h.length,
115
114
  outputAmount: _.length
116
- }, S = p([_])[0][0], E = Array.from(j.getBytes(S)), O = await T(i, a, g[o], m), k = y(x, i, [w], [g[o]], await e.getEthereumAddress()), [{ proofAArr: N, proofBArr: P, proofCArr: F, publicInputsArr: I }, L] = await Promise.all([D(e.generateProofRemotely, e.merkleTreeHinkalByChain[i], e.userKeys, [w], [h], [_], v, O.flatFee, O.variableRate, t, A, b, [E], i), C(i, e.userKeys, [w], [h])]), R = {
115
+ }, S = p([_])[0][0], D = Array.from(A.getBytes(S)), O = await w(i, a, g[o], m), k = y(x, i, [T], [g[o]], await e.getEthereumAddress()), { proofAArr: N, proofBArr: P, proofCArr: F, publicInputsArr: I, commitmentValidationData: L } = await E(e.generateProofRemotely, e.merkleTreeHinkalByChain[i], e.userKeys, [T], [h], [_], v, O.flatFee, O.variableRate, t, j, b, [D], i), R = {
117
116
  recipient: t,
118
- mint: w === "11111111111111111111111111111111" ? void 0 : w
117
+ mint: T === "11111111111111111111111111111111" ? void 0 : T
119
118
  };
120
119
  return {
121
- relayAddress: A,
120
+ relayAddress: j,
122
121
  functionName: "transact",
123
122
  chainId: i,
124
123
  recipientAmount: g[o].toString(),
@@ -127,34 +126,35 @@ var P = (e, r, i, a) => {
127
126
  proofBArr: P,
128
127
  proofCArr: F,
129
128
  publicInputsArr: I,
130
- encryptedOutputs: [E],
129
+ encryptedOutputs: [D],
131
130
  relayerFee: O.flatFee.toString(),
132
131
  dimensions: b
133
132
  },
134
133
  accounts: R,
135
134
  adminData: k,
136
- commitmentValidationData: L
135
+ commitmentValidationData: L,
136
+ displayRecipient: C?.[o]
137
137
  };
138
138
  }));
139
139
  P.push(...o);
140
140
  }
141
- await k({
141
+ await O({
142
142
  id: _,
143
143
  chainId: i,
144
144
  hashedEthereumAddress: h,
145
145
  phase: r.BEFORE_SCHEDULE_WITHDRAW
146
146
  });
147
- let F = await O(i, P, h, v, b, S);
148
- return await k({
147
+ let F = await D(i, P, h, v, b, S);
148
+ return await O({
149
149
  id: _,
150
150
  chainId: i,
151
151
  hashedEthereumAddress: h,
152
152
  phase: r.AFTER_SCHEDULE_WITHDRAW,
153
153
  scheduleId: F
154
154
  }), F;
155
- }, R = async (t, n, r, o, s, c, l, u, d) => {
156
- let p = f([n]), m = n.erc20TokenAddress, h = i(await t.getEthereumAddressByChain(p)), g = d ? a(d) : void 0, _ = c ?? await x(p, m, [m], e.Transact, [], 5n), { userDepositedUtxos: v, depositTxHash: y, statusId: b } = await I(t, p, n, r, o, _, h);
157
- return await S(t, p, v), await L(t, p, n, v, _, h, r, b, s, l, u, g), y;
155
+ }, L = async (t, n, r, o, s, c, l, u, d, p) => {
156
+ let m = f([n]), h = n.erc20TokenAddress, g = i(await t.getEthereumAddressByChain(m)), _ = d ? a(d) : void 0, v = c ?? await x(m, h, [h], e.Transact, [], 5n), { userDepositedUtxos: y, depositTxHash: b, statusId: C } = await F(t, m, n, r, o, v, g);
157
+ return await S(t, m, y), await I(t, m, n, y, v, g, r, C, s, l, u, _, p), b;
158
158
  };
159
159
  //#endregion
160
- export { F as buildMultiPaymentDepositBuilder, P as buildMultiPaymentDepositSetup, R as hinkalSolanaDepositAndWithdraw, L as hinkalSolanaWithdrawBatch };
160
+ export { P as buildMultiPaymentDepositBuilder, N as buildMultiPaymentDepositSetup, L as hinkalSolanaDepositAndWithdraw, I as hinkalSolanaWithdrawBatch };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../API/admin-calls.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../functions/utils/create-provider.cjs`),i=require(`../../functions/pre-transaction/constructAdminData.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),s=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);let c=require(`@solana/web3.js`);var l=async(t,i,o,l)=>{let u=n.validateAndGetChainId([t]),d=a.AccountActions.getAddressFromSubAccount(u,o);if(!d)throw Error(`Public account address is not available`);let{fetchRpcUrl:f}=e.networkRegistry[u];if(!f)throw Error(`RPC URL not found for the specified chain ID`);let p=r.createCustomSolanaConnection(f),m=new c.PublicKey(d),{instructions:h,programId:g}=await s.buildSolanaTransferInstructions(p,m,new c.PublicKey(l),t,i);return{connection:p,chainId:u,senderAddress:d,senderPublickey:m,programId:g,instructions:h}},u=async(e,n,r,a,s,c)=>{let[{connection:u,chainId:d,senderPublickey:f,instructions:p},m]=await Promise.all([l(n,r,a,s),e.getEthereumAddress()]),h=await o.sendProxyV0Transaction({connection:u,chainId:d,subAccount:a,payerPublicKey:f,instructions:p});return t.emitTxPublicData(i.constructAdminData(c,d,[n.erc20TokenAddress],[r],m)),h},d=async(e,t,n,r)=>{let{connection:i,senderPublickey:a,instructions:s}=await l(e,t,n,r);return o.serializeProxyV0Transaction(i,a,s)};exports.getSolanaProxySendSerializedTransaction=d,exports.hinkalSolanaProxySend=u;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../API/admin-calls.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../functions/pre-transaction/constructAdminData.cjs`),i=require(`../../functions/utils/create-provider.cjs`),a=require(`../AccountActions/AccountActions.cjs`),o=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),s=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);let c=require(`@solana/web3.js`);var l=async(t,r,o,l)=>{let u=n.validateAndGetChainId([t]),d=a.AccountActions.getAddressFromSubAccount(u,o);if(!d)throw Error(`Public account address is not available`);let{fetchRpcUrl:f}=e.networkRegistry[u];if(!f)throw Error(`RPC URL not found for the specified chain ID`);let p=i.createCustomSolanaConnection(f),m=new c.PublicKey(d),{instructions:h,programId:g}=await s.buildSolanaTransferInstructions(p,m,new c.PublicKey(l),t,r);return{connection:p,chainId:u,senderAddress:d,senderPublickey:m,programId:g,instructions:h}},u=async(e,n,i,a,s,c)=>{let[{connection:u,chainId:d,senderPublickey:f,instructions:p},m]=await Promise.all([l(n,i,a,s),e.getEthereumAddress()]),h=await o.sendProxyV0Transaction({connection:u,chainId:d,subAccount:a,payerPublicKey:f,instructions:p});return t.emitTxPublicData(r.constructAdminData(c,d,[n.erc20TokenAddress],[i],m)),h},d=async(e,t,n,r)=>{let{connection:i,senderPublickey:a,instructions:s}=await l(e,t,n,r);return o.serializeProxyV0Transaction(i,a,s)};exports.getSolanaProxySendSerializedTransaction=d,exports.hinkalSolanaProxySend=u;
@@ -1,19 +1,19 @@
1
1
  import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
2
  import { emitTxPublicData as t } from "../../API/admin-calls.mjs";
3
3
  import { validateAndGetChainId as n } from "../../functions/utils/token-check.utils.mjs";
4
- import { createCustomSolanaConnection as r } from "../../functions/utils/create-provider.mjs";
5
- import { constructAdminData as i } from "../../functions/pre-transaction/constructAdminData.mjs";
4
+ import { constructAdminData as r } from "../../functions/pre-transaction/constructAdminData.mjs";
5
+ import { createCustomSolanaConnection as i } from "../../functions/utils/create-provider.mjs";
6
6
  import { AccountActions as a } from "../AccountActions/AccountActions.mjs";
7
7
  import { sendProxyV0Transaction as o, serializeProxyV0Transaction as s } from "../../functions/pre-transaction/sendV0Transaction.mjs";
8
8
  import { buildSolanaTransferInstructions as c } from "../../functions/pre-transaction/solanaTransfer.utils.mjs";
9
9
  import { PublicKey as l } from "@solana/web3.js";
10
10
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaProxySend.ts
11
- var u = async (t, i, o, s) => {
11
+ var u = async (t, r, o, s) => {
12
12
  let u = n([t]), d = a.getAddressFromSubAccount(u, o);
13
13
  if (!d) throw Error("Public account address is not available");
14
14
  let { fetchRpcUrl: f } = e[u];
15
15
  if (!f) throw Error("RPC URL not found for the specified chain ID");
16
- let p = r(f), m = new l(d), { instructions: h, programId: g } = await c(p, m, new l(s), t, i);
16
+ let p = i(f), m = new l(d), { instructions: h, programId: g } = await c(p, m, new l(s), t, r);
17
17
  return {
18
18
  connection: p,
19
19
  chainId: u,
@@ -22,15 +22,15 @@ var u = async (t, i, o, s) => {
22
22
  programId: g,
23
23
  instructions: h
24
24
  };
25
- }, d = async (e, n, r, a, s, c) => {
26
- let [{ connection: l, chainId: d, senderPublickey: f, instructions: p }, m] = await Promise.all([u(n, r, a, s), e.getEthereumAddress()]), h = await o({
25
+ }, d = async (e, n, i, a, s, c) => {
26
+ let [{ connection: l, chainId: d, senderPublickey: f, instructions: p }, m] = await Promise.all([u(n, i, a, s), e.getEthereumAddress()]), h = await o({
27
27
  connection: l,
28
28
  chainId: d,
29
29
  subAccount: a,
30
30
  payerPublicKey: f,
31
31
  instructions: p
32
32
  });
33
- return t(i(c, d, [n.erc20TokenAddress], [r], m)), h;
33
+ return t(r(c, d, [n.erc20TokenAddress], [i], m)), h;
34
34
  }, f = async (e, t, n, r) => {
35
35
  let { connection: i, senderPublickey: a, instructions: o } = await u(e, t, n, r);
36
36
  return s(i, a, o);
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/addresses.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../API/admin-calls.cjs`),i=require(`../../functions/utils/solanaMint.utils.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/pre-transaction/solana.cjs`),s=require(`../../functions/utils/create-provider.cjs`),c=require(`../../functions/pre-transaction/constructAdminData.cjs`),l=require(`../AccountActions/AccountActions.cjs`),u=require(`../../functions/pre-transaction/sendV0Transaction.cjs`);let d=require(`@solana/web3.js`),f=require(`@coral-xyz/anchor`),p=require(`@solana/spl-token`);var m=async({program:e,mintPublicKey:t,mintAddressString:n,tokenAmount:r,anchorStealthStructure:i,senderPublickey:a,originalDeployer:o,storageAccount:s,storageVault:c})=>{let l=new f.BN(r.toString()),u=n===`11111111111111111111111111111111`?null:t,d=n===`11111111111111111111111111111111`?null:void 0;return e.methods.prooflessDeposit(l,i).accounts({mint:u,signer:a,signerAta:d,originalDeployer:o,storageAccount:s,storageVault:c,storageVaultAta:d}).instruction()},h=async(r,a,c,u,f,h)=>{let g=h??r.getRecipientInfo();if(!t.isValidPrivateAddress(g))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let _=l.AccountActions.getAddressFromSubAccount(a,f);if(!_)throw Error(`Public account address is not available`);let{hinkalIdl:v,hinkalAddress:y,originalDeployer:b}=e.networkRegistry[a].contractData;if(!v)throw Error(`No IDL configured for Solana program on this network`);if(!b)throw Error(`missing original deployer`);let x=r.getSolanaProgram(v),S=new d.PublicKey(b),C=new d.PublicKey(y),w=new d.PublicKey(_),{erc20TokenAddress:T}=c,{fetchRpcUrl:E}=e.networkRegistry[a];if(!E)throw Error(`RPC URL not found for the specified chain ID`);let D=s.createCustomSolanaConnection(E),{mintPublicKey:O}=i.formatMintAddress(T),k=O.toString(),A=o.getStorageAccountPublicKey(C,S),j=o.getStorageVaultPublicKey(C,S),M=await m({program:x,mintPublicKey:O,mintAddressString:k,tokenAmount:u,anchorStealthStructure:o.buildAnchorStealthAddressStructure(t.constructStealthAddressStructure(g)),senderPublickey:w,originalDeployer:S,storageAccount:A,storageVault:j}),N=c.is2022Program?p.TOKEN_2022_PROGRAM_ID:p.TOKEN_PROGRAM_ID;return{connection:D,senderAddress:_,senderPublickey:w,instructions:[M],storageAccount:A,programId:N}},g=async(e,t,n,i,o,s)=>{if(!i)throw Error(`subAccount is required`);let l=a.validateAndGetChainId([t]),[{connection:d,senderPublickey:f,instructions:p},m]=await Promise.all([h(e,l,t,n,i,o),e.getEthereumAddress()]),g=await u.sendProxyV0Transaction({connection:d,chainId:l,subAccount:i,payerPublicKey:f,instructions:p});return r.emitTxPublicData(c.constructAdminData(s,l,[t.erc20TokenAddress],[n],m)),g},_=async(e,t,n,r,i)=>{let{connection:o,senderPublickey:s,instructions:c}=await h(e,a.validateAndGetChainId([t]),t,n,r,i);return u.serializeProxyV0Transaction(o,s,c)};exports.getSolanaProxyShieldSerializedTransaction=_,exports.hinkalSolanaProxyShield=g;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/addresses.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../API/admin-calls.cjs`),i=require(`../../functions/utils/solanaMint.utils.cjs`),a=require(`../../functions/utils/token-check.utils.cjs`),o=require(`../../functions/pre-transaction/solana.cjs`),s=require(`../../functions/pre-transaction/constructAdminData.cjs`),c=require(`../../functions/utils/create-provider.cjs`),l=require(`../AccountActions/AccountActions.cjs`),u=require(`../../functions/pre-transaction/sendV0Transaction.cjs`);let d=require(`@solana/web3.js`),f=require(`@coral-xyz/anchor`),p=require(`@solana/spl-token`);var m=async({program:e,mintPublicKey:t,mintAddressString:n,tokenAmount:r,anchorStealthStructure:i,senderPublickey:a,originalDeployer:o,storageAccount:s,storageVault:c})=>{let l=new f.BN(r.toString()),u=n===`11111111111111111111111111111111`?null:t,d=n===`11111111111111111111111111111111`?null:void 0;return e.methods.prooflessDeposit(l,i).accounts({mint:u,signer:a,signerAta:d,originalDeployer:o,storageAccount:s,storageVault:c,storageVaultAta:d}).instruction()},h=async(r,a,s,u,f,h)=>{let g=h??r.getRecipientInfo();if(!t.isValidPrivateAddress(g))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let _=l.AccountActions.getAddressFromSubAccount(a,f);if(!_)throw Error(`Public account address is not available`);let{hinkalIdl:v,hinkalAddress:y,originalDeployer:b}=e.networkRegistry[a].contractData;if(!v)throw Error(`No IDL configured for Solana program on this network`);if(!b)throw Error(`missing original deployer`);let x=r.getSolanaProgram(v),S=new d.PublicKey(b),C=new d.PublicKey(y),w=new d.PublicKey(_),{erc20TokenAddress:T}=s,{fetchRpcUrl:E}=e.networkRegistry[a];if(!E)throw Error(`RPC URL not found for the specified chain ID`);let D=c.createCustomSolanaConnection(E),{mintPublicKey:O}=i.formatMintAddress(T),k=O.toString(),A=o.getStorageAccountPublicKey(C,S),j=o.getStorageVaultPublicKey(C,S),M=await m({program:x,mintPublicKey:O,mintAddressString:k,tokenAmount:u,anchorStealthStructure:o.buildAnchorStealthAddressStructure(t.constructStealthAddressStructure(g)),senderPublickey:w,originalDeployer:S,storageAccount:A,storageVault:j}),N=s.is2022Program?p.TOKEN_2022_PROGRAM_ID:p.TOKEN_PROGRAM_ID;return{connection:D,senderAddress:_,senderPublickey:w,instructions:[M],storageAccount:A,programId:N}},g=async(e,t,n,i,o,c)=>{if(!i)throw Error(`subAccount is required`);let l=a.validateAndGetChainId([t]),[{connection:d,senderPublickey:f,instructions:p},m]=await Promise.all([h(e,l,t,n,i,o),e.getEthereumAddress()]),g=await u.sendProxyV0Transaction({connection:d,chainId:l,subAccount:i,payerPublicKey:f,instructions:p});return r.emitTxPublicData(s.constructAdminData(c,l,[t.erc20TokenAddress],[n],m)),g},_=async(e,t,n,r,i)=>{let{connection:o,senderPublickey:s,instructions:c}=await h(e,a.validateAndGetChainId([t]),t,n,r,i);return u.serializeProxyV0Transaction(o,s,c)};exports.getSolanaProxyShieldSerializedTransaction=_,exports.hinkalSolanaProxyShield=g;
@@ -6,8 +6,8 @@ import { emitTxPublicData as i } from "../../API/admin-calls.mjs";
6
6
  import { formatMintAddress as a } from "../../functions/utils/solanaMint.utils.mjs";
7
7
  import { validateAndGetChainId as o } from "../../functions/utils/token-check.utils.mjs";
8
8
  import { buildAnchorStealthAddressStructure as s, getStorageAccountPublicKey as c, getStorageVaultPublicKey as l } from "../../functions/pre-transaction/solana.mjs";
9
- import { createCustomSolanaConnection as u } from "../../functions/utils/create-provider.mjs";
10
- import { constructAdminData as d } from "../../functions/pre-transaction/constructAdminData.mjs";
9
+ import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
10
+ import { createCustomSolanaConnection as d } from "../../functions/utils/create-provider.mjs";
11
11
  import { AccountActions as f } from "../AccountActions/AccountActions.mjs";
12
12
  import { sendProxyV0Transaction as p, serializeProxyV0Transaction as m } from "../../functions/pre-transaction/sendV0Transaction.mjs";
13
13
  import { PublicKey as h } from "@solana/web3.js";
@@ -25,7 +25,7 @@ var y = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
25
25
  storageVault: c,
26
26
  storageVaultAta: d
27
27
  }).instruction();
28
- }, b = async (i, o, d, p, m, g) => {
28
+ }, b = async (i, o, u, p, m, g) => {
29
29
  let b = g ?? i.getRecipientInfo();
30
30
  if (!n(b)) throw Error(r.RECIPIENT_FORMAT_INCORRECT);
31
31
  let x = f.getAddressFromSubAccount(o, m);
@@ -33,9 +33,9 @@ var y = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
33
33
  let { hinkalIdl: S, hinkalAddress: C, originalDeployer: w } = e[o].contractData;
34
34
  if (!S) throw Error("No IDL configured for Solana program on this network");
35
35
  if (!w) throw Error("missing original deployer");
36
- let T = i.getSolanaProgram(S), E = new h(w), D = new h(C), O = new h(x), { erc20TokenAddress: k } = d, { fetchRpcUrl: A } = e[o];
36
+ let T = i.getSolanaProgram(S), E = new h(w), D = new h(C), O = new h(x), { erc20TokenAddress: k } = u, { fetchRpcUrl: A } = e[o];
37
37
  if (!A) throw Error("RPC URL not found for the specified chain ID");
38
- let j = u(A), { mintPublicKey: M } = a(k), N = M.toString(), P = c(D, E), F = l(D, E), I = await y({
38
+ let j = d(A), { mintPublicKey: M } = a(k), N = M.toString(), P = c(D, E), F = l(D, E), I = await y({
39
39
  program: T,
40
40
  mintPublicKey: M,
41
41
  mintAddressString: N,
@@ -45,7 +45,7 @@ var y = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
45
45
  originalDeployer: E,
46
46
  storageAccount: P,
47
47
  storageVault: F
48
- }), L = d.is2022Program ? _ : v;
48
+ }), L = u.is2022Program ? _ : v;
49
49
  return {
50
50
  connection: j,
51
51
  senderAddress: x,
@@ -56,14 +56,14 @@ var y = async ({ program: e, mintPublicKey: t, mintAddressString: n, tokenAmount
56
56
  };
57
57
  }, x = async (e, t, n, r, a, s) => {
58
58
  if (!r) throw Error("subAccount is required");
59
- let c = o([t]), [{ connection: l, senderPublickey: u, instructions: f }, m] = await Promise.all([b(e, c, t, n, r, a), e.getEthereumAddress()]), h = await p({
59
+ let c = o([t]), [{ connection: l, senderPublickey: d, instructions: f }, m] = await Promise.all([b(e, c, t, n, r, a), e.getEthereumAddress()]), h = await p({
60
60
  connection: l,
61
61
  chainId: c,
62
62
  subAccount: r,
63
- payerPublicKey: u,
63
+ payerPublicKey: d,
64
64
  instructions: f
65
65
  });
66
- return i(d(s, c, [t.erc20TokenAddress], [n], m)), h;
66
+ return i(u(s, c, [t.erc20TokenAddress], [n], m)), h;
67
67
  }, S = async (e, t, n, r, i) => {
68
68
  let { connection: a, senderPublickey: s, instructions: c } = await b(e, o([t]), t, n, r, i);
69
69
  return m(a, s, c);