@gurge/sdk 0.3.26 → 0.3.27

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 (80) hide show
  1. package/common/src/crypto/rnUtxoCrypto.cjs +1 -1
  2. package/common/src/crypto/rnUtxoCrypto.d.ts +11 -0
  3. package/common/src/crypto/rnUtxoCrypto.mjs +46 -12
  4. package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
  5. package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +9 -9
  6. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
  7. package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +6 -6
  8. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
  9. package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +18 -18
  10. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
  11. package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +17 -17
  12. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
  13. package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +13 -13
  14. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
  15. package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +11 -11
  16. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +14 -14
  18. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +51 -51
  20. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
  21. package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +51 -51
  22. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
  23. package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +20 -20
  24. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
  25. package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +19 -19
  26. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  27. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +9 -9
  28. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  29. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +12 -12
  30. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
  31. package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +33 -33
  32. package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
  33. package/common/src/data-structures/crypto-keys/decodeUTXO.mjs +7 -7
  34. package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.cjs +1 -1
  35. package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.mjs +1 -1
  36. package/common/src/functions/index.cjs +1 -1
  37. package/common/src/functions/index.mjs +3 -3
  38. package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
  39. package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +13 -13
  40. package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
  41. package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +14 -14
  42. package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
  43. package/common/src/functions/snarkjs/common.snarkjs.mjs +7 -7
  44. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  45. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +77 -76
  46. package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
  47. package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +60 -60
  48. package/common/src/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
  49. package/common/src/functions/snarkjs/verifyCommitmentValidationData.mjs +1 -1
  50. package/common/src/functions/utils/buildClaimableDepositPlan.cjs +1 -1
  51. package/common/src/functions/utils/buildClaimableDepositPlan.mjs +1 -1
  52. package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
  53. package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
  54. package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
  55. package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +4 -4
  56. package/common/src/functions/utils/index.cjs +1 -1
  57. package/common/src/functions/utils/index.mjs +2 -2
  58. package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
  59. package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +81 -80
  60. package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
  61. package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +42 -42
  62. package/common/src/types/index.cjs +1 -1
  63. package/common/src/types/index.mjs +1 -1
  64. package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +1 -1
  65. package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +3 -1
  66. package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +1 -1
  67. package/common/src/webworker/logError-Dy_GXEF5.js +2 -0
  68. package/common/src/webworker/package.json +1 -1
  69. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  70. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  71. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  72. package/common/src/webworker/viteWorkerURL.constant.cjs +4 -4
  73. package/common/src/webworker/viteWorkerURL.constant.mjs +4 -4
  74. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  75. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  76. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  77. package/package.json +1 -1
  78. package/sdk/package.json.cjs +1 -1
  79. package/sdk/package.json.mjs +1 -1
  80. package/common/src/webworker/logError-DFS-H2t0.js +0 -2
@@ -3,19 +3,19 @@ import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as t, solanaNativeAddress as n } from
3
3
  import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
4
4
  import { randomBigInt as i } from "../../functions/web3/etherFunctions.mjs";
5
5
  import { UserKeys as a } from "../crypto-keys/keys.mjs";
6
- import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
7
- import { Utxo as s } from "../utxo/Utxo.mjs";
8
- import { ExternalActionId as c } from "../../types/external-action.types.mjs";
6
+ import { ExternalActionId as o } from "../../types/external-action.types.mjs";
7
+ import { calcEncryptedOutputs as s } from "../../functions/snarkjs/common.snarkjs.mjs";
8
+ import { getCurrentTimeInSeconds as c } from "../../functions/utils/time.utils.mjs";
9
+ import { Utxo as l } from "../utxo/Utxo.mjs";
9
10
  import "../../types/index.mjs";
10
- import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
11
- import { calcEncryptedOutputs as u } from "../../functions/snarkjs/common.snarkjs.mjs";
11
+ import { validateAndGetChainId as u } from "../../functions/utils/token-check.utils.mjs";
12
12
  import { getFeeStructure as d } from "../../functions/pre-transaction/getFeeStructure.mjs";
13
13
  import { constructSolanaZkProof as f } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
14
14
  import { solanaTransactCallRelayer as p } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
15
15
  import { ethers as m } from "ethers";
