@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
@@ -1 +1 @@
1
- const e=require(`../constants/vite.constants.cjs`),t=require(`./rnCryptoBridge.cjs`),n=require(`../functions/web3/etherFunctions.cjs`),r=require(`../webworker/cryptoWorker/cryptoWorker.types.cjs`);var i=()=>n.randomBigInt(31).toString(),a=async n=>{if(!e.isReactNative)return n.getSpendingKeyPair().pubSpendingBJJPoint;let i=t.getRnCryptoBridge();await i.init();let a=await i.call(r.CryptoWorkerOp.GET_SPENDING_KEY_PAIR,{signature:n.getSignature()});return[BigInt(a.pubSpendingBJJPoint[0]),BigInt(a.pubSpendingBJJPoint[1])]},o=async(n,a)=>{if(!e.isReactNative)throw Error(`prepareNewStyleUtxoFields is only for React Native crypto bridge`);let o=t.getRnCryptoBridge();await o.init();let s=await o.call(r.CryptoWorkerOp.PREPARE_NEW_STYLE_UTXO_FIELDS,{initialRandomization:i(),nullifyingKey:n,spendingPublicKey:a?.map(e=>e.toString())});return{randomization:BigInt(s.randomization),H0:[BigInt(s.H0[0]),BigInt(s.H0[1])],stealthAddress:s.stealthAddress}},s=async n=>{if(!e.isReactNative)throw Error(`prepareNewStyleUtxoFieldsBatch is only for React Native crypto bridge`);let a=t.getRnCryptoBridge();return await a.init(),(await a.call(r.CryptoWorkerOp.PREPARE_NEW_STYLE_UTXO_FIELDS_BATCH,{items:n.map(e=>({initialRandomization:i(),nullifyingKey:e.nullifyingKey,spendingPublicKey:e.spendingPublicKey?.map(e=>e.toString())}))})).map(e=>({randomization:BigInt(e.randomization),H0:[BigInt(e.H0[0]),BigInt(e.H0[1])],stealthAddress:e.stealthAddress}))},c=t=>e.isReactNative&&!!t.isNewStyle&&!!t.nullifyingKey&&t.H0===void 0&&t.randomization===void 0;exports.getSpendingPublicKeyForRn=a,exports.needsRnNewStyleCrypto=c,exports.prepareNewStyleUtxoFields=o,exports.prepareNewStyleUtxoFieldsBatch=s;
1
+ const e=require(`../constants/vite.constants.cjs`),t=require(`./rnCryptoBridge.cjs`),n=require(`../functions/web3/etherFunctions.cjs`),r=require(`../webworker/cryptoWorker/cryptoWorker.types.cjs`),i=require(`../functions/snarkjs/common.snarkjs.cjs`);var a=()=>n.randomBigInt(31).toString(),o=async e=>{let{pubSpendingBJJPoint:t}=await s(e);return t},s=async n=>{if(!e.isReactNative)return n.getSpendingKeyPair();let i=t.getRnCryptoBridge();await i.init();let a=await i.call(r.CryptoWorkerOp.GET_SPENDING_KEY_PAIR,{signature:n.getSignature()});return{privSpendingKey:a.privSpendingKey,pubSpendingBJJPoint:[BigInt(a.pubSpendingBJJPoint[0]),BigInt(a.pubSpendingBJJPoint[1])]}},c=async(n,i)=>{if(!e.isReactNative)return n.signEddsa(i);let a=t.getRnCryptoBridge();await a.init();let o=await a.call(r.CryptoWorkerOp.SIGN_EDDSA,{signature:n.getSignature(),message:i.toString()});return{R8:[BigInt(o.R8[0]),BigInt(o.R8[1])],S:BigInt(o.S)}},l=async(n,a,o)=>{if(!e.isReactNative)return i.calcStealthAddressStructure(n,a,o);let s=t.getRnCryptoBridge();await s.init();let c=await s.call(r.CryptoWorkerOp.CALC_STEALTH_ADDRESS_STRUCTURE,{extraRandomization:n.toString(),nullifyingPrivateKey:a,spendingPublicKey:o.map(e=>e.toString())});return{extraRandomization:BigInt(c.extraRandomization),H0:BigInt(c.H0),H1:BigInt(c.H1),stealthAddress:BigInt(c.stealthAddress)}},u=async(n,i)=>{if(!e.isReactNative)throw Error(`prepareNewStyleUtxoFields is only for React Native crypto bridge`);let o=t.getRnCryptoBridge();await o.init();let s=await o.call(r.CryptoWorkerOp.PREPARE_NEW_STYLE_UTXO_FIELDS,{initialRandomization:a(),nullifyingKey:n,spendingPublicKey:i?.map(e=>e.toString())});return{randomization:BigInt(s.randomization),H0:[BigInt(s.H0[0]),BigInt(s.H0[1])],stealthAddress:s.stealthAddress}},d=async n=>{if(!e.isReactNative)throw Error(`prepareNewStyleUtxoFieldsBatch is only for React Native crypto bridge`);let i=t.getRnCryptoBridge();return await i.init(),(await i.call(r.CryptoWorkerOp.PREPARE_NEW_STYLE_UTXO_FIELDS_BATCH,{items:n.map(e=>({initialRandomization:a(),nullifyingKey:e.nullifyingKey,spendingPublicKey:e.spendingPublicKey?.map(e=>e.toString())}))})).map(e=>({randomization:BigInt(e.randomization),H0:[BigInt(e.H0[0]),BigInt(e.H0[1])],stealthAddress:e.stealthAddress}))},f=t=>e.isReactNative&&!!t.isNewStyle&&!!t.nullifyingKey&&t.H0===void 0&&t.randomization===void 0;exports.calcStealthAddressStructureForRn=l,exports.getSpendingKeyPairForRn=s,exports.getSpendingPublicKeyForRn=o,exports.needsRnNewStyleCrypto=f,exports.prepareNewStyleUtxoFields=u,exports.prepareNewStyleUtxoFieldsBatch=d,exports.signEddsaForRn=c;
@@ -1,11 +1,22 @@
1
1
  import { IUtxoConstructor } from '../data-structures/utxo/Utxo';
2
2
  import { UserKeys } from '../data-structures/crypto-keys/keys';
3
+ import { StealthAddressStructure } from '../types/circom-data.types';
4
+ export type SpendingKeyPair = {
5
+ privSpendingKey: string;
6
+ pubSpendingBJJPoint: [bigint, bigint];
7
+ };
3
8
  export type PreparedNewStyleUtxoFields = {
4
9
  randomization: bigint;
5
10
  H0: [bigint, bigint];
6
11
  stealthAddress: string;
7
12
  };
8
13
  export declare const getSpendingPublicKeyForRn: (userKeys: UserKeys) => Promise<[bigint, bigint]>;
14
+ export declare const getSpendingKeyPairForRn: (userKeys: UserKeys) => Promise<SpendingKeyPair>;
15
+ export declare const signEddsaForRn: (userKeys: UserKeys, message: bigint) => Promise<{
16
+ R8: [bigint, bigint];
17
+ S: bigint;
18
+ }>;
19
+ export declare const calcStealthAddressStructureForRn: (extraRandomization: bigint, nullifyingPrivateKey: string, spendingPublicKey: [bigint, bigint]) => Promise<StealthAddressStructure>;
9
20
  export declare const prepareNewStyleUtxoFields: (nullifyingKey: string, spendingPublicKey?: bigint[]) => Promise<PreparedNewStyleUtxoFields>;
10
21
  export declare const prepareNewStyleUtxoFieldsBatch: (items: {
11
22
  nullifyingKey: string;
@@ -2,32 +2,66 @@ import { isReactNative as e } from "../constants/vite.constants.mjs";
2
2
  import { getRnCryptoBridge as t } from "./rnCryptoBridge.mjs";
3
3
  import { randomBigInt as n } from "../functions/web3/etherFunctions.mjs";
4
4
  import { CryptoWorkerOp as r } from "../webworker/cryptoWorker/cryptoWorker.types.mjs";
5
+ import { calcStealthAddressStructure as i } from "../functions/snarkjs/common.snarkjs.mjs";
5
6
  //#region libs/shared/common/src/crypto/rnUtxoCrypto.ts
6
- var i = () => n(31).toString(), a = async (n) => {
7
- if (!e) return n.getSpendingKeyPair().pubSpendingBJJPoint;
7
+ var a = () => n(31).toString(), o = async (e) => {
8
+ let { pubSpendingBJJPoint: t } = await s(e);
9
+ return t;
10
+ }, s = async (n) => {
11
+ if (!e) return n.getSpendingKeyPair();
8
12
  let i = t();
9
13
  await i.init();
10
14
  let a = await i.call(r.GET_SPENDING_KEY_PAIR, { signature: n.getSignature() });
11
- return [BigInt(a.pubSpendingBJJPoint[0]), BigInt(a.pubSpendingBJJPoint[1])];
12
- }, o = async (n, a) => {
15
+ return {
16
+ privSpendingKey: a.privSpendingKey,
17
+ pubSpendingBJJPoint: [BigInt(a.pubSpendingBJJPoint[0]), BigInt(a.pubSpendingBJJPoint[1])]
18
+ };
19
+ }, c = async (n, i) => {
20
+ if (!e) return n.signEddsa(i);
21
+ let a = t();
22
+ await a.init();
23
+ let o = await a.call(r.SIGN_EDDSA, {
24
+ signature: n.getSignature(),
25
+ message: i.toString()
26
+ });
27
+ return {
28
+ R8: [BigInt(o.R8[0]), BigInt(o.R8[1])],
29
+ S: BigInt(o.S)
30
+ };
31
+ }, l = async (n, a, o) => {
32
+ if (!e) return i(n, a, o);
33
+ let s = t();
34
+ await s.init();
35
+ let c = await s.call(r.CALC_STEALTH_ADDRESS_STRUCTURE, {
36
+ extraRandomization: n.toString(),
37
+ nullifyingPrivateKey: a,
38
+ spendingPublicKey: o.map((e) => e.toString())
39
+ });
40
+ return {
41
+ extraRandomization: BigInt(c.extraRandomization),
42
+ H0: BigInt(c.H0),
43
+ H1: BigInt(c.H1),
44
+ stealthAddress: BigInt(c.stealthAddress)
45
+ };
46
+ }, u = async (n, i) => {
13
47
  if (!e) throw Error("prepareNewStyleUtxoFields is only for React Native crypto bridge");
14
48
  let o = t();
15
49
  await o.init();
16
50
  let s = await o.call(r.PREPARE_NEW_STYLE_UTXO_FIELDS, {
17
- initialRandomization: i(),
51
+ initialRandomization: a(),
18
52
  nullifyingKey: n,
19
- spendingPublicKey: a?.map((e) => e.toString())
53
+ spendingPublicKey: i?.map((e) => e.toString())
20
54
  });
21
55
  return {
22
56
  randomization: BigInt(s.randomization),
23
57
  H0: [BigInt(s.H0[0]), BigInt(s.H0[1])],
24
58
  stealthAddress: s.stealthAddress
25
59
  };
26
- }, s = async (n) => {
60
+ }, d = async (n) => {
27
61
  if (!e) throw Error("prepareNewStyleUtxoFieldsBatch is only for React Native crypto bridge");
28
- let a = t();
29
- return await a.init(), (await a.call(r.PREPARE_NEW_STYLE_UTXO_FIELDS_BATCH, { items: n.map((e) => ({
30
- initialRandomization: i(),
62
+ let i = t();
63
+ return await i.init(), (await i.call(r.PREPARE_NEW_STYLE_UTXO_FIELDS_BATCH, { items: n.map((e) => ({
64
+ initialRandomization: a(),
31
65
  nullifyingKey: e.nullifyingKey,
32
66
  spendingPublicKey: e.spendingPublicKey?.map((e) => e.toString())
33
67
  })) })).map((e) => ({
@@ -35,6 +69,6 @@ var i = () => n(31).toString(), a = async (n) => {
35
69
  H0: [BigInt(e.H0[0]), BigInt(e.H0[1])],
36
70
  stealthAddress: e.stealthAddress
37
71
  }));
38
- }, c = (t) => e && !!t.isNewStyle && !!t.nullifyingKey && t.H0 === void 0 && t.randomization === void 0;
72
+ }, f = (t) => e && !!t.isNewStyle && !!t.nullifyingKey && t.H0 === void 0 && t.randomization === void 0;
39
73
  //#endregion
40
- export { a as getSpendingPublicKeyForRn, c as needsRnNewStyleCrypto, o as prepareNewStyleUtxoFields, s as prepareNewStyleUtxoFieldsBatch };
74
+ export { l as calcStealthAddressStructureForRn, s as getSpendingKeyPairForRn, o as getSpendingPublicKeyForRn, f as needsRnNewStyleCrypto, u as prepareNewStyleUtxoFields, d as prepareNewStyleUtxoFieldsBatch, c as signEddsaForRn };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/transactions.types.cjs`),c=require(`../../types/admin.types.cjs`),l=require(`../../types/activities.types.cjs`),u=require(`../../types/transaction.types.cjs`),d=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const f=require(`../../error-handling/logger.cjs`),p=require(`../../API/API.cjs`),m=require(`../../functions/utils/erc20tokenFunctions.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/utils/create-provider.cjs`),v=require(`../../functions/pre-transaction/getFeeStructure.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),w=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),T=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),E=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const D=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var O=3*1e3,k=13*1e3,A=async(A,j,M,ee,N,P,F,I)=>{if(!M||F.length===0)return;let L;try{let a=_.createJsonRpcProvider(j);await i.waitLittle(j===e.chainIds.ethMainnet?k:O);let u=await C.getTokensToDepositBack(F,N,M,a);if(!u.length){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let f=(await m.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(j),j)).filter(e=>e!==void 0),{prices:h}=await p.API.getTokenPrices(j,f.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[f[t].erc20TokenAddress.toLowerCase(),e])),z=u.map(({token:e})=>e),B=u.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=S.createTransaferEmporiumOpsBatch(A,j,V,await g.modifyVolatileTokenAmountChanges(j,z,B,M)),U=await v.getFeeStructure(j,N,V,o.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,M,j))),{flatFee:W}=U??{},G=await m.getErc20TokenFromAPI(j,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await T.selectGasToken(N,q,j,z,H,await w.getGasTokenRecords(f,j,A,M,a,R),U,V,M);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[j].contractData,$={activityType:l.ActivityTypes.AUTO_SHIELD,chainId:j,from:M,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};L=await D.activityStorage.saveTxRequest($),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Loading}),E.updateHinkal(I,j,A);let te={id:0,success:!0,txHash:await A.actionReceive(z,B,Y,X,ee,c.AdminTransactionType.AutoShield)};await D.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await D.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,u.TransactionRequestType.ReceiveFromShieldedAccount)}),f.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=A;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),s=require(`../../types/transactions.types.cjs`),c=require(`../../types/admin.types.cjs`),l=require(`../../types/activities.types.cjs`),u=require(`../../types/transaction.types.cjs`),d=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const f=require(`../../error-handling/logger.cjs`),p=require(`../../API/API.cjs`),m=require(`../../functions/utils/erc20tokenFunctions.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/utils/create-provider.cjs`),v=require(`../../functions/pre-transaction/getFeeStructure.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),w=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),T=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),E=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const D=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var O=3*1e3,k=13*1e3,A=async(A,j,M,ee,N,P,F,I)=>{if(!M||F.length===0)return;let L;try{let o=_.createJsonRpcProvider(j);await a.waitLittle(j===e.chainIds.ethMainnet?k:O);let u=await C.getTokensToDepositBack(F,N,M,o);if(!u.length){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let f=(await m.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(j),j)).filter(e=>e!==void 0),{prices:h}=await p.API.getTokenPrices(j,f.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[f[t].erc20TokenAddress.toLowerCase(),e])),z=u.map(({token:e})=>e),B=u.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=S.createTransaferEmporiumOpsBatch(A,j,V,await g.modifyVolatileTokenAmountChanges(j,z,B,M)),U=await v.getFeeStructure(j,N,V,i.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,M,j))),{flatFee:W}=U??{},G=await m.getErc20TokenFromAPI(j,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await T.selectGasToken(N,q,j,z,H,await w.getGasTokenRecords(f,j,A,M,o,R),U,V,M);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[j].contractData,$={activityType:l.ActivityTypes.AUTO_SHIELD,chainId:j,from:M,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};L=await D.activityStorage.saveTxRequest($),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Loading}),E.updateHinkal(I,j,A);let te={id:0,success:!0,txHash:await A.actionReceive(z,B,Y,X,ee,c.AdminTransactionType.AutoShield)};await D.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof o.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await D.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,u.TransactionRequestType.ReceiveFromShieldedAccount)}),f.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=A;
@@ -2,9 +2,9 @@ import { chainIds as e, networkRegistry as t } from "../../constants/chains.cons
2
2
  import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
3
3
  import { gasErrorCodes as ee, transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
4
4
  import { getAmountInToken as i } from "../../functions/web3/etherFunctions.mjs";
5
- import { waitLittle as a } from "../../functions/utils/time.utils.mjs";
6
- import { ErrorWithRelayerTransaction as o } from "../../error-handling/customErrors/ErrorWithTx.mjs";
7
- import { ExternalActionId as s } from "../../types/external-action.types.mjs";
5
+ import { ExternalActionId as a } from "../../types/external-action.types.mjs";
6
+ import { waitLittle as o } from "../../functions/utils/time.utils.mjs";
7
+ import { ErrorWithRelayerTransaction as s } from "../../error-handling/customErrors/ErrorWithTx.mjs";
8
8
  import { TransactionStatus as c } from "../../types/transactions.types.mjs";
9
9
  import { AdminTransactionType as l } from "../../types/admin.types.mjs";
10
10
  import { ActivityTypes as u } from "../../types/activities.types.mjs";
@@ -35,16 +35,16 @@ var te = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
35
35
  if (!M || I.length === 0) return;
36
36
  let R;
37
37
  try {
38
- let o = y(j);
39
- await a(j === e.ethMainnet ? ne : te);
40
- let d = await T(I, P, M, o);
38
+ let s = y(j);
39
+ await o(j === e.ethMainnet ? ne : te);
40
+ let d = await T(I, P, M, s);
41
41
  if (!d.length) {
42
42
  S(f.AutoShieldTxStatus, { message: r.AUTO_SHIELD_SKIPPED });
43
43
  return;
44
44
  }
45
- let p = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, p.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [p[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(A, j, H, await v(j, B, V, M)), W = await b(j, P, H, s.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
45
+ let p = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, p.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [p[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(A, j, H, await v(j, B, V, M)), W = await b(j, P, H, a.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
46
46
  if (!K) return;
47
- let q = i(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(P, J, j, B, U, await E(p, j, A, M, o, z), W, H, M);
47
+ let q = i(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(P, J, j, B, U, await E(p, j, A, M, s, z), W, H, M);
48
48
  if (!Y) return;
49
49
  let { feeToken: X, feeStructure: Z } = Y ?? {};
50
50
  if (F && Number(F) < J) {
@@ -76,7 +76,7 @@ var te = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
76
76
  });
77
77
  } catch (e) {
78
78
  let t;
79
- e instanceof o && (t = e.txHash);
79
+ e instanceof s && (t = e.txHash);
80
80
  let n = {
81
81
  error: e,
82
82
  id: 0,
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.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(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);var m=async(m,h,g,_,v)=>{let y=l.validateAndGetChainId([h]),b=e.isTronLike(y),x=h.erc20TokenAddress,S=c.addressToHexFormat(await m.getEthereumAddressByChain(y));if(!n.caseInsensitiveEqual(x,g.erc20TokenAddress))throw Error(`Off-chain UTXO token mismatch`);let C=v?new i.UserKeys(v):new i.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let w=C.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==w)throw Error(`Claimable UTXO key mismatch`);let T=m.getRecipientInfo(),E=o.Utxo.createFrom(g,{nullifyingKey:w}),D=new o.Utxo({amount:0n,erc20TokenAddress:E.erc20TokenAddress,mintAddress:E.mintAddress,nullifyingKey:w,...E.isNewStyle?{spendingPublicKey:C.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),O=_??await d.getFeeStructure(y,x,[x],s.ExternalActionId.Transact);if(!n.caseInsensitiveEqual(O.feeToken,x))throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let k=O.variableRate>0n?O.variableRate:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(E.amount<=O.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let A=E.amount-O.flatFee,j=A*k/10000n,M=A-j;if(M<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let N={feeToken:O.feeToken,flatFee:O.flatFee+j,variableRate:0n},P=[-E.amount],F=await m.getRandomRelay(y,!0);if(!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let I={externalActionId:0n,externalAddress:F??S,externalActionMetadata:`0x00`},L=[[E,D]],R=[],z=a.getCurrentTimeInSeconds().toString(),{outputUtxos:B}=await u.outputUtxoProcessing(C,L[0],P[0],z,!0,T,M);R.push(B);let{zkCallData:V,circomData:H,dimData:U,commitmentValidationData:W}=await f.constructZkProof(m.merkleTreeHinkalByChain[y],L,R,C,I.externalActionId,I.externalAddress,I.externalActionMetadata,m.generateProofRemotely,N,F,y);return p.transactCallRelayer(y,V,U,H,W,void 0,void 0,void 0,await c.reorderZkCallData(b,V,U,H))};exports.hinkalClaimUtxo=m;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/time.utils.cjs`),s=require(`../utxo/Utxo.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);var m=async(m,h,g,_,v)=>{let y=l.validateAndGetChainId([h]),b=e.isTronLike(y),x=h.erc20TokenAddress,S=c.addressToHexFormat(await m.getEthereumAddressByChain(y));if(!n.caseInsensitiveEqual(x,g.erc20TokenAddress))throw Error(`Off-chain UTXO token mismatch`);let C=v?new i.UserKeys(v):new i.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let w=C.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==w)throw Error(`Claimable UTXO key mismatch`);let T=m.getRecipientInfo(),E=s.Utxo.createFrom(g,{nullifyingKey:w}),D=new s.Utxo({amount:0n,erc20TokenAddress:E.erc20TokenAddress,mintAddress:E.mintAddress,nullifyingKey:w,...E.isNewStyle?{spendingPublicKey:C.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),O=_??await d.getFeeStructure(y,x,[x],a.ExternalActionId.Transact);if(!n.caseInsensitiveEqual(O.feeToken,x))throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let k=O.variableRate>0n?O.variableRate:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(E.amount<=O.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let A=E.amount-O.flatFee,j=A*k/10000n,M=A-j;if(M<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let N={feeToken:O.feeToken,flatFee:O.flatFee+j,variableRate:0n},P=[-E.amount],F=await m.getRandomRelay(y,!0);if(!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let I={externalActionId:0n,externalAddress:F??S,externalActionMetadata:`0x00`},L=[[E,D]],R=[],z=o.getCurrentTimeInSeconds().toString(),{outputUtxos:B}=await u.outputUtxoProcessing(C,L[0],P[0],z,!0,T,M);R.push(B);let{zkCallData:V,circomData:H,dimData:U,commitmentValidationData:W}=await f.constructZkProof(m.merkleTreeHinkalByChain[y],L,R,C,I.externalActionId,I.externalAddress,I.externalActionMetadata,m.generateProofRemotely,N,F,y);return p.transactCallRelayer(y,V,U,H,W,void 0,void 0,void 0,await c.reorderZkCallData(b,V,U,H))};exports.hinkalClaimUtxo=m;
@@ -3,9 +3,9 @@ import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as t } from "../../constants/protocol
3
3
  import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
4
4
  import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.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";
6
+ import { ExternalActionId as a } from "../../types/external-action.types.mjs";
7
+ import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
8
+ import { Utxo as s } from "../utxo/Utxo.mjs";
9
9
  import { addressToHexFormat as c, reorderZkCallData as l } from "../../functions/utils/tron.utils.mjs";
10
10
  import { validateAndGetChainId as u } from "../../functions/utils/token-check.utils.mjs";
11
11
  import { outputUtxoProcessing as d } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
@@ -20,7 +20,7 @@ var h = async (h, g, _, v, y) => {
20
20
  if (!_.nullifyingKey && !y) throw Error("Claimable UTXO nullifyingKey is missing");
21
21
  let T = w.getShieldedPrivateKey();
22
22
  if (_.nullifyingKey && _.nullifyingKey !== T) throw Error("Claimable UTXO key mismatch");
23
- let E = h.getRecipientInfo(), D = o.createFrom(_, { nullifyingKey: T }), O = new o({
23
+ let E = h.getRecipientInfo(), D = s.createFrom(_, { nullifyingKey: T }), O = new s({
24
24
  amount: 0n,
25
25
  erc20TokenAddress: D.erc20TokenAddress,
26
26
  mintAddress: D.mintAddress,
@@ -29,7 +29,7 @@ var h = async (h, g, _, v, y) => {
29
29
  spendingPublicKey: w.getSpendingKeyPair().pubSpendingBJJPoint,
30
30
  isNewStyle: !0
31
31
  } : { isNewStyle: !1 }
32
- }), k = v ?? await f(b, S, [S], s.Transact);
32
+ }), k = v ?? await f(b, S, [S], a.Transact);
33
33
  if (!n(k.feeToken, S)) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
34
34
  let A = k.variableRate > 0n ? k.variableRate : t;
35
35
  if (D.amount <= k.flatFee) throw Error(r.INSUFFICIENT_FUNDS_TO_TRANSACT);
@@ -45,7 +45,7 @@ var h = async (h, g, _, v, y) => {
45
45
  externalActionId: 0n,
46
46
  externalAddress: I ?? C,
47
47
  externalActionMetadata: "0x00"
48
- }, R = [[D, O]], z = [], B = a().toString(), { outputUtxos: V } = await d(w, R[0], F[0], B, !0, E, N);
48
+ }, R = [[D, O]], z = [], B = o().toString(), { outputUtxos: V } = await d(w, R[0], F[0], B, !0, E, N);
49
49
  z.push(V);
50
50
  let { zkCallData: H, circomData: U, dimData: W, commitmentValidationData: G } = await p(h.merkleTreeHinkalByChain[b], R, z, w, L.externalActionId, L.externalAddress, L.externalActionMetadata, h.generateProofRemotely, P, I, b);
51
51
  return m(b, H, W, U, G, void 0, void 0, void 0, await l(x, H, W, U));
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),h=require(`../../constants/addresses.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),b=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),x=require(`../../API/deposit-and-withdraw-status-calls.cjs`),S=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var C=async(c,u,d,p,m,g,S,C,w,T,E)=>{if(p.length===0)throw Error(`No recipients to bridge`);let D=d.erc20TokenAddress,{contractData:O}=e.networkRegistry[u],{emporiumAddress:k}=O;if(!k)throw Error(`No Emporium Address`);let A=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][u];if(!A)throw Error(`LIFI not configured for chain ${u}`);let j=await c.getRandomRelay(u);if(!j)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=await c.getEthereumAddressByChain(u),N=i.getCurrentTimeInSeconds().toString(),P=c.generateProofRemotely?5:1,F=[];for(let e=0;e<p.length;e+=P){let r=p.slice(e,e+P),i=await Promise.all(r.map(async({utxo:e,nativeUtxo:r,bridgeAmount:i,quote:s,temporarySubAccount:p,recipientAddress:h})=>{await l.API.addTemporaryWalletNonce(u,g,p.index);let b=s.nativeFee>0n&&!n.caseInsensitiveEqual(D,t.zeroAddress),x=[D],S=[-e.amount],C=[!1],w=new a.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...e.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),E=[[e,w]],O=[[w]];if(b&&r){let e=new a.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...r.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}});x.push(t.zeroAddress),S.push(-r.amount),C.push(!1),E.push([r,e]),O.push([e])}let P=v.createLifiBridgeOps(c,u,p.ethAddress,A,D,e.amount,i,s),F=await _.calculateModifiedFeeStructure(u,d,i,m),I=f.constructAdminData(T,u,x,[-e.amount],M),[{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B},V]=await Promise.all([y.constructZkProof(c.merkleTreeHinkalByChain[u],E,O,c.userKeys,o.ExternalActionId.Emporium,k,P,c.generateProofRemotely,F,j??t.zeroAddress,u,C,void 0,void 0,p.privateKey),v.getAuthorizationDataIfNeeded(u,p.privateKey)]);return{zkCallData:L,dimData:z,circomData:R,commitmentValidationData:B,authorizationData:V,recipientAddress:h,adminData:I}}));F.push(...i)}await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let I=await b.transactCallRelayerBatch(u,F,g,C,w,E);return await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:I}),I},w=async(e,r,i,a,s,l,f,_,y=!0)=>{let b=r.erc20TokenAddress,x=u.validateAndGetChainId([r]),w=_?c.hashString(_):void 0,T=c.hashEthereumAddress(await e.getEthereumAddressByChain(x)),E=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][x];if(!E)throw Error(`LIFI router not configured`);let D;if(s)D=s;else{let n=i[0],r=v.createLifiBridgeOps(e,x,n.temporarySubAccount.ethAddress,E,b,n.bridgeAmount,n.bridgeAmount,n.quote).map(e=>g.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,x));D=await p.getFeeStructure(x,b,[b],o.ExternalActionId.Emporium,r,t.PAY_SEND_VARIABLE_RATE)}let O={feeToken:D.feeToken,flatFee:0n,variableRate:0n},k=i.reduce((e,t)=>e+t.quote.nativeFee,0n)>0n&&!n.caseInsensitiveEqual(b,t.zeroAddress),A=i.map(e=>e.bridgeAmount),j=i.map(e=>e.recipientAddress),{userDepositedUtxos:M,statusId:N,depositTxHash:P}=await S.hinkalDepositOnChainUtxos(e,x,r,A,j,D,T,y),F=[];if(k){let n=await d.getErc20TokenFromAPI(x,t.zeroAddress);if(!n)throw Error(`No native token`);let{userDepositedUtxos:r}=await S.hinkalDepositOnChainUtxos(e,x,n,i.map(e=>e.quote.nativeFee),j,O,T,y);F=r}return await m.waitForDepositedUtxosInMerkleTree(e,x,[...M,...F]),{depositTxHash:P,scheduleId:await C(e,x,r,i.map((e,t)=>({...e,utxo:M[t].utxo,nativeUtxo:k?F[t]?.utxo:void 0})),D,T,N,a,l,f,w)}};exports.hinkalDepositAndBridge=w;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),h=require(`../../constants/addresses.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),b=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),x=require(`../../API/deposit-and-withdraw-status-calls.cjs`),S=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var C=async(c,u,d,p,m,g,S,C,w,T,E)=>{if(p.length===0)throw Error(`No recipients to bridge`);let D=d.erc20TokenAddress,{contractData:O}=e.networkRegistry[u],{emporiumAddress:k}=O;if(!k)throw Error(`No Emporium Address`);let A=h.SWAP_ROUTER_ADDRESSES[i.ExternalActionId.Lifi][u];if(!A)throw Error(`LIFI not configured for chain ${u}`);let j=await c.getRandomRelay(u);if(!j)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=await c.getEthereumAddressByChain(u),N=a.getCurrentTimeInSeconds().toString(),P=c.generateProofRemotely?5:1,F=[];for(let e=0;e<p.length;e+=P){let r=p.slice(e,e+P),a=await Promise.all(r.map(async({utxo:e,nativeUtxo:r,bridgeAmount:a,quote:s,temporarySubAccount:p,recipientAddress:h})=>{await l.API.addTemporaryWalletNonce(u,g,p.index);let b=s.nativeFee>0n&&!n.caseInsensitiveEqual(D,t.zeroAddress),x=[D],S=[-e.amount],C=[!1],w=new o.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...e.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),E=[[e,w]],O=[[w]];if(b&&r){let e=new o.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...r.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}});x.push(t.zeroAddress),S.push(-r.amount),C.push(!1),E.push([r,e]),O.push([e])}let P=v.createLifiBridgeOps(c,u,p.ethAddress,A,D,e.amount,a,s),F=await _.calculateModifiedFeeStructure(u,d,a,m),I=f.constructAdminData(T,u,x,[-e.amount],M),[{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B},V]=await Promise.all([y.constructZkProof(c.merkleTreeHinkalByChain[u],E,O,c.userKeys,i.ExternalActionId.Emporium,k,P,c.generateProofRemotely,F,j??t.zeroAddress,u,C,void 0,void 0,p.privateKey),v.getAuthorizationDataIfNeeded(u,p.privateKey)]);return{zkCallData:L,dimData:z,circomData:R,commitmentValidationData:B,authorizationData:V,recipientAddress:h,adminData:I}}));F.push(...a)}await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let I=await b.transactCallRelayerBatch(u,F,g,C,w,E);return await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:I}),I},w=async(e,r,a,o,s,l,f,_,y=!0)=>{let b=r.erc20TokenAddress,x=u.validateAndGetChainId([r]),w=_?c.hashString(_):void 0,T=c.hashEthereumAddress(await e.getEthereumAddressByChain(x)),E=h.SWAP_ROUTER_ADDRESSES[i.ExternalActionId.Lifi][x];if(!E)throw Error(`LIFI router not configured`);let D;if(s)D=s;else{let n=a[0],r=v.createLifiBridgeOps(e,x,n.temporarySubAccount.ethAddress,E,b,n.bridgeAmount,n.bridgeAmount,n.quote).map(e=>g.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,x));D=await p.getFeeStructure(x,b,[b],i.ExternalActionId.Emporium,r,t.PAY_SEND_VARIABLE_RATE)}let O={feeToken:D.feeToken,flatFee:0n,variableRate:0n},k=a.reduce((e,t)=>e+t.quote.nativeFee,0n)>0n&&!n.caseInsensitiveEqual(b,t.zeroAddress),A=a.map(e=>e.bridgeAmount),j=a.map(e=>e.recipientAddress),{userDepositedUtxos:M,statusId:N,depositTxHash:P}=await S.hinkalDepositOnChainUtxos(e,x,r,A,j,D,T,y),F=[];if(k){let n=await d.getErc20TokenFromAPI(x,t.zeroAddress);if(!n)throw Error(`No native token`);let{userDepositedUtxos:r}=await S.hinkalDepositOnChainUtxos(e,x,n,a.map(e=>e.quote.nativeFee),j,O,T,y);F=r}return await m.waitForDepositedUtxosInMerkleTree(e,x,[...M,...F]),{depositTxHash:P,scheduleId:await C(e,x,r,a.map((e,t)=>({...e,utxo:M[t].utxo,nativeUtxo:k?F[t]?.utxo:void 0})),D,T,N,o,l,f,w)}};exports.hinkalDepositAndBridge=w;
@@ -2,9 +2,9 @@ import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
2
  import { PAY_SEND_VARIABLE_RATE as t, zeroAddress as n } from "../../constants/protocol.constants.mjs";
3
3
  import { caseInsensitiveEqual as r } from "../../functions/utils/caseInsensitive.utils.mjs";
4
4
  import { transactionErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
5
- import { getCurrentTimeInSeconds as a } from "../../functions/utils/time.utils.mjs";
6
- import { Utxo as o } from "../utxo/Utxo.mjs";
7
- import { ExternalActionId as s } from "../../types/external-action.types.mjs";
5
+ import { ExternalActionId as a } from "../../types/external-action.types.mjs";
6
+ import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
7
+ import { Utxo as s } from "../utxo/Utxo.mjs";
8
8
  import { DepositAndWithdrawPhase as c } from "../../types/scheduled-transactions.types.mjs";
9
9
  import "../../types/index.mjs";
10
10
  import { hashEthereumAddress as l, hashString as u } from "../../functions/utils/addresses.mjs";
@@ -29,15 +29,15 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
29
29
  if (f.length === 0) throw Error("No recipients to bridge");
30
30
  let O = u.erc20TokenAddress, { contractData: k } = e[l], { emporiumAddress: A } = k;
31
31
  if (!A) throw Error("No Emporium Address");
32
- let j = _[s.Lifi][l];
32
+ let j = _[a.Lifi][l];
33
33
  if (!j) throw Error(`LIFI not configured for chain ${l}`);
34
34
  let M = await t.getRandomRelay(l);
35
35
  if (!M) throw Error(i.RELAYER_NOT_AVAILABLE);
36
- let N = await t.getEthereumAddressByChain(l), P = a().toString(), F = t.generateProofRemotely ? 5 : 1, I = [];
36
+ let N = await t.getEthereumAddressByChain(l), P = o().toString(), F = t.generateProofRemotely ? 5 : 1, I = [];
37
37
  for (let e = 0; e < f.length; e += F) {
38
- let i = f.slice(e, e + F), a = await Promise.all(i.map(async ({ utxo: e, nativeUtxo: i, bridgeAmount: a, quote: c, temporarySubAccount: f, recipientAddress: g }) => {
38
+ let i = f.slice(e, e + F), o = await Promise.all(i.map(async ({ utxo: e, nativeUtxo: i, bridgeAmount: o, quote: c, temporarySubAccount: f, recipientAddress: g }) => {
39
39
  await d.addTemporaryWalletNonce(l, h, f.index);
40
- let _ = c.nativeFee > 0n && !r(O, n), v = [O], C = [-e.amount], w = [!1], T = new o({
40
+ let _ = c.nativeFee > 0n && !r(O, n), v = [O], C = [-e.amount], w = [!1], T = new s({
41
41
  amount: 0n,
42
42
  erc20TokenAddress: O,
43
43
  nullifyingKey: t.userKeys.getShieldedPrivateKey(),
@@ -48,7 +48,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
48
48
  } : { isNewStyle: !1 }
49
49
  }), D = [[e, T]], k = [[T]];
50
50
  if (_ && i) {
51
- let e = new o({
51
+ let e = new s({
52
52
  amount: 0n,
53
53
  erc20TokenAddress: n,
54
54
  nullifyingKey: t.userKeys.getShieldedPrivateKey(),
@@ -60,7 +60,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
60
60
  });
61
61
  v.push(n), C.push(-i.amount), w.push(!1), D.push([i, e]), k.push([e]);
62
62
  }
63
- let F = b(t, l, f.ethAddress, j, O, e.amount, a, c), I = await y(l, u, a, p), L = m(E, l, v, [-e.amount], N), [{ zkCallData: R, circomData: z, dimData: B, commitmentValidationData: V }, H] = await Promise.all([S(t.merkleTreeHinkalByChain[l], D, k, t.userKeys, s.Emporium, A, F, t.generateProofRemotely, I, M ?? n, l, w, void 0, void 0, f.privateKey), x(l, f.privateKey)]);
63
+ let F = b(t, l, f.ethAddress, j, O, e.amount, o, c), I = await y(l, u, o, p), L = m(E, l, v, [-e.amount], N), [{ zkCallData: R, circomData: z, dimData: B, commitmentValidationData: V }, H] = await Promise.all([S(t.merkleTreeHinkalByChain[l], D, k, t.userKeys, a.Emporium, A, F, t.generateProofRemotely, I, M ?? n, l, w, void 0, void 0, f.privateKey), x(l, f.privateKey)]);
64
64
  return {
65
65
  zkCallData: R,
66
66
  dimData: B,
@@ -71,7 +71,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
71
71
  adminData: L
72
72
  };
73
73
  }));
74
- I.push(...a);
74
+ I.push(...o);
75
75
  }
76
76
  await w({
77
77
  id: g,
@@ -87,33 +87,33 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
87
87
  phase: c.AFTER_SCHEDULE_WITHDRAW,
88
88
  scheduleId: L
89
89
  }), L;
90
- }, D = async (e, i, a, o, c, d, m, y, x = !0) => {
91
- let S = i.erc20TokenAddress, C = f([i]), w = y ? u(y) : void 0, D = l(await e.getEthereumAddressByChain(C)), O = _[s.Lifi][C];
90
+ }, D = async (e, i, o, s, c, d, m, y, x = !0) => {
91
+ let S = i.erc20TokenAddress, C = f([i]), w = y ? u(y) : void 0, D = l(await e.getEthereumAddressByChain(C)), O = _[a.Lifi][C];
92
92
  if (!O) throw Error("LIFI router not configured");
93
93
  let k;
94
94
  if (c) k = c;
95
95
  else {
96
- let n = a[0], r = b(e, C, n.temporarySubAccount.ethAddress, O, S, n.bridgeAmount, n.bridgeAmount, n.quote).map((e) => v(e, n.temporarySubAccount.ethAddress, C));
97
- k = await h(C, S, [S], s.Emporium, r, t);
96
+ let n = o[0], r = b(e, C, n.temporarySubAccount.ethAddress, O, S, n.bridgeAmount, n.bridgeAmount, n.quote).map((e) => v(e, n.temporarySubAccount.ethAddress, C));
97
+ k = await h(C, S, [S], a.Emporium, r, t);
98
98
  }
99
99
  let A = {
100
100
  feeToken: k.feeToken,
101
101
  flatFee: 0n,
102
102
  variableRate: 0n
103
- }, j = a.reduce((e, t) => e + t.quote.nativeFee, 0n) > 0n && !r(S, n), M = a.map((e) => e.bridgeAmount), N = a.map((e) => e.recipientAddress), { userDepositedUtxos: P, statusId: F, depositTxHash: I } = await T(e, C, i, M, N, k, D, x), L = [];
103
+ }, j = o.reduce((e, t) => e + t.quote.nativeFee, 0n) > 0n && !r(S, n), M = o.map((e) => e.bridgeAmount), N = o.map((e) => e.recipientAddress), { userDepositedUtxos: P, statusId: F, depositTxHash: I } = await T(e, C, i, M, N, k, D, x), L = [];
104
104
  if (j) {
105
105
  let t = await p(C, n);
106
106
  if (!t) throw Error("No native token");
107
- let { userDepositedUtxos: r } = await T(e, C, t, a.map((e) => e.quote.nativeFee), N, A, D, x);
107
+ let { userDepositedUtxos: r } = await T(e, C, t, o.map((e) => e.quote.nativeFee), N, A, D, x);
108
108
  L = r;
109
109
  }
110
110
  return await g(e, C, [...P, ...L]), {
111
111
  depositTxHash: I,
112
- scheduleId: await E(e, C, i, a.map((e, t) => ({
112
+ scheduleId: await E(e, C, i, o.map((e, t) => ({
113
113
  ...e,
114
114
  utxo: P[t].utxo,
115
115
  nativeUtxo: j ? L[t]?.utxo : void 0
116
- })), k, D, F, o, d, m, w)
116
+ })), k, D, F, s, d, m, w)
117
117
  };
118
118
  };
119
119
  //#endregion
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(o,c,u,f,p,v,y,b,x,S,C,w)=>{let T=e.isTronLike(c);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([o.getRandomRelay(c),o.getEthereumAddressByChain(c)]);if(!D)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=i.getCurrentTimeInSeconds().toString(),A=o.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let e=0;e<f.length;e+=A){let r=f.slice(e,e+A),i=await Promise.all(r.map(async({recipientAddress:r,utxo:i},s)=>{let f=e+s,g=l.addressToHexFormat(r),_=new a.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:o.userKeys.getShieldedPrivateKey(),timeStamp:k,...i.isNewStyle?{spendingPublicKey:o.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[n.caseInsensitiveEqual(i.erc20TokenAddress,E)?i:a.Utxo.createFrom(i,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,c,[E],[-i.amount],M),w=await m.calculateModifiedFeeStructure(c,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(o.merkleTreeHinkalByChain[c],y,b,o.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,o.generateProofRemotely,w,D??t.zeroAddress,c);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...i)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(c,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(e,t,n,r,i,a,s,d,m,h=!0)=>{let g=u.validateAndGetChainId([t]),_=m?c.hashString(m):void 0,b=t.erc20TokenAddress,x=c.hashEthereumAddress(l.addressToHexFormat(await e.getEthereumAddressByChain(g))),S=a??await f.getFeeStructure(g,b,[b],o.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(e,g,t,n,r,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(e,g,C),{depositTxHash:T,scheduleId:await y(e,g,t,C,n,S,x,w,i,s,d,_)}};exports.hinkalDepositAndWithdraw=b;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(i,c,u,f,p,v,y,b,x,S,C,w)=>{let T=e.isTronLike(c);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([i.getRandomRelay(c),i.getEthereumAddressByChain(c)]);if(!D)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=a.getCurrentTimeInSeconds().toString(),A=i.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let e=0;e<f.length;e+=A){let r=f.slice(e,e+A),a=await Promise.all(r.map(async({recipientAddress:r,utxo:a},s)=>{let f=e+s,g=l.addressToHexFormat(r),_=new o.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:i.userKeys.getShieldedPrivateKey(),timeStamp:k,...a.isNewStyle?{spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[n.caseInsensitiveEqual(a.erc20TokenAddress,E)?a:o.Utxo.createFrom(a,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,c,[E],[-a.amount],M),w=await m.calculateModifiedFeeStructure(c,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(i.merkleTreeHinkalByChain[c],y,b,i.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,i.generateProofRemotely,w,D??t.zeroAddress,c);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...a)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(c,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(e,t,n,r,a,o,s,d,m,h=!0)=>{let g=u.validateAndGetChainId([t]),_=m?c.hashString(m):void 0,b=t.erc20TokenAddress,x=c.hashEthereumAddress(l.addressToHexFormat(await e.getEthereumAddressByChain(g))),S=o??await f.getFeeStructure(g,b,[b],i.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(e,g,t,n,r,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(e,g,C),{depositTxHash:T,scheduleId:await y(e,g,t,C,n,S,x,w,a,s,d,_)}};exports.hinkalDepositAndWithdraw=b;
@@ -2,9 +2,9 @@ import { isTronLike as e } from "../../constants/chains.constants.mjs";
2
2
  import { zeroAddress as t } from "../../constants/protocol.constants.mjs";
3
3
  import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
4
4
  import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
5
- import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
6
- import { Utxo as a } from "../utxo/Utxo.mjs";
7
- import { ExternalActionId as o } from "../../types/external-action.types.mjs";
5
+ import { ExternalActionId as i } from "../../types/external-action.types.mjs";
6
+ import { getCurrentTimeInSeconds as a } from "../../functions/utils/time.utils.mjs";
7
+ import { Utxo as o } from "../utxo/Utxo.mjs";
8
8
  import { DepositAndWithdrawPhase as s } from "../../types/scheduled-transactions.types.mjs";
9
9
  import "../../types/index.mjs";
10
10
  import { hashEthereumAddress as c, hashString as l } from "../../functions/utils/addresses.mjs";
@@ -20,28 +20,28 @@ import { safeUpdateDepositAndWithdrawStatus as y } from "../../API/deposit-and-w
20
20
  import { hinkalDepositOnChainUtxos as b } from "./hinkalDepositOnChainUtxos.mjs";
21
21
  import "../../functions/index.mjs";
22
22
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.ts
23
- var x = async (o, c, l, f, m, h, b, x, S, C, w, T) => {
23
+ var x = async (i, c, l, f, m, h, b, x, S, C, w, T) => {
24
24
  let E = e(c);
25
25
  if (f.length === 0) throw Error("userDepositedUtxos must not be empty");
26
- let D = l.erc20TokenAddress, [O, k] = await Promise.all([o.getRandomRelay(c), o.getEthereumAddressByChain(c)]);
26
+ let D = l.erc20TokenAddress, [O, k] = await Promise.all([i.getRandomRelay(c), i.getEthereumAddressByChain(c)]);
27
27
  if (!O) throw Error(r.RELAYER_NOT_AVAILABLE);
28
- let A = i().toString(), j = o.generateProofRemotely && !E ? 5 : 1, M = [], N = u(k);
28
+ let A = a().toString(), j = i.generateProofRemotely && !E ? 5 : 1, M = [], N = u(k);
29
29
  for (let e = 0; e < f.length; e += j) {
30
- let r = f.slice(e, e + j), i = await Promise.all(r.map(async ({ recipientAddress: r, utxo: i }, s) => {
31
- let f = e + s, v = u(r), y = new a({
30
+ let r = f.slice(e, e + j), a = await Promise.all(r.map(async ({ recipientAddress: r, utxo: a }, s) => {
31
+ let f = e + s, v = u(r), y = new o({
32
32
  amount: 0n,
33
33
  erc20TokenAddress: D,
34
- nullifyingKey: o.userKeys.getShieldedPrivateKey(),
34
+ nullifyingKey: i.userKeys.getShieldedPrivateKey(),
35
35
  timeStamp: A,
36
- ...i.isNewStyle ? {
37
- spendingPublicKey: o.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
36
+ ...a.isNewStyle ? {
37
+ spendingPublicKey: i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,
38
38
  isNewStyle: !0
39
39
  } : { isNewStyle: !1 }
40
- }), b = [[n(i.erc20TokenAddress, D) ? i : a.createFrom(i, { erc20TokenAddress: D }), y]], x = [[y]], S = {
40
+ }), b = [[n(a.erc20TokenAddress, D) ? a : o.createFrom(a, { erc20TokenAddress: D }), y]], x = [[y]], S = {
41
41
  externalActionId: 0n,
42
42
  externalAddress: v,
43
43
  externalActionMetadata: "0x00"
44
- }, C = p(w, c, [D], [-i.amount], N), T = await g(c, l, m[f], h), { zkCallData: k, circomData: j, dimData: M, commitmentValidationData: P } = await _(o.merkleTreeHinkalByChain[c], b, x, o.userKeys, S.externalActionId, S.externalAddress, S.externalActionMetadata, o.generateProofRemotely, T, O ?? t, c);
44
+ }, C = p(w, c, [D], [-a.amount], N), T = await g(c, l, m[f], h), { zkCallData: k, circomData: j, dimData: M, commitmentValidationData: P } = await _(i.merkleTreeHinkalByChain[c], b, x, i.userKeys, S.externalActionId, S.externalAddress, S.externalActionMetadata, i.generateProofRemotely, T, O ?? t, c);
45
45
  return {
46
46
  zkCallData: k,
47
47
  dimData: M,
@@ -52,7 +52,7 @@ var x = async (o, c, l, f, m, h, b, x, S, C, w, T) => {
52
52
  tronProofSignature: await d(E, k, M, j)
53
53
  };
54
54
  }));
55
- M.push(...i);
55
+ M.push(...a);
56
56
  }
57
57
  await y({
58
58
  id: x,
@@ -68,11 +68,11 @@ var x = async (o, c, l, f, m, h, b, x, S, C, w, T) => {
68
68
  phase: s.AFTER_SCHEDULE_WITHDRAW,
69
69
  scheduleId: P
70
70
  }), P;
71
- }, S = async (e, t, n, r, i, a, s, d, p, g = !0) => {
72
- let _ = f([t]), v = p ? l(p) : void 0, y = t.erc20TokenAddress, S = c(u(await e.getEthereumAddressByChain(_))), C = a ?? await m(_, y, [y], o.Transact, [], 10n), { userDepositedUtxos: w, statusId: T, depositTxHash: E } = await b(e, _, t, n, r, C, S, g);
71
+ }, S = async (e, t, n, r, a, o, s, d, p, g = !0) => {
72
+ let _ = f([t]), v = p ? l(p) : void 0, y = t.erc20TokenAddress, S = c(u(await e.getEthereumAddressByChain(_))), C = o ?? await m(_, y, [y], i.Transact, [], 10n), { userDepositedUtxos: w, statusId: T, depositTxHash: E } = await b(e, _, t, n, r, C, S, g);
73
73
  return await h(e, _, w), {
74
74
  depositTxHash: E,
75
- scheduleId: await x(e, _, t, w, n, C, S, T, i, s, d, v)
75
+ scheduleId: await x(e, _, t, w, n, C, S, T, a, s, d, v)
76
76
  };
77
77
  };
78
78
  //#endregion
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/utils/time.utils.cjs`),i=require(`../../types/external-action.types.cjs`),a=require(`../../types/admin.types.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`);require(`../../error-handling/index.cjs`);const l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/recipientUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/involves-permit2-op.cjs`),m=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),h=require(`../../functions/private-wallet/emporium.helpers.cjs`),g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),b=require(`./handleAutoDepositBack.cjs`);var x=async(e,t,n,i,a)=>{let o=[...await s.addPaddingToUtxos(e,t,n,i)],l=[],u=r.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=await c.outputUtxoProcessing(e.userKeys,o[t],i[t],u);l.push(n)}return a&&d.recipientUtxoProcessing(a,l,i,u),{inputUtxosArray:o,outputUtxosArray:l}},S=async(r,s,c,d,S,C,w,T,E,D,O,k=!1,A,j,M)=>{if(M&&!o.isValidPrivateAddress(M.recipientInfo))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(w.length>0&&!T)throw Error(`Subaccount is required for private wallet transactions`);let N=c.map(e=>e.erc20TokenAddress),P=await r.getEthereumAddressByChain(s),F=T?u.AccountActions.getAddressFromSubAccount(s,T):void 0,{contractData:I}=e.networkRegistry[s],{emporiumAddress:L}=I;if(!L)throw Error(`No Emporium Address Provided`);let R=D??await f.getFeeStructure(s,E,N,i.ExternalActionId.Emporium,C.map(e=>m.convertEmporiumOpToCallInfo(e,F??``,s)));for(F?await y.mergeWithFeeStructureEmporium(r,s,F,C,N,d,R,w.find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,R.feeToken))?.amount??0n):await v.mergeWithFeeStructure(s,N,d,R);S.length<N.length;)S.push(!1);let[{inputUtxosArray:z,outputUtxosArray:B},V]=await Promise.all([x(r,s,N,d,M),O??await r.getRandomRelay(s,!0)]);if(!V)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=T?u.AccountActions.getPrivateKeyFromSubAccount(s,T):void 0,[{zkCallData:U,circomData:W,dimData:G,commitmentValidationData:K},q]=await Promise.all([g.constructZkProof(r.merkleTreeHinkalByChain[s],z,B,r.userKeys,i.ExternalActionId.Emporium,L,C,r.generateProofRemotely,R,V,s,S,void 0,void 0,H),h.getAuthorizationDataIfNeeded(s,H)]),J=await _.transactCallRelayer(s,U,G,W,K,p.uniswapWorkaround(C),q,l.constructAdminData(j,s,w.map(e=>e.token.erc20TokenAddress),w.map(e=>e.amount),P,j===a.AdminTransactionType.PublicSwap?w.map(({token:e})=>e):void 0));return k&&T&&b.handleAutoDepositBack(r,s,F,T,R.feeToken,A,w,W),J};exports.hinkalPrivateWallet=S;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/admin.types.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`);require(`../../error-handling/index.cjs`);const l=require(`../../functions/pre-transaction/constructAdminData.cjs`),u=require(`../AccountActions/AccountActions.cjs`),d=require(`../../functions/pre-transaction/recipientUtxoProcessing.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/involves-permit2-op.cjs`),m=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),h=require(`../../functions/private-wallet/emporium.helpers.cjs`),g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure-emporium.cjs`),b=require(`./handleAutoDepositBack.cjs`);var x=async(e,t,n,r,a)=>{let o=[...await s.addPaddingToUtxos(e,t,n,r)],l=[],u=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=await c.outputUtxoProcessing(e.userKeys,o[t],r[t],u);l.push(n)}return a&&d.recipientUtxoProcessing(a,l,r,u),{inputUtxosArray:o,outputUtxosArray:l}},S=async(i,s,c,d,S,C,w,T,E,D,O,k=!1,A,j,M)=>{if(M&&!o.isValidPrivateAddress(M.recipientInfo))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);if(w.length>0&&!T)throw Error(`Subaccount is required for private wallet transactions`);let N=c.map(e=>e.erc20TokenAddress),P=await i.getEthereumAddressByChain(s),F=T?u.AccountActions.getAddressFromSubAccount(s,T):void 0,{contractData:I}=e.networkRegistry[s],{emporiumAddress:L}=I;if(!L)throw Error(`No Emporium Address Provided`);let R=D??await f.getFeeStructure(s,E,N,r.ExternalActionId.Emporium,C.map(e=>m.convertEmporiumOpToCallInfo(e,F??``,s)));for(F?await y.mergeWithFeeStructureEmporium(i,s,F,C,N,d,R,w.find(e=>t.caseInsensitiveEqual(e.token.erc20TokenAddress,R.feeToken))?.amount??0n):await v.mergeWithFeeStructure(s,N,d,R);S.length<N.length;)S.push(!1);let[{inputUtxosArray:z,outputUtxosArray:B},V]=await Promise.all([x(i,s,N,d,M),O??await i.getRandomRelay(s,!0)]);if(!V)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=T?u.AccountActions.getPrivateKeyFromSubAccount(s,T):void 0,[{zkCallData:U,circomData:W,dimData:G,commitmentValidationData:K},q]=await Promise.all([g.constructZkProof(i.merkleTreeHinkalByChain[s],z,B,i.userKeys,r.ExternalActionId.Emporium,L,C,i.generateProofRemotely,R,V,s,S,void 0,void 0,H),h.getAuthorizationDataIfNeeded(s,H)]),J=await _.transactCallRelayer(s,U,G,W,K,p.uniswapWorkaround(C),q,l.constructAdminData(j,s,w.map(e=>e.token.erc20TokenAddress),w.map(e=>e.amount),P,j===a.AdminTransactionType.PublicSwap?w.map(({token:e})=>e):void 0));return k&&T&&b.handleAutoDepositBack(i,s,F,T,R.feeToken,A,w,W),J};exports.hinkalPrivateWallet=S;
@@ -1,8 +1,8 @@
1
1
  import { networkRegistry as e } from "../../constants/chains.constants.mjs";
2
2
  import { caseInsensitiveEqual as t } from "../../functions/utils/caseInsensitive.utils.mjs";
3
3
  import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
4
- import { getCurrentTimeInSeconds as r } from "../../functions/utils/time.utils.mjs";
5
- import { ExternalActionId as i } from "../../types/external-action.types.mjs";
4
+ import { ExternalActionId as r } from "../../types/external-action.types.mjs";
5
+ import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
6
6
  import { AdminTransactionType as a } from "../../types/admin.types.mjs";
7
7
  import { isValidPrivateAddress as o } from "../../functions/utils/addresses.mjs";
8
8
  import { addPaddingToUtxos as s } from "../../functions/web3/events/getShieldedBalance.mjs";
@@ -22,27 +22,27 @@ import { mergeWithFeeStructure as v } from "../../functions/pre-transaction/merg
22
22
  import { mergeWithFeeStructureEmporium as y } from "../../functions/pre-transaction/merge-with-fee-structure-emporium.mjs";
23
23
  import { handleAutoDepositBack as b } from "./handleAutoDepositBack.mjs";
24
24
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalPrivateWallet.ts
25
- var x = async (e, t, n, i, a) => {
26
- let o = [...await s(e, t, n, i)], l = [], u = r().toString();
25
+ var x = async (e, t, n, r, a) => {
26
+ let o = [...await s(e, t, n, r)], l = [], u = i().toString();
27
27
  for (let t = 0; t < n.length; t += 1) {
28
- let { outputUtxos: n } = await c(e.userKeys, o[t], i[t], u);
28
+ let { outputUtxos: n } = await c(e.userKeys, o[t], r[t], u);
29
29
  l.push(n);
30
30
  }
31
- return a && d(a, l, i, u), {
31
+ return a && d(a, l, r, u), {
32
32
  inputUtxosArray: o,
33
33
  outputUtxosArray: l
34
34
  };
35
- }, S = async (r, s, c, d, S, C, w, T, E, D, O, k = !1, A, j, M) => {
35
+ }, S = async (i, s, c, d, S, C, w, T, E, D, O, k = !1, A, j, M) => {
36
36
  if (M && !o(M.recipientInfo)) throw Error(n.RECIPIENT_FORMAT_INCORRECT);
37
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 r.getEthereumAddressByChain(s), F = T ? u.getAddressFromSubAccount(s, T) : void 0, { contractData: I } = e[s], { emporiumAddress: L } = I;
38
+ let N = c.map((e) => e.erc20TokenAddress), P = await i.getEthereumAddressByChain(s), F = T ? u.getAddressFromSubAccount(s, T) : void 0, { contractData: I } = e[s], { emporiumAddress: L } = I;
39
39
  if (!L) throw Error("No Emporium Address Provided");
40
- let R = D ?? await f(s, E, N, i.Emporium, C.map((e) => m(e, F ?? "", s)));
41
- for (F ? await y(r, s, F, C, N, d, R, w.find((e) => t(e.token.erc20TokenAddress, R.feeToken))?.amount ?? 0n) : await v(s, N, d, R); S.length < N.length;) S.push(!1);
42
- let [{ inputUtxosArray: z, outputUtxosArray: B }, V] = await Promise.all([x(r, s, N, d, M), O ?? await r.getRandomRelay(s, !0)]);
40
+ let R = D ?? await f(s, E, N, r.Emporium, C.map((e) => m(e, F ?? "", s)));
41
+ for (F ? await y(i, s, F, C, N, d, R, w.find((e) => t(e.token.erc20TokenAddress, R.feeToken))?.amount ?? 0n) : await v(s, N, d, R); S.length < N.length;) S.push(!1);
42
+ let [{ inputUtxosArray: z, outputUtxosArray: B }, V] = await Promise.all([x(i, s, N, d, M), O ?? await i.getRandomRelay(s, !0)]);
43
43
  if (!V) throw Error(n.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(r.merkleTreeHinkalByChain[s], z, B, r.userKeys, i.Emporium, L, C, r.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 === a.PublicSwap ? w.map(({ token: e }) => e) : void 0));
45
- return k && T && b(r, s, F, T, R.feeToken, A, w, W), J;
44
+ let H = T ? u.getPrivateKeyFromSubAccount(s, T) : void 0, [{ zkCallData: U, circomData: W, dimData: G, commitmentValidationData: K }, q] = await Promise.all([g(i.merkleTreeHinkalByChain[s], z, B, i.userKeys, r.Emporium, L, C, i.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 === a.PublicSwap ? w.map(({ token: e }) => e) : void 0));
45
+ return k && T && b(i, s, F, T, R.feeToken, A, w, W), J;
46
46
  };
47
47
  //#endregion
48
48
  export { S as hinkalPrivateWallet };
@@ -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`);require(`../../types/index.cjs`);const 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 i.UserKeys(v):new i.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}=e.networkRegistry[y].contractData;if(!C)throw Error(`missing data`);let w=o.Utxo.createFrom(g,{nullifyingKey:S}),T=_??await u.getFeeStructure(y,b,[b],s.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:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(w.amount<=T.flatFee)throw Error(n.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let D=w.amount-T.flatFee,O=D*E/10000n,k=D-O;if(k<=0n)throw Error(n.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=a.getCurrentTimeInSeconds().toString(),I=new o.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),...w.isNewStyle?{spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),L=new o.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),timeStamp:F,spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),R=new o.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(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=i.UserKeys.findCorrectRandomization(r.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,t.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;
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`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/token-check.utils.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=l.validateAndGetChainId([h]),b=h.erc20TokenAddress;if(g.getTokenAddress(y)!==b)throw Error(`Off-chain UTXO token mismatch`);let x=v?new i.UserKeys(v):new i.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}=e.networkRegistry[y].contractData;if(!C)throw Error(`missing data`);let w=c.Utxo.createFrom(g,{nullifyingKey:S}),T=_??await u.getFeeStructure(y,b,[b],a.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:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(w.amount<=T.flatFee)throw Error(n.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let D=w.amount-T.flatFee,O=D*E/10000n,k=D-O;if(k<=0n)throw Error(n.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=s.getCurrentTimeInSeconds().toString(),I=new c.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),...w.isNewStyle?{spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),L=new c.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),timeStamp:F,spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),R=new c.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(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),x.getShieldedPrivateKey()),U={tokenNumber:1,nullifierAmount:z.length,outputAmount:B.length},W=o.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,t.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;