16
16
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.ts
17
17
  var h = async (h, g, _, v, y) => {
18
- let b = l([g]), x = g.erc20TokenAddress;
18
+ let b = u([g]), x = g.erc20TokenAddress;
19
19
  if (_.getTokenAddress(b) !== x) throw Error("Off-chain UTXO token mismatch");
20
20
  let S = y ? new a(y) : new a(_.nullifyingKey, _.nullifyingKey);
21
21
  if (!_.nullifyingKey && !y) throw Error("Claimable UTXO nullifyingKey is missing");
@@ -23,7 +23,7 @@ var h = async (h, g, _, v, y) => {
23
23
  if (_.nullifyingKey && _.nullifyingKey !== C) throw Error("Claimable UTXO key mismatch");
24
24
  let { originalDeployer: w } = e[b].contractData;
25
25
  if (!w) throw Error("missing data");
26
- let T = s.createFrom(_, { nullifyingKey: C }), E = v ?? await d(b, x, [x], c.Transact, void 0, void 0, {
26
+ let T = l.createFrom(_, { nullifyingKey: C }), E = v ?? await d(b, x, [x], o.Transact, void 0, void 0, {
27
27
  mintTo: x,
28
28
  nullifierCount: 1
29
29
  });
@@ -34,7 +34,7 @@ var h = async (h, g, _, v, y) => {
34
34
  if (A <= 0n) throw Error(r.RECIPIENT_AMOUNT_INVALID);
35
35
  let j = E.flatFee + k, [M, N, P, , F] = h.getRecipientInfo().split(",");
36
36
  if (!N || !P || !M || !F) throw Error("Invalid recipient info");
37
- let I = o().toString(), L = new s({
37
+ let I = c().toString(), L = new l({
38
38
  amount: 0n,
39
39
  erc20TokenAddress: T.erc20TokenAddress,
40
40
  mintAddress: T.mintAddress,
@@ -43,7 +43,7 @@ var h = async (h, g, _, v, y) => {
43
43
  spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
44
44
  isNewStyle: !0
45
45
  } : { isNewStyle: !1 }
46
- }), R = new s({
46
+ }), R = new l({
47
47
  amount: 0n,
48
48
  erc20TokenAddress: T.erc20TokenAddress,
49
49
  mintAddress: T.mintAddress,
@@ -51,7 +51,7 @@ var h = async (h, g, _, v, y) => {
51
51
  timeStamp: I,
52
52
  spendingPublicKey: S.getSpendingKeyPair().pubSpendingBJJPoint,
53
53
  isNewStyle: !0
54
- }), z = new s({
54
+ }), z = new l({
55
55
  amount: A,
56
56
  erc20TokenAddress: T.erc20TokenAddress,
57
57
  mintAddress: T.mintAddress,
@@ -66,7 +66,7 @@ var h = async (h, g, _, v, y) => {
66
66
  tokenNumber: 1,
67
67
  nullifierAmount: B.length,
68
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, n, H, W, G, b), Z = {
69
+ }, G = s([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, n, H, W, G, b), Z = {
70
70
  recipient: H,
71
71
  mint: x === "11111111111111111111111111111111" ? void 0 : x
72
72
  };
@@ -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`),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 _=(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:m,wallet:g}=f.provider;if(!g)throw Error(`missing solana wallet`);let _=new h.PublicKey(d),v=new h.PublicKey(u),{mintPublicKey:y}=a.formatMintAddress(o),b=y.toString()===t.solanaNativeAddress;return{chainId:i,mintAddress:o,program:f,publicKey:p,connection:m,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,_)}},v=(e,t,n)=>{let r=n.map(e=>l.buildAnchorStealthAddressStructure(e));return e.program.methods.multiPaymentDeposit(t.map(e=>new g.BN(e.toString())),r,!1).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}).instruction()},y=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 h.VersionedTransaction(new h.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``},b=(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`);m.assertNoDuplicateStealthAddressStructures(t)},x=async(e,t,n,r,i,a=!1)=>{b(n,r);let o=_(e,t),s=u.constructAdminData(i,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),c=await v(o,n,r);if(a){let{blockhash:e}=await o.connection.getLatestBlockhash(),t=new h.Transaction().add(c);return t.recentBlockhash=e,t.feePayer=o.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let l=await y(o.connection,o.wallet,o.publicKey,[c]);return await f.emitTxPublicData(s),l},S=async(e,t,n,r,i,a)=>{b(n,r);let o=_(e,t),s=await e.getRandomRelay(o.chainId,!1);if(!s)throw Error(`No relay available for chainId ${o.chainId}`);let{instructions:c}=await p.buildSolanaTransferInstructions(o.connection,o.publicKey,new h.PublicKey(s),t,i),l=await v(o,n,r),d=u.constructAdminData(a,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),m=await y(o.connection,o.wallet,o.publicKey,[...c,l]);return await f.emitTxPublicData(d),m},C=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);return x(e,n,[t],[s],void 0,a)},w=async(e,t,r,i,a=!1,s)=>{if(!o.isValidPrivateAddress(i))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let c=o.constructStealthAddressStructure(i);return x(e,r,[t],[c],s,a)};exports.hinkalSolanaDeposit=C,exports.hinkalSolanaDepositForOther=w,exports.hinkalSolanaProoflessDepositWithPublicFee=S,exports.submitSolanaProoflessDeposit=x;
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/snarkjs/common.snarkjs.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/pre-transaction/solana.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../error-handling/retrySolanaError.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 _=(n,r)=>{let i=c.validateAndGetChainId([r]),a=r.erc20TokenAddress,{hinkalIdl:s,hinkalAddress:u,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:g}=f.provider;if(!g)throw Error(`missing solana wallet`);let _=new h.PublicKey(d),v=new h.PublicKey(u),{mintPublicKey:y}=o.formatMintAddress(a),b=y.toString()===t.solanaNativeAddress;return{chainId:i,mintAddress:a,program:f,publicKey:p,connection:m,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,_)}},v=(e,t,n)=>{let r=n.map(e=>l.buildAnchorStealthAddressStructure(e));return e.program.methods.multiPaymentDeposit(t.map(e=>new g.BN(e.toString())),r,!1).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}).instruction()},y=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 h.VersionedTransaction(new h.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``},b=(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`);m.assertNoDuplicateStealthAddressStructures(t)},x=async(e,t,n,r,i,a=!1)=>{b(n,r);let o=_(e,t),s=u.constructAdminData(i,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),c=await v(o,n,r);if(a){let{blockhash:e}=await o.connection.getLatestBlockhash(),t=new h.Transaction().add(c);return t.recentBlockhash=e,t.feePayer=o.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let l=await y(o.connection,o.wallet,o.publicKey,[c]);return await f.emitTxPublicData(s),l},S=async(e,t,n,r,i,a)=>{b(n,r);let o=_(e,t),s=await e.getRandomRelay(o.chainId,!1);if(!s)throw Error(`No relay available for chainId ${o.chainId}`);let{instructions:c}=await p.buildSolanaTransferInstructions(o.connection,o.publicKey,new h.PublicKey(s),t,i),l=await v(o,n,r),d=u.constructAdminData(a,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),m=await y(o.connection,o.wallet,o.publicKey,[...c,l]);return await f.emitTxPublicData(d),m},C=async(e,t,n,o=!1)=>{let s=e.userKeys.getShieldedPrivateKey(),c=a.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s),s,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint);return x(e,n,[t],[c],void 0,o)},w=async(e,t,r,i,a=!1,o)=>{if(!s.isValidPrivateAddress(i))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let c=s.constructStealthAddressStructure(i);return x(e,r,[t],[c],o,a)};exports.hinkalSolanaDeposit=C,exports.hinkalSolanaDepositForOther=w,exports.hinkalSolanaProoflessDepositWithPublicFee=S,exports.submitSolanaProoflessDeposit=x;
@@ -3,10 +3,10 @@ import { solanaNativeAddress as t } from "../../constants/protocol.constants.mjs
3
3
  import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
4
4
  import { randomBigInt as r } from "../../functions/web3/etherFunctions.mjs";
5
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, isValidPrivateAddress as s } from "../../functions/utils/addresses.mjs";
8
- import { validateAndGetChainId as c } from "../../functions/utils/token-check.utils.mjs";
9
- import { calcStealthAddressStructure as l } from "../../functions/snarkjs/common.snarkjs.mjs";
6
+ import { calcStealthAddressStructure as a } from "../../functions/snarkjs/common.snarkjs.mjs";
7
+ import { formatMintAddress as o } from "../../functions/utils/solanaMint.utils.mjs";
8
+ import { constructStealthAddressStructure as s, isValidPrivateAddress as c } from "../../functions/utils/addresses.mjs";
9
+ import { validateAndGetChainId as l } from "../../functions/utils/token-check.utils.mjs";
10
10
  import { buildAnchorStealthAddressStructure as u, getMerkleAccountPublicKey as d, getStorageAccountPublicKey as f, getStorageVaultPublicKey as p } from "../../functions/pre-transaction/solana.mjs";
11
11
  import { constructAdminData as m } from "../../functions/pre-transaction/constructAdminData.mjs";
12
12
  import { shouldRetryForSolanaError as h } from "../../error-handling/retrySolanaError.mjs";
@@ -17,15 +17,15 @@ import { PublicKey as y, Transaction as b, TransactionMessage as x, VersionedTra
17
17
  import { BN as C } from "@coral-xyz/anchor";
18
18
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaDeposit.ts
19
19
  var w = (n, r) => {
20
- let i = c([r]), o = r.erc20TokenAddress, { hinkalIdl: s, hinkalAddress: l, originalDeployer: u } = e[i].contractData;
20
+ let i = l([r]), a = r.erc20TokenAddress, { hinkalIdl: s, hinkalAddress: c, originalDeployer: u } = e[i].contractData;
21
21
  if (!s) throw Error("No IDL configured for Solana program on this network");
22
22
  if (!u) throw Error("missing original deployer");
23
23
  let m = n.getSolanaProgram(s), h = n.getSolanaPublicKey(), { connection: g, wallet: _ } = m.provider;
24
24
  if (!_) throw Error("missing solana wallet");
25
- let v = new y(u), b = new y(l), { mintPublicKey: x } = a(o), S = x.toString() === t;
25
+ let v = new y(u), b = new y(c), { mintPublicKey: x } = o(a), S = x.toString() === t;
26
26
  return {
27
27
  chainId: i,
28
- mintAddress: o,
28
+ mintAddress: a,
29
29
  program: m,
30
30
  publicKey: h,
31
31
  connection: g,
@@ -90,13 +90,13 @@ var w = (n, r) => {
90
90
  if (!s) throw Error(`No relay available for chainId ${o.chainId}`);
91
91
  let { instructions: c } = await _(o.connection, o.publicKey, new y(s), t, i), l = await T(o, n, r), u = m(a, o.chainId, Array(n.length).fill(o.mintAddress), n, await e.getEthereumAddress()), d = await E(o.connection, o.wallet, o.publicKey, [...c, l]);
92
92
  return await g(u), d;
93
- }, A = async (e, t, n, a = !1) => {
94
- let o = e.userKeys.getShieldedPrivateKey(), s = l(i.findCorrectRandomization(r(31), o), o, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint);
95
- return O(e, n, [t], [s], void 0, a);
96
- }, j = async (e, t, r, i, a = !1, c) => {
97
- if (!s(i)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
98
- let l = o(i);
99
- return O(e, r, [t], [l], c, a);
93
+ }, A = async (e, t, n, o = !1) => {
94
+ let s = e.userKeys.getShieldedPrivateKey(), c = a(i.findCorrectRandomization(r(31), s), s, e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint);
95
+ return O(e, n, [t], [c], void 0, o);
96
+ }, j = async (e, t, r, i, a = !1, o) => {
97
+ if (!c(i)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
98
+ let l = s(i);
99
+ return O(e, r, [t], [l], o, a);
100
100
  };
101
101
  //#endregion
102
102
  export { A as hinkalSolanaDeposit, j as hinkalSolanaDepositForOther, k as hinkalSolanaProoflessDepositWithPublicFee, O 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(`../../types/external-action.types.cjs`),c=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/solanaMint.utils.cjs`),u=require(`../../functions/utils/addresses.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=(n,a,o,s)=>{let{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!c)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(c),g=n.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(u),{mintPublicKey:y}=l.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=s.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:s,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,r,i,a,o)=>{let s=r.map(e=>e+y.calculateTotalFee(e,a)),u=E(e,t,n,s),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(u).rpc(),p=await u.program.provider.connection.getLatestBlockhash();await u.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(u.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=l.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,u.program,e.userKeys,g),b=[],x=[..._];return i.forEach((e,t)=>{let n=s[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(s,u,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}=e.networkRegistry[u].contractData;if(!A)throw Error(`missing data`);let j=await s.getRandomRelay(u,!0);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=a.getCurrentTimeInSeconds().toString(),N=s.generateProofRemotely?5:1,P=[];for(let e=0;e<p.length;e+=N){let n=p.slice(e,e+N),a=await Promise.all(n.map(async({recipientAddress:e,utxo:n},a)=>{let{compressedAddress:c}=l.formatMintAddress(t.solanaNativeAddress),p=new o.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:s.userKeys.getShieldedPrivateKey(),timeStamp:M,...n.isNewStyle?{spendingPublicKey:s.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[n,p],v=[p],x=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s.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(u,d,_[a],h),A=m.constructAdminData(E,u,[k],[_[a]],await s.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(s.generateProofRemotely,s.merkleTreeHinkalByChain[u],s.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,e,j,S,[T],u),R={recipient:e,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:u,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:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(u,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(e,t,n,r,i,a,o,c,l,f)=>{let p=d.validateAndGetChainId([t]),m=t.erc20TokenAddress,h=u.hashEthereumAddress(await e.getEthereumAddressByChain(p)),v=l?u.hashString(l):void 0,y=a??await g.getFeeStructure(p,m,[m],s.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(e,p,t,n,r,y,h);return await _.waitForDepositedUtxosInMerkleTree(e,p,b),{depositTxHash:x,scheduleId:await k(e,p,t,b,y,h,n,S,i,o,c,v,f)}};exports.hinkalSolanaDepositAndWithdraw=A;
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(`../../types/external-action.types.cjs`),o=require(`../../functions/snarkjs/common.snarkjs.cjs`),s=require(`../../functions/utils/time.utils.cjs`),c=require(`../utxo/Utxo.cjs`),l=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const u=require(`../../functions/utils/solanaMint.utils.cjs`),d=require(`../../functions/utils/addresses.cjs`),f=require(`../../functions/utils/token-check.utils.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=(n,a,s,c)=>{let{hinkalIdl:l,hinkalAddress:d,originalDeployer:f}=e.networkRegistry[a].contractData;if(!l)throw Error(`No IDL configured for Solana program on this network`);if(!f)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(l),g=n.getSolanaPublicKey(),_=new w.PublicKey(f),v=new w.PublicKey(d),{mintPublicKey:y}=u.formatMintAddress(s.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=c.map(()=>p.buildAnchorStealthAddressStructure(o.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:c,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,r,i,a,o)=>{let s=r.map(e=>e+y.calculateTotalFee(e,a)),c=E(e,t,n,s),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:o,phase:l.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(c).rpc(),p=await c.program.provider.connection.getLatestBlockhash();await c.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(c.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:o,phase:l.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=u.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,c.program,e.userKeys,g),b=[],x=[..._];return i.forEach((e,t)=>{let n=s[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(a,d,f,p,h,g,_,v,w,T,E,D,O)=>{let k=f.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=e.networkRegistry[d].contractData;if(!A)throw Error(`missing data`);let j=await a.getRandomRelay(d,!0);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=s.getCurrentTimeInSeconds().toString(),N=a.generateProofRemotely?5:1,P=[];for(let e=0;e<p.length;e+=N){let n=p.slice(e,e+N),s=await Promise.all(n.map(async({recipientAddress:e,utxo:n},s)=>{let{compressedAddress:l}=u.formatMintAddress(t.solanaNativeAddress),p=new c.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:l,nullifyingKey:a.userKeys.getShieldedPrivateKey(),timeStamp:M,...n.isNewStyle?{spendingPublicKey:a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[n,p],v=[p],x=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),a.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=o.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(d,f,_[s],h),A=m.constructAdminData(E,d,[k],[_[s]],await a.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(a.generateProofRemotely,a.merkleTreeHinkalByChain[d],a.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,e,j,S,[T],d),R={recipient:e,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:d,recipientAmount:_[s].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?.[s]}}));P.push(...s)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:d,hashedEthereumAddress:g,phase:l.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(d,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:d,hashedEthereumAddress:g,phase:l.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(e,t,n,r,i,o,s,c,l,u)=>{let p=f.validateAndGetChainId([t]),m=t.erc20TokenAddress,h=d.hashEthereumAddress(await e.getEthereumAddressByChain(p)),v=l?d.hashString(l):void 0,y=o??await g.getFeeStructure(p,m,[m],a.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(e,p,t,n,r,y,h);return await _.waitForDepositedUtxosInMerkleTree(e,p,b),{depositTxHash:x,scheduleId:await k(e,p,t,b,y,h,n,S,i,s,c,v,u)}};exports.hinkalSolanaDepositAndWithdraw=A;
@@ -3,15 +3,15 @@ import { solanaNativeAddress as t } from "../../constants/protocol.constants.mjs
3
3
  import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
4
4
  import { randomBigInt as r } from "../../functions/web3/etherFunctions.mjs";
5
5
  import { UserKeys as i } from "../crypto-keys/keys.mjs";
6
- import { getCurrentTimeInSeconds as a } from "../../functions/utils/time.utils.mjs";
7
- import { Utxo as o } from "../utxo/Utxo.mjs";
8
- import { ExternalActionId as s } from "../../types/external-action.types.mjs";
9
- import { DepositAndWithdrawPhase as c } from "../../types/scheduled-transactions.types.mjs";
6
+ import { ExternalActionId as a } from "../../types/external-action.types.mjs";
7
+ import { calcEncryptedOutputs as o, calcStealthAddressStructure as s } from "../../functions/snarkjs/common.snarkjs.mjs";
8
+ import { getCurrentTimeInSeconds as c } from "../../functions/utils/time.utils.mjs";
9
+ import { Utxo as l } from "../utxo/Utxo.mjs";
10
+ import { DepositAndWithdrawPhase as u } from "../../types/scheduled-transactions.types.mjs";
10
11
  import "../../types/index.mjs";
11
- import { formatMintAddress as l } from "../../functions/utils/solanaMint.utils.mjs";
12
- import { hashEthereumAddress as u, hashString as d } from "../../functions/utils/addresses.mjs";
13
- import { validateAndGetChainId as f } from "../../functions/utils/token-check.utils.mjs";
14
- import { calcEncryptedOutputs as p, calcStealthAddressStructure as m } from "../../functions/snarkjs/common.snarkjs.mjs";
12
+ import { formatMintAddress as d } from "../../functions/utils/solanaMint.utils.mjs";
13
+ import { hashEthereumAddress as f, hashString as p } from "../../functions/utils/addresses.mjs";
14
+ import { validateAndGetChainId as m } from "../../functions/utils/token-check.utils.mjs";
15
15
  import { buildAnchorStealthAddressStructure as h, getMerkleAccountPublicKey as g, getStorageAccountPublicKey as _, getStorageVaultPublicKey as v } from "../../functions/pre-transaction/solana.mjs";
16
16
  import { constructAdminData as y } from "../../functions/pre-transaction/constructAdminData.mjs";
17
17
  import { fetchSolanaTransaction as b } from "../../functions/pre-transaction/sendV0Transaction.mjs";
@@ -29,13 +29,13 @@ import { ethers as A } from "ethers";
29
29
  import { PublicKey as j } from "@solana/web3.js";
30
30
  import { BN as M } from "@coral-xyz/anchor";
31
31
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.ts
32
- var N = (n, a, o, s) => {
33
- let { hinkalIdl: c, hinkalAddress: u, originalDeployer: d } = e[a].contractData;
34
- if (!c) throw Error("No IDL configured for Solana program on this network");
35
- if (!d) throw Error("missing original deployer");
36
- let f = n.userKeys.getShieldedPrivateKey(), p = n.getSolanaProgram(c), y = n.getSolanaPublicKey(), b = new j(d), x = new j(u), { mintPublicKey: S } = l(o.erc20TokenAddress), C = S.toString(), w = _(x, b), T = v(x, b), E = g(x, b), D = s.map(() => h(m(i.findCorrectRandomization(r(31), f), f, n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))), O = C === t;
32
+ var N = (n, a, o, c) => {
33
+ let { hinkalIdl: l, hinkalAddress: u, originalDeployer: f } = e[a].contractData;
34
+ if (!l) throw Error("No IDL configured for Solana program on this network");
35
+ if (!f) throw Error("missing original deployer");
36
+ let p = n.userKeys.getShieldedPrivateKey(), m = n.getSolanaProgram(l), y = n.getSolanaPublicKey(), b = new j(f), x = new j(u), { mintPublicKey: S } = d(o.erc20TokenAddress), C = S.toString(), w = _(x, b), T = v(x, b), E = g(x, b), D = c.map(() => h(s(i.findCorrectRandomization(r(31), p), p, n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))), O = C === t;
37
37
  return {
38
- program: p,
38
+ program: m,
39
39
  publicKey: y,
40
40
  originalDeployer: b,
41
41
  mint: O ? null : S,
@@ -43,7 +43,7 @@ var N = (n, a, o, s) => {
43
43
  storageAccount: w,
44
44
  storageVault: T,
45
45
  merkleAccount: E,
46
- amounts: s,
46
+ amounts: c,
47
47
  anchorStealthStructures: D
48
48
  };
49
49
  }, P = (e) => e.program.methods.multiPaymentDeposit(e.amounts.map((e) => new M(e.toString())), e.anchorStealthStructures, !0).accounts({
@@ -56,26 +56,26 @@ var N = (n, a, o, s) => {
56
56
  merkleAccount: e.merkleAccount,
57
57
  storageVaultAta: e.atasValue
58
58
  }), F = async (e, t, n, r, i, a, o) => {
59
- let s = r.map((e) => e + T(e, a)), u = N(e, t, n, s), d = (await k({
59
+ let s = r.map((e) => e + T(e, a)), c = N(e, t, n, s), l = (await k({
60
60
  chainId: t,
61
61
  hashedEthereumAddress: o,
62
- phase: c.BEFORE_DEPOSIT
63
- })).id ?? void 0, f = await P(u).rpc(), p = await u.program.provider.connection.getLatestBlockhash();
64
- await u.program.provider.connection.confirmTransaction({
62
+ phase: u.BEFORE_DEPOSIT
63
+ })).id ?? void 0, f = await P(c).rpc(), p = await c.program.provider.connection.getLatestBlockhash();
64
+ await c.program.provider.connection.confirmTransaction({
65
65
  blockhash: p.blockhash,
66
66
  lastValidBlockHeight: p.lastValidBlockHeight,
67
67
  signature: f
68
68
  }, "finalized");
69
- let m = await b(u.program.provider.connection, f, "finalized");
69
+ let m = await b(c.program.provider.connection, f, "finalized");
70
70
  if (!m) throw Error("Transaction missing");
71
71
  await O({
72
- id: d,
72
+ id: l,
73
73
  chainId: t,
74
74
  hashedEthereumAddress: o,
75
- phase: c.AFTER_DEPOSIT,
75
+ phase: u.AFTER_DEPOSIT,
76
76
  depositTxHash: f
77
77
  });
78
- let { compressedAddress: h } = l(n.erc20TokenAddress), g = C(m, u.program, e.userKeys, h), _ = [], v = [...g];
78
+ let { compressedAddress: h } = d(n.erc20TokenAddress), g = C(m, c.program, e.userKeys, h), _ = [], v = [...g];
79
79
  return i.forEach((e, t) => {
80
80
  let n = s[t], r = v.find((e) => e.amount === n);
81
81
  if (!r) throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);
@@ -86,41 +86,41 @@ var N = (n, a, o, s) => {
86
86
  }), {
87
87
  userDepositedUtxos: _,
88
88
  depositTxHash: f,
89
- statusId: d
89
+ statusId: l
90
90
  };
91
- }, I = async (s, u, d, f, m, h, g, _, v, b, x, S, C) => {
92
- let T = d.erc20TokenAddress;
93
- if (f.length === 0) throw Error("userDepositedUtxos must not be empty");
94
- let { originalDeployer: k } = e[u].contractData;
91
+ }, I = async (a, s, f, p, m, h, g, _, v, b, x, S, C) => {
92
+ let T = f.erc20TokenAddress;
93
+ if (p.length === 0) throw Error("userDepositedUtxos must not be empty");
94
+ let { originalDeployer: k } = e[s].contractData;
95
95
  if (!k) throw Error("missing data");
96
- let j = await s.getRandomRelay(u, !0);
96
+ let j = await a.getRandomRelay(s, !0);
97
97
  if (!j) throw Error(n.RELAYER_NOT_AVAILABLE);
98
- let M = a().toString(), N = s.generateProofRemotely ? 5 : 1, P = [];
99
- for (let e = 0; e < f.length; e += N) {
100
- let n = f.slice(e, e + N), a = await Promise.all(n.map(async ({ recipientAddress: e, utxo: n }, a) => {
101
- let { compressedAddress: c } = l(t), f = new o({
98
+ let M = c().toString(), N = a.generateProofRemotely ? 5 : 1, P = [];
99
+ for (let e = 0; e < p.length; e += N) {
100
+ let n = p.slice(e, e + N), c = await Promise.all(n.map(async ({ recipientAddress: e, utxo: n }, c) => {
101
+ let { compressedAddress: u } = d(t), p = new l({
102
102
  amount: 0n,
103
103
  mintAddress: T,
104
- erc20TokenAddress: c,
105
- nullifyingKey: s.userKeys.getShieldedPrivateKey(),
104
+ erc20TokenAddress: u,
105
+ nullifyingKey: a.userKeys.getShieldedPrivateKey(),
106
106
  timeStamp: M,
107
107
  ...n.isNewStyle ? {
108
- spendingPublicKey: s.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
108
+ spendingPublicKey: a.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
109
109
  isNewStyle: !0
110
110
  } : { isNewStyle: !1 }
111
- }), h = [n, f], _ = [f], v = i.findCorrectRandomization(r(31), s.userKeys.getShieldedPrivateKey()), b = {
111
+ }), h = [n, p], _ = [p], v = i.findCorrectRandomization(r(31), a.userKeys.getShieldedPrivateKey()), b = {
112
112
  tokenNumber: 1,
113
113
  nullifierAmount: h.length,
114
114
  outputAmount: _.length
115
- }, S = p([_])[0][0], D = Array.from(A.getBytes(S)), O = await w(u, d, g[a], m), k = y(x, u, [T], [g[a]], await s.getEthereumAddress()), { proofAArr: N, proofBArr: P, proofCArr: F, publicInputsArr: I, commitmentValidationData: L } = await E(s.generateProofRemotely, s.merkleTreeHinkalByChain[u], s.userKeys, [T], [h], [_], v, O.flatFee, O.variableRate, e, j, b, [D], u), R = {
115
+ }, S = o([_])[0][0], D = Array.from(A.getBytes(S)), O = await w(s, f, g[c], m), k = y(x, s, [T], [g[c]], await a.getEthereumAddress()), { proofAArr: N, proofBArr: P, proofCArr: F, publicInputsArr: I, commitmentValidationData: L } = await E(a.generateProofRemotely, a.merkleTreeHinkalByChain[s], a.userKeys, [T], [h], [_], v, O.flatFee, O.variableRate, e, j, b, [D], s), R = {
116
116
  recipient: e,
117
117
  mint: T === "11111111111111111111111111111111" ? void 0 : T
118
118
  };
119
119
  return {
120
120
  relayAddress: j,
121
121
  functionName: "transact",
122
- chainId: u,
123
- recipientAmount: g[a].toString(),
122
+ chainId: s,
123
+ recipientAmount: g[c].toString(),
124
124
  args: {
125
125
  proofAArr: N,
126
126
  proofBArr: P,
@@ -133,30 +133,30 @@ var N = (n, a, o, s) => {
133
133
  accounts: R,
134
134
  adminData: k,
135
135
  commitmentValidationData: L,
136
- displayRecipient: C?.[a]
136
+ displayRecipient: C?.[c]
137
137
  };
138
138
  }));
139
- P.push(...a);
139
+ P.push(...c);
140
140
  }
141
141
  await O({
142
142
  id: _,
143
- chainId: u,
143
+ chainId: s,
144
144
  hashedEthereumAddress: h,
145
- phase: c.BEFORE_SCHEDULE_WITHDRAW
145
+ phase: u.BEFORE_SCHEDULE_WITHDRAW
146
146
  });
147
- let F = await D(u, P, h, v, b, S);
147
+ let F = await D(s, P, h, v, b, S);
148
148
  return await O({
149
149
  id: _,
150
- chainId: u,
150
+ chainId: s,
151
151
  hashedEthereumAddress: h,
152
- phase: c.AFTER_SCHEDULE_WITHDRAW,
152
+ phase: u.AFTER_SCHEDULE_WITHDRAW,
153
153
  scheduleId: F
154
154
  }), F;
155
- }, L = async (e, t, n, r, i, a, o, c, l, p) => {
156
- let m = f([t]), h = t.erc20TokenAddress, g = u(await e.getEthereumAddressByChain(m)), _ = l ? d(l) : void 0, v = a ?? await x(m, h, [h], s.Transact, [], 5n), { userDepositedUtxos: y, depositTxHash: b, statusId: C } = await F(e, m, t, n, r, v, g);
157
- return await S(e, m, y), {
155
+ }, L = async (e, t, n, r, i, o, s, c, l, u) => {
156
+ let d = m([t]), h = t.erc20TokenAddress, g = f(await e.getEthereumAddressByChain(d)), _ = l ? p(l) : void 0, v = o ?? await x(d, h, [h], a.Transact, [], 5n), { userDepositedUtxos: y, depositTxHash: b, statusId: C } = await F(e, d, t, n, r, v, g);
157
+ return await S(e, d, y), {
158
158
  depositTxHash: b,
159
- scheduleId: await I(e, m, t, y, v, g, n, C, i, o, c, _, p)
159
+ scheduleId: await I(e, d, t, y, v, g, n, C, i, s, c, _, u)
160
160
  };
161
161
  };
162
162
  //#endregion
@@ -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(`../../types/external-action.types.cjs`),s=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/solana.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),ee=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),m=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`),y=require(`@solana/web3.js`);var b=async(e,t,n,r)=>{let i=[...await l.addPaddingToUtxos(e,t,n,r,6)],o=a.getCurrentTimeInSeconds().toString(),s=[];for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=await u.outputUtxoProcessing(e.userKeys,i[t],r[t],o);s.push([n[0]])}return{inputUtxosArray:i,outputUtxosArray:s}},x=async(a,l,u,x,te,S,C,w,T)=>{let E=c.validateAndGetChainId(l),D=new y.PublicKey(t.solanaNativeAddress),{hinkalAddress:ne,originalDeployer:O}=e.networkRegistry[E].contractData;if(!O)throw Error(`No IDL configured for Solana program on this network`);let k=new y.PublicKey(O),A=new y.PublicKey(ne),j=l.map(e=>e.erc20TokenAddress),{userKeys:M,merkleTreeHinkalByChain:N}=a,P=w??await h.getFeeStructure(E,C,j,o.ExternalActionId.Transact),F=u[1],I=Number(a.cacheDevice.get(s.StorageKeys.SLIPPAGE_PERCENTAGE)??0),L=l[1],R=r.getAmountInToken(L,F),z=Number(R)*I/100;u[1]-=r.getAmountInWei(L,z.toFixed(L.decimals));let B=F*BigInt(P.variableRate??0)/10000n+P.flatFee;if(u[1]-=B,u[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let V=P.variableRate.toString(),[H,U,{inputUtxosArray:W,outputUtxosArray:G}]=await Promise.all([a.getRandomRelay(E,!0),a.getEthereumAddressByChain(E),b(a,E,j,u)]);if(!H)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let K=a.userKeys.getShieldedPrivateKey(),q=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),K),J={tokenNumber:2,nullifierAmount:W[0].length,outputAmount:1},Y=d.calcEncryptedOutputs(G).map(e=>[...v.ethers.getBytes(e[0])]),X=f.getSwapperAccountPublicKeyFromSalt(A,k,x),{remainingAccounts:Z,hinkalInstructions:Q}=ee.convertOKXToHinkalInstructions(te,X);m.ensureAmountChanges(W,G,u);let{proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,commitmentValidationData:$}=await g.constructSolanaZkProof(a.generateProofRemotely,N[E],M,j,W,G,q,P.flatFee,P.variableRate,D.toString(),H,J,Y,E,Q,Z,x),se=f.getStorageAccountPublicKey(A,k),ce=f.getStorageVaultPublicKey(A,k),le=l[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[0].erc20TokenAddress),ue=l[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[1].erc20TokenAddress),de={recipient:D.toString(),storageAccount:se.toString(),storageVault:ce.toString(),swapperAccount:X.toString(),mintFrom:le?.toString()??null,mintTo:ue?.toString()??null,remainingAccounts:Z.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:S};return _.solanaTransactCallRelayer({chainId:E,relayAddress:H,functionName:`swap`,args:{encryptedOutputs:Y,proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,relayerFee:P.flatFee.toString(),variableRate:V,dimensions:J,hinkalInstructions:Q.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}))},accounts:de,commitmentValidationData:$,adminData:p.constructAdminData(T,E,j,u,U,l)})};exports.hinkalSolanaSwap=x;
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(`../../types/external-action.types.cjs`),o=require(`../../functions/snarkjs/common.snarkjs.cjs`),s=require(`../../functions/utils/time.utils.cjs`),c=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../../functions/web3/events/getShieldedBalance.cjs`),d=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/solana.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),ee=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),m=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`),y=require(`@solana/web3.js`);var b=async(e,t,n,r)=>{let i=[...await u.addPaddingToUtxos(e,t,n,r,6)],a=s.getCurrentTimeInSeconds().toString(),o=[];for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=await d.outputUtxoProcessing(e.userKeys,i[t],r[t],a);o.push([n[0]])}return{inputUtxosArray:i,outputUtxosArray:o}},x=async(s,u,d,x,te,S,C,w,T)=>{let E=l.validateAndGetChainId(u),D=new y.PublicKey(t.solanaNativeAddress),{hinkalAddress:ne,originalDeployer:O}=e.networkRegistry[E].contractData;if(!O)throw Error(`No IDL configured for Solana program on this network`);let k=new y.PublicKey(O),A=new y.PublicKey(ne),j=u.map(e=>e.erc20TokenAddress),{userKeys:M,merkleTreeHinkalByChain:N}=s,P=w??await h.getFeeStructure(E,C,j,a.ExternalActionId.Transact),F=d[1],I=Number(s.cacheDevice.get(c.StorageKeys.SLIPPAGE_PERCENTAGE)??0),L=u[1],R=r.getAmountInToken(L,F),z=Number(R)*I/100;d[1]-=r.getAmountInWei(L,z.toFixed(L.decimals));let B=F*BigInt(P.variableRate??0)/10000n+P.flatFee;if(d[1]-=B,d[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let V=P.variableRate.toString(),[H,U,{inputUtxosArray:W,outputUtxosArray:G}]=await Promise.all([s.getRandomRelay(E,!0),s.getEthereumAddressByChain(E),b(s,E,j,d)]);if(!H)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let K=s.userKeys.getShieldedPrivateKey(),q=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),K),J={tokenNumber:2,nullifierAmount:W[0].length,outputAmount:1},Y=o.calcEncryptedOutputs(G).map(e=>[...v.ethers.getBytes(e[0])]),X=f.getSwapperAccountPublicKeyFromSalt(A,k,x),{remainingAccounts:Z,hinkalInstructions:Q}=ee.convertOKXToHinkalInstructions(te,X);m.ensureAmountChanges(W,G,d);let{proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,commitmentValidationData:$}=await g.constructSolanaZkProof(s.generateProofRemotely,N[E],M,j,W,G,q,P.flatFee,P.variableRate,D.toString(),H,J,Y,E,Q,Z,x),se=f.getStorageAccountPublicKey(A,k),ce=f.getStorageVaultPublicKey(A,k),le=u[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(u[0].erc20TokenAddress),ue=u[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(u[1].erc20TokenAddress),de={recipient:D.toString(),storageAccount:se.toString(),storageVault:ce.toString(),swapperAccount:X.toString(),mintFrom:le?.toString()??null,mintTo:ue?.toString()??null,remainingAccounts:Z.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:S};return _.solanaTransactCallRelayer({chainId:E,relayAddress:H,functionName:`swap`,args:{encryptedOutputs:Y,proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,relayerFee:P.flatFee.toString(),variableRate:V,dimensions:J,hinkalInstructions:Q.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}))},accounts:de,commitmentValidationData:$,adminData:p.constructAdminData(T,E,j,d,U,u)})};exports.hinkalSolanaSwap=x;
@@ -3,81 +3,81 @@ import { solanaNativeAddress as t } from "../../constants/protocol.constants.mjs
3
3
  import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
4
4
  import { getAmountInToken as r, getAmountInWei as i, randomBigInt as a } from "../../functions/web3/etherFunctions.mjs";
5
5
  import { UserKeys as o } from "../crypto-keys/keys.mjs";
6
- import { getCurrentTimeInSeconds as s } from "../../functions/utils/time.utils.mjs";
7
- import { ExternalActionId as c } from "../../types/external-action.types.mjs";
8
- import { StorageKeys as l } from "../../types/cache.types.mjs";
6
+ import { ExternalActionId as s } from "../../types/external-action.types.mjs";
7
+ import { calcEncryptedOutputs as c } from "../../functions/snarkjs/common.snarkjs.mjs";
8
+ import { getCurrentTimeInSeconds as l } from "../../functions/utils/time.utils.mjs";
9
+ import { StorageKeys as u } from "../../types/cache.types.mjs";
9
10
  import "../../types/index.mjs";
10
- import { validateAndGetChainId as u } from "../../functions/utils/token-check.utils.mjs";
11
- import { addPaddingToUtxos as d } from "../../functions/web3/events/getShieldedBalance.mjs";
12
- import { outputUtxoProcessing as f } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
13
- import { calcEncryptedOutputs as ee } from "../../functions/snarkjs/common.snarkjs.mjs";
14
- import { getStorageAccountPublicKey as te, getStorageVaultPublicKey as p, getSwapperAccountPublicKeyFromSalt as m } from "../../functions/pre-transaction/solana.mjs";
15
- import { constructAdminData as h } from "../../functions/pre-transaction/constructAdminData.mjs";
16
- import { convertOKXToHinkalInstructions as g } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
17
- import { ensureAmountChanges as _ } from "../../functions/pre-transaction/ensureAmountChanges.mjs";
18
- import { getFeeStructure as v } from "../../functions/pre-transaction/getFeeStructure.mjs";
19
- import { constructSolanaZkProof as y } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
20
- import { solanaTransactCallRelayer as b } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
- import { ethers as x } from "ethers";
22
- import { PublicKey as S } from "@solana/web3.js";
11
+ import { validateAndGetChainId as d } from "../../functions/utils/token-check.utils.mjs";
12
+ import { addPaddingToUtxos as f } from "../../functions/web3/events/getShieldedBalance.mjs";
13
+ import { outputUtxoProcessing as p } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
14
+ import { getStorageAccountPublicKey as ee, getStorageVaultPublicKey as m, getSwapperAccountPublicKeyFromSalt as h } from "../../functions/pre-transaction/solana.mjs";
15
+ import { constructAdminData as g } from "../../functions/pre-transaction/constructAdminData.mjs";
16
+ import { convertOKXToHinkalInstructions as _ } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
17
+ import { ensureAmountChanges as v } from "../../functions/pre-transaction/ensureAmountChanges.mjs";
18
+ import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
19
+ import { constructSolanaZkProof as b } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
20
+ import { solanaTransactCallRelayer as x } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
21
+ import { ethers as S } from "ethers";
22
+ import { PublicKey as C } from "@solana/web3.js";
23
23
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaSwap.ts
24
- var ne = async (e, t, n, r) => {
25
- let i = [...await d(e, t, n, r, 6)], a = s().toString(), o = [];
24
+ var te = async (e, t, n, r) => {
25
+ let i = [...await f(e, t, n, r, 6)], a = l().toString(), o = [];
26
26
  for (let t = 0; t < n.length; t += 1) {
27
- let { outputUtxos: n } = await f(e.userKeys, i[t], r[t], a);
27
+ let { outputUtxos: n } = await p(e.userKeys, i[t], r[t], a);
28
28
  o.push([n[0]]);
29
29
  }
30
30
  return {
31
31
  inputUtxosArray: i,
32
32
  outputUtxosArray: o
33
33
  };
34
- }, C = async (s, d, f, C, re, ie, ae, w, T) => {
35
- let E = u(d), D = new S(t), { hinkalAddress: O, originalDeployer: k } = e[E].contractData;
36
- if (!k) throw Error("No IDL configured for Solana program on this network");
37
- let A = new S(k), j = new S(O), M = d.map((e) => e.erc20TokenAddress), { userKeys: N, merkleTreeHinkalByChain: P } = s, F = w ?? await v(E, ae, M, c.Transact), I = f[1], L = Number(s.cacheDevice.get(l.SLIPPAGE_PERCENTAGE) ?? 0), R = d[1], z = r(R, I), B = Number(z) * L / 100;
38
- f[1] -= i(R, B.toFixed(R.decimals));
39
- let V = I * BigInt(F.variableRate ?? 0) / 10000n + F.flatFee;
40
- if (f[1] -= V, f[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
41
- let H = F.variableRate.toString(), [U, oe, { inputUtxosArray: W, outputUtxosArray: G }] = await Promise.all([
42
- s.getRandomRelay(E, !0),
43
- s.getEthereumAddressByChain(E),
44
- ne(s, E, M, f)
34
+ }, w = async (l, f, p, w, ne, re, ie, T, E) => {
35
+ let D = d(f), O = new C(t), { hinkalAddress: k, originalDeployer: A } = e[D].contractData;
36
+ if (!A) throw Error("No IDL configured for Solana program on this network");
37
+ let j = new C(A), M = new C(k), N = f.map((e) => e.erc20TokenAddress), { userKeys: P, merkleTreeHinkalByChain: F } = l, I = T ?? await y(D, ie, N, s.Transact), L = p[1], R = Number(l.cacheDevice.get(u.SLIPPAGE_PERCENTAGE) ?? 0), z = f[1], B = r(z, L), V = Number(B) * R / 100;
38
+ p[1] -= i(z, V.toFixed(z.decimals));
39
+ let H = L * BigInt(I.variableRate ?? 0) / 10000n + I.flatFee;
40
+ if (p[1] -= H, p[1] < 0) throw Error(n.LOW_OUTPUT_AMOUNT);
41
+ let U = I.variableRate.toString(), [W, ae, { inputUtxosArray: G, outputUtxosArray: K }] = await Promise.all([
42
+ l.getRandomRelay(D, !0),
43
+ l.getEthereumAddressByChain(D),
44
+ te(l, D, N, p)
45
45
  ]);
46
- if (!U) throw Error(n.RELAYER_NOT_AVAILABLE);
47
- let K = s.userKeys.getShieldedPrivateKey(), q = o.findCorrectRandomization(a(31), K), J = {
46
+ if (!W) throw Error(n.RELAYER_NOT_AVAILABLE);
47
+ let q = l.userKeys.getShieldedPrivateKey(), J = o.findCorrectRandomization(a(31), q), Y = {
48
48
  tokenNumber: 2,
49
- nullifierAmount: W[0].length,
49
+ nullifierAmount: G[0].length,
50
50
  outputAmount: 1
51
- }, Y = ee(G).map((e) => [...x.getBytes(e[0])]), X = m(j, A, C), { remainingAccounts: Z, hinkalInstructions: Q } = g(re, X);
52
- _(W, G, f);
53
- let { proofAArr: $, proofBArr: se, proofCArr: ce, publicInputsArr: le, commitmentValidationData: ue } = await y(s.generateProofRemotely, P[E], N, M, W, G, q, F.flatFee, F.variableRate, D.toString(), U, J, Y, E, Q, Z, C), de = te(j, A), fe = p(j, A), pe = d[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new S(d[0].erc20TokenAddress), me = d[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new S(d[1].erc20TokenAddress), he = {
54
- recipient: D.toString(),
51
+ }, X = c(K).map((e) => [...S.getBytes(e[0])]), Z = h(M, j, w), { remainingAccounts: Q, hinkalInstructions: $ } = _(ne, Z);
52
+ v(G, K, p);
53
+ let { proofAArr: oe, proofBArr: se, proofCArr: ce, publicInputsArr: le, commitmentValidationData: ue } = await b(l.generateProofRemotely, F[D], P, N, G, K, J, I.flatFee, I.variableRate, O.toString(), W, Y, X, D, $, Q, w), de = ee(M, j), fe = m(M, j), pe = f[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new C(f[0].erc20TokenAddress), me = f[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new C(f[1].erc20TokenAddress), he = {
54
+ recipient: O.toString(),
55
55
  storageAccount: de.toString(),
56
56
  storageVault: fe.toString(),
57
- swapperAccount: X.toString(),
57
+ swapperAccount: Z.toString(),
58
58
  mintFrom: pe?.toString() ?? null,
59
59
  mintTo: me?.toString() ?? null,
60
- remainingAccounts: Z.map((e) => ({
60
+ remainingAccounts: Q.map((e) => ({
61
61
  pubkey: e.pubkey.toString(),
62
62
  isSigner: e.isSigner,
63
63
  isWritable: e.isWritable
64
64
  })),
65
- addressLookupTableAccount: ie
65
+ addressLookupTableAccount: re
66
66
  };
67
- return b({
68
- chainId: E,
69
- relayAddress: U,
67
+ return x({
68
+ chainId: D,
69
+ relayAddress: W,
70
70
  functionName: "swap",
71
71
  args: {
72
- encryptedOutputs: Y,
73
- proofAArr: $,
72
+ encryptedOutputs: X,
73
+ proofAArr: oe,
74
74
  proofBArr: se,
75
75
  proofCArr: ce,
76
76
  publicInputsArr: le,
77
- relayerFee: F.flatFee.toString(),
78
- variableRate: H,
79
- dimensions: J,
80
- hinkalInstructions: Q.map((e) => ({
77
+ relayerFee: I.flatFee.toString(),
78
+ variableRate: U,
79
+ dimensions: Y,
80
+ hinkalInstructions: $.map((e) => ({
81
81
  accountIndexes: [...e.accountIndexes],
82
82
  data: [...e.data],
83
83
  programIndex: e.programIndex
@@ -85,8 +85,8 @@ var ne = async (e, t, n, r) => {
85
85
  },
86
86
  accounts: he,
87
87
  commitmentValidationData: ue,
88
- adminData: h(T, E, M, f, oe, d)
88
+ adminData: g(E, D, N, p, ae, f)
89
89
  });
90
90
  };
91
91
  //#endregion
92
- export { C as hinkalSolanaSwap };
92
+ export { w as hinkalSolanaSwap };
@@ -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(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`);var y=async(e,t,n,r,i,o)=>{let s=(await l.addPaddingToUtxos(e,t,n,r,6))[0],c=a.getCurrentTimeInSeconds().toString(),{outputUtxos:d}=await u.outputUtxoProcessing(e.userKeys,s,r[0],c,!0,i,o);return{inputUtxos:s,senderUtxo:d[0],recipientUtxo:d[1]}},b=async(a,l,u,_,b,x,S)=>{if(!s.isValidPrivateAddress(_))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=c.validateAndGetChainId(l),w=[...u],{originalDeployer:T}=e.networkRegistry[C].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=a,O=l.map(e=>e.erc20TokenAddress);if(O.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let k=x??await m.getFeeStructure(C,b,O,o.ExternalActionId.Transact,[],5n);k.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let A=h.calculateTotalFee(-w[0],k),j=-w[0];w[0]-=A;let[M,N,{inputUtxos:P,senderUtxo:F,recipientUtxo:I}]=await Promise.all([a.getRandomRelay(C,!0),a.getEthereumAddressByChain(C),y(a,C,O,w,_,j)]);if(!M)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let L=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),a.userKeys.getShieldedPrivateKey()),R={tokenNumber:O.length,nullifierAmount:P.length,outputAmount:2},z=d.calcEncryptedOutputs([[F,I]])[0].map(e=>Array.from(v.ethers.getBytes(e)));p.ensureAmountChanges([P],[[F]],w);let{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,commitmentValidationData:W}=await g.constructSolanaZkProof(a.generateProofRemotely,D[C],E,[O[0]],[P],[[F,I]],L,A,0n,t.solanaNativeAddress,M,R,z,C),G={recipient:M,mint:O[0]===`11111111111111111111111111111111`?void 0:O[0]};return{chainId:C,relay:M,args:{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,encryptedOutputs:z,relayerFee:A.toString(),dimensions:R},accounts:G,adminData:f.constructAdminData(S,C,O,w,N),commitmentValidationData:W,recipientUtxo:I}},x=async(e,t,n,r,i,a,o,s=!1)=>{if(s)throw Error(`onlyGasEstimate is not supported for Solana transfer`);let c=await b(e,t,n,r,i,a,o);return _.solanaTransactCallRelayer({chainId:c.chainId,relayAddress:c.relay,functionName:`transfer`,args:c.args,accounts:c.accounts,adminData:c.adminData,commitmentValidationData:c.commitmentValidationData})};exports.hinkalSolanaTransfer=x;
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(`../../types/external-action.types.cjs`),o=require(`../../functions/snarkjs/common.snarkjs.cjs`),s=require(`../../functions/utils/time.utils.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../../functions/web3/events/getShieldedBalance.cjs`),d=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`);var y=async(e,t,n,r,i,a)=>{let o=(await u.addPaddingToUtxos(e,t,n,r,6))[0],c=s.getCurrentTimeInSeconds().toString(),{outputUtxos:l}=await d.outputUtxoProcessing(e.userKeys,o,r[0],c,!0,i,a);return{inputUtxos:o,senderUtxo:l[0],recipientUtxo:l[1]}},b=async(s,u,d,_,b,x,S)=>{if(!c.isValidPrivateAddress(_))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=l.validateAndGetChainId(u),w=[...d],{originalDeployer:T}=e.networkRegistry[C].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=s,O=u.map(e=>e.erc20TokenAddress);if(O.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let k=x??await m.getFeeStructure(C,b,O,a.ExternalActionId.Transact,[],5n);k.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let A=h.calculateTotalFee(-w[0],k),j=-w[0];w[0]-=A;let[M,N,{inputUtxos:P,senderUtxo:F,recipientUtxo:I}]=await Promise.all([s.getRandomRelay(C,!0),s.getEthereumAddressByChain(C),y(s,C,O,w,_,j)]);if(!M)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let L=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s.userKeys.getShieldedPrivateKey()),R={tokenNumber:O.length,nullifierAmount:P.length,outputAmount:2},z=o.calcEncryptedOutputs([[F,I]])[0].map(e=>Array.from(v.ethers.getBytes(e)));p.ensureAmountChanges([P],[[F]],w);let{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,commitmentValidationData:W}=await g.constructSolanaZkProof(s.generateProofRemotely,D[C],E,[O[0]],[P],[[F,I]],L,A,0n,t.solanaNativeAddress,M,R,z,C),G={recipient:M,mint:O[0]===`11111111111111111111111111111111`?void 0:O[0]};return{chainId:C,relay:M,args:{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,encryptedOutputs:z,relayerFee:A.toString(),dimensions:R},accounts:G,adminData:f.constructAdminData(S,C,O,w,N),commitmentValidationData:W,recipientUtxo:I}},x=async(e,t,n,r,i,a,o,s=!1)=>{if(s)throw Error(`onlyGasEstimate is not supported for Solana transfer`);let c=await b(e,t,n,r,i,a,o);return _.solanaTransactCallRelayer({chainId:c.chainId,relayAddress:c.relay,functionName:`transfer`,args:c.args,accounts:c.accounts,adminData:c.adminData,commitmentValidationData:c.commitmentValidationData})};exports.hinkalSolanaTransfer=x;