@kapa123456789/sdk 0.0.68 → 0.0.70

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 (76) hide show
  1. package/common/src/constants/vite.constants.cjs +1 -1
  2. package/common/src/constants/vite.constants.mjs +6 -2
  3. package/common/src/crypto/BabyJubRN.cjs +1 -0
  4. package/common/src/crypto/BabyJubRN.d.ts +18 -0
  5. package/common/src/crypto/BabyJubRN.mjs +33 -0
  6. package/common/src/crypto/babyJub.cjs +1 -1
  7. package/common/src/crypto/babyJub.mjs +6 -34
  8. package/common/src/crypto/poseidon.cjs +1 -1
  9. package/common/src/crypto/poseidon.mjs +13 -14
  10. package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
  11. package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +2 -35
  12. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
  13. package/common/src/data-structures/Hinkal/hinkalProoflessDeposit.mjs +10 -10
  14. package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
  15. package/common/src/data-structures/Hinkal/hinkalSwap.mjs +9 -49
  16. package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
  17. package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +12 -59
  18. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  19. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +13 -58
  20. package/common/src/error-handling/logger.cjs +1 -1
  21. package/common/src/error-handling/logger.mjs +15 -7
  22. package/common/src/functions/index.cjs +1 -1
  23. package/common/src/functions/index.mjs +1 -0
  24. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  25. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +48 -161
  26. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  27. package/common/src/functions/snarkjs/generateZkProof.mjs +1 -6
  28. package/common/src/functions/utils/bigint-math.utils.cjs +1 -0
  29. package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
  30. package/common/src/functions/utils/bigint-math.utils.mjs +12 -0
  31. package/common/src/functions/utils/index.cjs +1 -1
  32. package/common/src/functions/utils/index.d.ts +1 -0
  33. package/common/src/functions/utils/index.mjs +1 -0
  34. package/common/src/functions/web3/functionCalls/constructBatchCall.cjs +1 -1
  35. package/common/src/functions/web3/functionCalls/constructBatchCall.mjs +27 -6
  36. package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
  37. package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +42 -145
  38. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  39. package/common/src/providers/WagmiProviderAdapter.mjs +7 -30
  40. package/common/src/webworker/{logError-DlIdq8zv.js → logError-D7JCP4vy.js} +5 -5
  41. package/common/src/webworker/package.json +2 -2
  42. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
  43. package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
  44. package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
  45. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
  46. package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
  47. package/common/src/webworker/utxoWorkerNode.cjs +1 -1
  48. package/common/src/webworker/viteWorkerURL.constant.cjs +4 -4
  49. package/common/src/webworker/viteWorkerURL.constant.mjs +4 -4
  50. package/common/src/webworker/workerFactory.cjs +1 -1
  51. package/common/src/webworker/workerFactory.mjs +1 -1
  52. package/common/src/webworker/{workerProxy-Cr4zT_SW.js → workerProxy-C1ojG-04.js} +1 -1
  53. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
  54. package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
  55. package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
  56. package/package.json +2 -2
  57. package/react-native/HinkalWebViewWorker.cjs +3 -3
  58. package/react-native/HinkalWebViewWorker.mjs +46 -68
  59. package/react-native/bridge/HinkalRNWorker.cjs +1 -0
  60. package/react-native/bridge/HinkalRNWorker.d.ts +13 -0
  61. package/react-native/bridge/HinkalRNWorker.mjs +26 -0
  62. package/react-native/bridge/serialization.utils.cjs +1 -0
  63. package/react-native/bridge/serialization.utils.d.ts +3 -0
  64. package/react-native/bridge/serialization.utils.mjs +13 -0
  65. package/react-native/metro-config.js +4 -8
  66. package/react-native/shims/circomlibjs-hinkal-fork.js +1 -1
  67. package/react-native/shims/crypto.js +23 -16
  68. package/react-native/shims/globals.js +6 -4
  69. package/react-native/shims/idb-keyval.js +13 -5
  70. package/react-native/shims/path.js +20 -7
  71. package/react-native/shims/snarkjs.js +7 -6
  72. package/react-native/workerCDNUrls.cjs +1 -1
  73. package/react-native/workerCDNUrls.mjs +2 -4
  74. package/sdk/package.json.cjs +1 -1
  75. package/sdk/package.json.mjs +2 -2
  76. package/react-native/shims/circomlibjs.js +0 -16
@@ -1 +1 @@
1
- const e=require(`../functions/utils/enum.utils.cjs`);var t=function(e){return e.DEVELOPMENT=`development`,e.PLAYGROUND=`playground`,e.PRODUCTION=`production`,e.STAGING=`staging`,e}({}),n={[t.DEVELOPMENT]:[`localhost`,`192.`,`127.`],[t.PLAYGROUND]:[`playground`],[t.STAGING]:[`working`,`staging`]},r=typeof process<`u`&&process?.release?.name===`node`,i=typeof process<`u`&&process.versions!=null&&process.versions.node!=null,a=typeof window<`u`&&window?.location?.protocol===`chrome-extension:`;function o(e,t){return t.some(t=>e.includes(t))}var s=()=>(require(`dotenv`).config({path:`DOTENV_OVERRIDE`in process.env?process.env.DOTENV_OVERRIDE:void 0}),process.env.DEPLOYMENT_MODE?.startsWith(`production`)?t.PRODUCTION:e.toEnumValue(t,process.env.DEPLOYMENT_MODE)||t.DEVELOPMENT),c=(()=>{if(!r&&typeof window>`u`)return;if(r)return s();if(window?.location?.protocol===`chrome-extension:`)return e.toEnumValue(t,WALLET_DEPLOYMENT_MODE)||t.STAGING;let i=window?.location?.host;return i?o(i,n[t.DEVELOPMENT])?t.DEVELOPMENT:o(i,n[t.PLAYGROUND])?t.PLAYGROUND:o(i,n[t.STAGING])?t.STAGING:t.PRODUCTION:t.PRODUCTION})(),l=c===t.DEVELOPMENT,u=c===t.PLAYGROUND,d=c===t.STAGING,f=d||l||u,p=typeof navigator<`u`&&navigator.product===`ReactNative`,m=f||r&&c===t.PRODUCTION;exports.DEPLOYMENT_MODE=t,exports.deploymentMode=c,exports.isDevelopment=l,exports.isExtension=a,exports.isNode=i,exports.isNotClientProduction=m,exports.isNotProduction=f,exports.isPlayground=u,exports.isReactNative=p,exports.isStaging=d;
1
+ const e=require(`../functions/utils/enum.utils.cjs`);var t=function(e){return e.DEVELOPMENT=`development`,e.PLAYGROUND=`playground`,e.PRODUCTION=`production`,e.STAGING=`staging`,e}({}),n={[t.DEVELOPMENT]:[`localhost`,`192.`,`127.`],[t.PLAYGROUND]:[`playground`],[t.STAGING]:[`working`,`staging`]},r=typeof process<`u`&&process?.release?.name===`node`,i=typeof process<`u`&&process.versions!=null&&process.versions.node!=null,a=typeof window<`u`&&window?.location?.protocol===`chrome-extension:`;function o(e,t){return t.some(t=>e.includes(t))}var s=()=>(require(`dotenv`).config({path:`DOTENV_OVERRIDE`in process.env?process.env.DOTENV_OVERRIDE:void 0}),process.env.DEPLOYMENT_MODE?.startsWith(`production`)?t.PRODUCTION:e.toEnumValue(t,process.env.DEPLOYMENT_MODE)||t.DEVELOPMENT),c=(()=>{if(!r&&typeof window>`u`)return;if(r)return s();if(window?.location?.protocol===`chrome-extension:`)return e.toEnumValue(t,WALLET_DEPLOYMENT_MODE)||t.STAGING;let i=window?.location?.host;return console.log(`url`,i),i?o(i,n[t.DEVELOPMENT])?t.DEVELOPMENT:o(i,n[t.PLAYGROUND])?t.PLAYGROUND:o(i,n[t.STAGING])?t.STAGING:(console.log(`returning production`),t.PRODUCTION):t.PRODUCTION})(),l=c===t.DEVELOPMENT,u=c===t.PLAYGROUND,d=c===t.STAGING,f=d||l||u;console.log(`navigator`,navigator),console.log(`navigator.product`,navigator.product);var p=typeof navigator<`u`&&navigator.product===`ReactNative`;console.log(`isReactNative`,p);var m=f||r&&c===t.PRODUCTION;exports.DEPLOYMENT_MODE=t,exports.deploymentMode=c,exports.isDevelopment=l,exports.isExtension=a,exports.isNode=i,exports.isNotClientProduction=m,exports.isNotProduction=f,exports.isPlayground=u,exports.isReactNative=p,exports.isStaging=d;
@@ -20,7 +20,11 @@ var c = () => (e("dotenv").config({ path: "DOTENV_OVERRIDE" in process.env ? pro
20
20
  if (i) return c();
21
21
  if (window?.location?.protocol === "chrome-extension:") return t(n, WALLET_DEPLOYMENT_MODE) || n.STAGING;
22
22
  let e = window?.location?.host;
23
- return e ? s(e, r[n.DEVELOPMENT]) ? n.DEVELOPMENT : s(e, r[n.PLAYGROUND]) ? n.PLAYGROUND : s(e, r[n.STAGING]) ? n.STAGING : n.PRODUCTION : n.PRODUCTION;
24
- })(), u = l === n.DEVELOPMENT, d = l === n.PLAYGROUND, f = l === n.STAGING, p = f || u || d, m = typeof navigator < "u" && navigator.product === "ReactNative", h = p || i && l === n.PRODUCTION;
23
+ return console.log("url", e), e ? s(e, r[n.DEVELOPMENT]) ? n.DEVELOPMENT : s(e, r[n.PLAYGROUND]) ? n.PLAYGROUND : s(e, r[n.STAGING]) ? n.STAGING : (console.log("returning production"), n.PRODUCTION) : n.PRODUCTION;
24
+ })(), u = l === n.DEVELOPMENT, d = l === n.PLAYGROUND, f = l === n.STAGING, p = f || u || d;
25
+ console.log("navigator", navigator), console.log("navigator.product", navigator.product);
26
+ var m = typeof navigator < "u" && navigator.product === "ReactNative";
27
+ console.log("isReactNative", m);
28
+ var h = p || i && l === n.PRODUCTION;
25
29
  //#endregion
26
30
  export { n as DEPLOYMENT_MODE, l as deploymentMode, u as isDevelopment, o as isExtension, a as isNode, h as isNotClientProduction, p as isNotProduction, d as isPlayground, m as isReactNative, f as isStaging };
@@ -0,0 +1 @@
1
+ const e=require(`../constants/protocol.constants.cjs`),t=require(`../functions/utils/bigint-math.utils.cjs`);var n=e.CIRCOM_P,r={p:n,zero:0n,one:1n,e:e=>t.mod(BigInt(e)),add:(e,n)=>t.mod(e+n),sub:(e,n)=>t.mod(e-n),mul:(e,n)=>t.mod(e*n),div:(e,r)=>{if(r===0n)throw Error(`Division by zero in BabyJub field`);return t.mod(e*t.modpow(r,n-2n,n))},toString:e=>t.mod(e).toString()},i=class{F=r;A=r.e(`168700`);D=r.e(`168696`);Base8=[r.e(`5299619240641551281634865583518297030282874472190772894086521144482721001553`),r.e(`16950150798460657717958625567821834550301663161624707787222815936182638968203`)];addPoint(e,t){let n=r.mul(e[0],t[1]),i=r.mul(e[1],t[0]),a=r.mul(r.sub(e[1],r.mul(this.A,e[0])),r.add(t[0],t[1])),o=r.mul(n,i),s=r.mul(this.D,o);return[r.div(r.add(n,i),r.add(r.one,s)),r.div(r.add(a,r.sub(r.mul(this.A,n),i)),r.sub(r.one,s))]}mulPointEscalar(e,t){let n=[r.zero,r.one],i=BigInt(t),a=e;for(;i!==0n;)i%2n==1n&&(n=this.addPoint(n,a)),a=this.addPoint(a,a),i/=2n;return n}};exports.BabyJubRN=i;
@@ -0,0 +1,18 @@
1
+ export declare class BabyJubRN {
2
+ F: {
3
+ p: bigint;
4
+ zero: bigint;
5
+ one: bigint;
6
+ e: (v: bigint | number | string) => bigint;
7
+ add: (a: bigint, b: bigint) => bigint;
8
+ sub: (a: bigint, b: bigint) => bigint;
9
+ mul: (a: bigint, b: bigint) => bigint;
10
+ div: (a: bigint, b: bigint) => bigint;
11
+ toString: (a: bigint) => string;
12
+ };
13
+ A: bigint;
14
+ D: bigint;
15
+ Base8: [bigint, bigint];
16
+ addPoint(a: [bigint, bigint], b: [bigint, bigint]): [bigint, bigint];
17
+ mulPointEscalar(base: [bigint, bigint], e: bigint | number | string): [bigint, bigint];
18
+ }
@@ -0,0 +1,33 @@
1
+ import { CIRCOM_P as e } from "../constants/protocol.constants.mjs";
2
+ import { mod as t, modpow as n } from "../functions/utils/bigint-math.utils.mjs";
3
+ //#region libs/shared/common/src/crypto/BabyJubRN.ts
4
+ var r = e, i = {
5
+ p: r,
6
+ zero: 0n,
7
+ one: 1n,
8
+ e: (e) => t(BigInt(e)),
9
+ add: (e, n) => t(e + n),
10
+ sub: (e, n) => t(e - n),
11
+ mul: (e, n) => t(e * n),
12
+ div: (e, i) => {
13
+ if (i === 0n) throw Error("Division by zero in BabyJub field");
14
+ return t(e * n(i, r - 2n, r));
15
+ },
16
+ toString: (e) => t(e).toString()
17
+ }, a = class {
18
+ F = i;
19
+ A = i.e("168700");
20
+ D = i.e("168696");
21
+ Base8 = [i.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), i.e("16950150798460657717958625567821834550301663161624707787222815936182638968203")];
22
+ addPoint(e, t) {
23
+ let n = i.mul(e[0], t[1]), r = i.mul(e[1], t[0]), a = i.mul(i.sub(e[1], i.mul(this.A, e[0])), i.add(t[0], t[1])), o = i.mul(n, r), s = i.mul(this.D, o);
24
+ return [i.div(i.add(n, r), i.add(i.one, s)), i.div(i.add(a, i.sub(i.mul(this.A, n), r)), i.sub(i.one, s))];
25
+ }
26
+ mulPointEscalar(e, t) {
27
+ let n = [i.zero, i.one], r = BigInt(t), a = e;
28
+ for (; r !== 0n;) r % 2n == 1n && (n = this.addPoint(n, a)), a = this.addPoint(a, a), r /= 2n;
29
+ return n;
30
+ }
31
+ };
32
+ //#endregion
33
+ export { a as BabyJubRN };
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/vite.constants.cjs`);let t=require(`circomlibjs-hinkal-fork`);var n=BigInt(`21888242871839275222246405745257275088548364400416034343698204186575808495617`),r=(e,t,n)=>{let r=1n,i=(e%n+n)%n,a=t;for(;a>0n;)a%2n==1n&&(r=r*i%n),a/=2n,i=i*i%n;return r},i={p:n,zero:0n,one:1n,e:e=>(BigInt(e)%n+n)%n,add:(e,t)=>(e+t)%n,sub:(e,t)=>((e-t)%n+n)%n,mul:(e,t)=>e*t%n,div:(e,t)=>e*r(t,n-2n,n)%n,toString:e=>BigInt(e).toString()},a=class{F=i;A=i.e(`168700`);D=i.e(`168696`);Base8=[i.e(`5299619240641551281634865583518297030282874472190772894086521144482721001553`),i.e(`16950150798460657717958625567821834550301663161624707787222815936182638968203`)];addPoint(e,t){let n=i.mul(e[0],t[1]),r=i.mul(e[1],t[0]),a=i.mul(i.sub(e[1],i.mul(this.A,e[0])),i.add(t[0],t[1])),o=i.mul(n,r),s=i.mul(this.D,o);return[i.div(i.add(n,r),i.add(i.one,s)),i.div(i.add(a,i.sub(i.mul(this.A,n),r)),i.sub(i.one,s))]}mulPointEscalar(e,t){let n=[i.zero,i.one],r=BigInt(t),a=e;for(;r!==0n;)r%2n==1n&&(n=this.addPoint(n,a)),a=this.addPoint(a,a),r/=2n;return n}},o=new class{babyjub=void 0;async init(){this.babyjub||=(console.log(`JubHolder.init`,e.isReactNative),e.isReactNative?new a:await(0,t.buildBabyjub)())}getJub(){return this.babyjub}},s=()=>o.getJub();exports.babyJubInstance=s,exports.jubHolder=o;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/vite.constants.cjs`),t=require(`./BabyJubRN.cjs`);let n=require(`circomlibjs-hinkal-fork`);var r=new class{babyjub=void 0;async init(){this.babyjub||=(console.log(`isReactNative JubHolder`,e.isReactNative),e.isReactNative?new t.BabyJubRN:await(0,n.buildBabyjub)())}getJub(){return this.babyjub}},i=()=>r.getJub();exports.babyJubInstance=i,exports.jubHolder=r;
@@ -1,42 +1,14 @@
1
1
  import { isReactNative as e } from "../constants/vite.constants.mjs";
2
- import { buildBabyjub as t } from "circomlibjs-hinkal-fork";
3
- //#region libs/shared/common/src/crypto/babyJub.ts
4
- var n = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"), r = (e, t, n) => {
5
- let r = 1n, i = (e % n + n) % n, a = t;
6
- for (; a > 0n;) a % 2n == 1n && (r = r * i % n), a /= 2n, i = i * i % n;
7
- return r;
8
- }, i = {
9
- p: n,
10
- zero: 0n,
11
- one: 1n,
12
- e: (e) => (BigInt(e) % n + n) % n,
13
- add: (e, t) => (e + t) % n,
14
- sub: (e, t) => ((e - t) % n + n) % n,
15
- mul: (e, t) => e * t % n,
16
- div: (e, t) => e * r(t, n - 2n, n) % n,
17
- toString: (e) => BigInt(e).toString()
18
- }, a = class {
19
- F = i;
20
- A = i.e("168700");
21
- D = i.e("168696");
22
- Base8 = [i.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), i.e("16950150798460657717958625567821834550301663161624707787222815936182638968203")];
23
- addPoint(e, t) {
24
- let n = i.mul(e[0], t[1]), r = i.mul(e[1], t[0]), a = i.mul(i.sub(e[1], i.mul(this.A, e[0])), i.add(t[0], t[1])), o = i.mul(n, r), s = i.mul(this.D, o);
25
- return [i.div(i.add(n, r), i.add(i.one, s)), i.div(i.add(a, i.sub(i.mul(this.A, n), r)), i.sub(i.one, s))];
26
- }
27
- mulPointEscalar(e, t) {
28
- let n = [i.zero, i.one], r = BigInt(t), a = e;
29
- for (; r !== 0n;) r % 2n == 1n && (n = this.addPoint(n, a)), a = this.addPoint(a, a), r /= 2n;
30
- return n;
31
- }
32
- }, o = new class {
2
+ import { BabyJubRN as t } from "./BabyJubRN.mjs";
3
+ import { buildBabyjub as n } from "circomlibjs-hinkal-fork";
4
+ var r = new class {
33
5
  babyjub = void 0;
34
6
  async init() {
35
- this.babyjub ||= (console.log("JubHolder.init", e), e ? new a() : await t());
7
+ this.babyjub ||= (console.log("isReactNative JubHolder", e), e ? new t() : await n());
36
8
  }
37
9
  getJub() {
38
10
  return this.babyjub;
39
11
  }
40
- }(), s = () => o.getJub();
12
+ }(), i = () => r.getJub();
41
13
  //#endregion
42
- export { s as babyJubInstance, o as jubHolder };
14
+ export { i as babyJubInstance, r as jubHolder };
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/vite.constants.cjs`),t=require(`../functions/utils/amounts.utils.cjs`);let n=require(`ethers`),r=require(`circomlibjs-hinkal-fork`);var i=()=>{console.log(`buildPoseidonRN`);let e=require(`poseidon-lite`),t=t=>{let n=e[`poseidon${t.length}`];if(!n)throw Error(`Poseidon: arity ${t.length} not supported (1..16)`);return n(t.map(e=>BigInt(e)))};return t.F={toString:e=>BigInt(e).toString()},t},a=new class{poseidon=void 0;async init(){this.poseidon||=(console.log(`PoseidonHolder.init`,e.isReactNative),e.isReactNative?i():await(0,r.buildPoseidon)())}getPoseidon(){return this.poseidon}};function o(...e){let n=a.getPoseidon();return t.toBigInt(n.F.toString(n(e)))}var s=(...e)=>{let t=a.getPoseidon();return n.ethers.toBeHex(t.F.toString(t([...e])))};exports.poseidonFunction=o,exports.poseidonHash=s,exports.poseidonHolder=a;
1
+ const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants/vite.constants.cjs`),n=require(`../functions/utils/amounts.utils.cjs`);let r=require(`ethers`),i=require(`poseidon-lite`);i=e.__toESM(i);let a=require(`circomlibjs-hinkal-fork`);var o=()=>{let e=e=>{let t=i[`poseidon${e.length}`];if(!t)throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);return t(e.map(e=>BigInt(e)))};return e.F={toString:e=>BigInt(e).toString()},e},s=new class{poseidon=void 0;async init(){this.poseidon||=(console.log(`isReactNative PoseidonHolder`,t.isReactNative),t.isReactNative?o():await(0,a.buildPoseidon)())}getPoseidon(){return this.poseidon}};function c(...e){let t=s.getPoseidon();return n.toBigInt(t.F.toString(t(e)))}var l=(...e)=>{let t=s.getPoseidon();return r.ethers.toBeHex(t.F.toString(t([...e])))};exports.poseidonFunction=c,exports.poseidonHash=l,exports.poseidonHolder=s;
@@ -1,33 +1,32 @@
1
- import { __require as e } from "../../../_virtual/_rolldown/runtime.mjs";
2
- import { isReactNative as t } from "../constants/vite.constants.mjs";
3
- import { toBigInt as n } from "../functions/utils/amounts.utils.mjs";
4
- import { ethers as r } from "ethers";
1
+ import { isReactNative as e } from "../constants/vite.constants.mjs";
2
+ import { toBigInt as t } from "../functions/utils/amounts.utils.mjs";
3
+ import { ethers as n } from "ethers";
4
+ import * as r from "poseidon-lite";
5
5
  import { buildPoseidon as i } from "circomlibjs-hinkal-fork";
6
6
  //#region libs/shared/common/src/crypto/poseidon.ts
7
7
  var a = () => {
8
- console.log("buildPoseidonRN");
9
- let t = e("poseidon-lite"), n = (e) => {
10
- let n = t[`poseidon${e.length}`];
11
- if (!n) throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);
12
- return n(e.map((e) => BigInt(e)));
8
+ let e = (e) => {
9
+ let t = r[`poseidon${e.length}`];
10
+ if (!t) throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);
11
+ return t(e.map((e) => BigInt(e)));
13
12
  };
14
- return n.F = { toString: (e) => BigInt(e).toString() }, n;
13
+ return e.F = { toString: (e) => BigInt(e).toString() }, e;
15
14
  }, o = new class {
16
15
  poseidon = void 0;
17
16
  async init() {
18
- this.poseidon ||= (console.log("PoseidonHolder.init", t), t ? a() : await i());
17
+ this.poseidon ||= (console.log("isReactNative PoseidonHolder", e), e ? a() : await i());
19
18
  }
20
19
  getPoseidon() {
21
20
  return this.poseidon;
22
21
  }
23
22
  }();
24
23
  function s(...e) {
25
- let t = o.getPoseidon();
26
- return n(t.F.toString(t(e)));
24
+ let n = o.getPoseidon();
25
+ return t(n.F.toString(n(e)));
27
26
  }
28
27
  var c = (...e) => {
29
28
  let t = o.getPoseidon();
30
- return r.toBeHex(t.F.toString(t([...e])));
29
+ return n.toBeHex(t.F.toString(t([...e])));
31
30
  };
32
31
  //#endregion
33
32
  export { s as poseidonFunction, c as poseidonHash, o as poseidonHolder };
@@ -1 +1 @@
1
- const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/admin.types.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),f=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),m=require(`../../API/admin-calls.cjs`);var h=async(e,t,n,r)=>{let i=await e.getEthereumAddressByChain(t),{patchAccessTokenMerkleTree:a,signatureData:o}=await d.getKycAndSignatureData(e,t,n,r,i);return{signatureData:o,externalActionData:{externalActionId:0n,externalAddress:i,externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0,patchAccessTokenMerkleTree:a}},g=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},_=async(r,i,a,o=!0,c=!1)=>{console.log(`[hinkalDeposit] start`,{tokenCount:i.length,amountChanges:a,preEstimateGas:o,returnTxData:c});let l=s.validateAndGetChainId(i);console.log(`[hinkalDeposit] chainId`,l);let d=i.map(e=>e.erc20TokenAddress);console.log(`[hinkalDeposit] erc20Addresses`,d),console.log(`[hinkalDeposit] loading transaction parameters and utxos`);let[{externalActionData:_,contractTransaction:v,contractToApprove:y,patchAccessTokenMerkleTree:b,signatureData:x},{inputUtxosArray:S,outputUtxosArray:C}]=await Promise.all([h(r,l,d,a),g(r,l,d,a)]);console.log(`[hinkalDeposit] transaction parameters ready`,{externalActionData:_,hasContractTransaction:!!v,hasContractToApprove:!!y,hasPatchAccessTokenMerkleTree:!!b,hasSignatureData:!!x}),console.log(`[hinkalDeposit] utxos ready`,{inputUtxoGroups:S.length,outputUtxoGroups:C.length,inputUtxoSizes:S.map(e=>e.length),outputUtxoSizes:C.map(e=>e.length)});let w=`swapperM${a.length.toString()}x${S[0].length}x1`;console.log(`[hinkalDeposit] circuitName`,w),console.log(`[hinkalDeposit] constructing zk proof`);let{zkCallData:T,circomData:E,dimData:D}=await f.constructZkProof(r.merkleTreeHinkalByChain[l],r.merkleTreeAccessTokenByChain[l],S,C,r.userKeys,w,_.externalActionId,_.externalAddress,_.externalActionMetadata,r.generateProofRemotely,e.zeroAddress,l,void 0,void 0,void 0,b,void 0,void 0,r.getContractWithFetcher(l,t.ContractType.HinkalHelperContract),x);console.log(`[hinkalDeposit] zk proof ready`,{zkCallDataLength:T?.length,circomDataLength:Array.isArray(E)?E.length:void 0,dimDataLength:Array.isArray(D)?D.length:void 0}),console.log(`[hinkalDeposit] calling transactCallDirect`);let O=await p.transactCallDirect(r,l,a,i,T,E,D,y,v,o,c);console.log(`[hinkalDeposit] transactCallDirect result`,O),console.log(`[hinkalDeposit] constructing admin data`);let k=u.constructAdminData(n.AdminTransactionType.Onboarding,l,d,a,await r.getEthereumAddress());return console.log(`[hinkalDeposit] adminData`,k),console.log(`[hinkalDeposit] emitting public tx data`),m.emitTxPublicData(k),console.log(`[hinkalDeposit] complete`),O},v=async(i,c,l,d,g=!0,_=!1)=>{let v=s.validateAndGetChainId(c),y=c.map(e=>e.erc20TokenAddress),[b,x,S]=d.split(`,`);if(!o.isValidPrivateAddress(d))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=y.map(e=>[new a.Utxo({amount:0n,erc20TokenAddress:e,shieldedPrivateKey:i.userKeys.getShieldedPrivateKey()}),new a.Utxo({amount:0n,erc20TokenAddress:e,shieldedPrivateKey:i.userKeys.getShieldedPrivateKey()})]),w=`swapperM${l.length.toString()}x${C[0].length}x1`,T=y.map((e,t)=>[new a.Utxo({amount:l[t],erc20TokenAddress:e,randomization:BigInt(b),stealthAddress:x,encryptionKey:S})]),{externalActionData:E,contractTransaction:D,contractToApprove:O,patchAccessTokenMerkleTree:k}=await h(i,v,y,l),{zkCallData:A,circomData:j,dimData:M}=await f.constructZkProof(i.merkleTreeHinkalByChain[v],i.merkleTreeAccessTokenByChain[v],C,T,i.userKeys,w,E.externalActionId,E.externalAddress,E.externalActionMetadata,i.generateProofRemotely,e.zeroAddress,v,void 0,void 0,void 0,k,void 0,void 0,i.getContractWithFetcher(v,t.ContractType.HinkalHelperContract)),N=await p.transactCallDirect(i,v,l,c,A,j,M,O,D,g,_);return m.emitTxPublicData(u.constructAdminData(n.AdminTransactionType.PaymentLink,v,y,l,await i.getEthereumAddress())),N};exports.hinkalDeposit=_,exports.hinkalDepositForOther=v;
1
+ const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/admin.types.cjs`);require(`../../types/index.cjs`);const r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),f=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),m=require(`../../API/admin-calls.cjs`);var h=async(e,t,n,r)=>{let i=await e.getEthereumAddressByChain(t),{patchAccessTokenMerkleTree:a,signatureData:o}=await d.getKycAndSignatureData(e,t,n,r,i);return{signatureData:o,externalActionData:{externalActionId:0n,externalAddress:i,externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0,patchAccessTokenMerkleTree:a}},g=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},_=async(r,i,a,o=!0,c=!1)=>{let l=s.validateAndGetChainId(i),d=i.map(e=>e.erc20TokenAddress),[{externalActionData:_,contractTransaction:v,contractToApprove:y,patchAccessTokenMerkleTree:b,signatureData:x},{inputUtxosArray:S,outputUtxosArray:C}]=await Promise.all([h(r,l,d,a),g(r,l,d,a)]),w=`swapperM${a.length.toString()}x${S[0].length}x1`,{zkCallData:T,circomData:E,dimData:D}=await f.constructZkProof(r.merkleTreeHinkalByChain[l],r.merkleTreeAccessTokenByChain[l],S,C,r.userKeys,w,_.externalActionId,_.externalAddress,_.externalActionMetadata,r.generateProofRemotely,e.zeroAddress,l,void 0,void 0,void 0,b,void 0,void 0,r.getContractWithFetcher(l,t.ContractType.HinkalHelperContract),x),O=await p.transactCallDirect(r,l,a,i,T,E,D,y,v,o,c);return m.emitTxPublicData(u.constructAdminData(n.AdminTransactionType.Onboarding,l,d,a,await r.getEthereumAddress())),O},v=async(i,c,l,d,g=!0,_=!1)=>{let v=s.validateAndGetChainId(c),y=c.map(e=>e.erc20TokenAddress),[b,x,S]=d.split(`,`);if(!o.isValidPrivateAddress(d))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=y.map(e=>[new a.Utxo({amount:0n,erc20TokenAddress:e,shieldedPrivateKey:i.userKeys.getShieldedPrivateKey()}),new a.Utxo({amount:0n,erc20TokenAddress:e,shieldedPrivateKey:i.userKeys.getShieldedPrivateKey()})]),w=`swapperM${l.length.toString()}x${C[0].length}x1`,T=y.map((e,t)=>[new a.Utxo({amount:l[t],erc20TokenAddress:e,randomization:BigInt(b),stealthAddress:x,encryptionKey:S})]),{externalActionData:E,contractTransaction:D,contractToApprove:O,patchAccessTokenMerkleTree:k}=await h(i,v,y,l),{zkCallData:A,circomData:j,dimData:M}=await f.constructZkProof(i.merkleTreeHinkalByChain[v],i.merkleTreeAccessTokenByChain[v],C,T,i.userKeys,w,E.externalActionId,E.externalAddress,E.externalActionMetadata,i.generateProofRemotely,e.zeroAddress,v,void 0,void 0,void 0,k,void 0,void 0,i.getContractWithFetcher(v,t.ContractType.HinkalHelperContract)),N=await p.transactCallDirect(i,v,l,c,A,j,M,O,D,g,_);return m.emitTxPublicData(u.constructAdminData(n.AdminTransactionType.PaymentLink,v,y,l,await i.getEthereumAddress())),N};exports.hinkalDeposit=_,exports.hinkalDepositForOther=v;
@@ -39,41 +39,8 @@ var h = async (e, t, n, r) => {
39
39
  outputUtxosArray: o
40
40
  };
41
41
  }, _ = async (r, i, a, o = !0, c = !1) => {
42
- console.log("[hinkalDeposit] start", {
43
- tokenCount: i.length,
44
- amountChanges: a,
45
- preEstimateGas: o,
46
- returnTxData: c
47
- });
48
- let l = s(i);
49
- console.log("[hinkalDeposit] chainId", l);
50
- let d = i.map((e) => e.erc20TokenAddress);
51
- console.log("[hinkalDeposit] erc20Addresses", d), console.log("[hinkalDeposit] loading transaction parameters and utxos");
52
- let [{ externalActionData: _, contractTransaction: v, contractToApprove: y, patchAccessTokenMerkleTree: b, signatureData: x }, { inputUtxosArray: S, outputUtxosArray: C }] = await Promise.all([h(r, l, d, a), g(r, l, d, a)]);
53
- console.log("[hinkalDeposit] transaction parameters ready", {
54
- externalActionData: _,
55
- hasContractTransaction: !!v,
56
- hasContractToApprove: !!y,
57
- hasPatchAccessTokenMerkleTree: !!b,
58
- hasSignatureData: !!x
59
- }), console.log("[hinkalDeposit] utxos ready", {
60
- inputUtxoGroups: S.length,
61
- outputUtxoGroups: C.length,
62
- inputUtxoSizes: S.map((e) => e.length),
63
- outputUtxoSizes: C.map((e) => e.length)
64
- });
65
- let w = `swapperM${a.length.toString()}x${S[0].length}x1`;
66
- console.log("[hinkalDeposit] circuitName", w), console.log("[hinkalDeposit] constructing zk proof");
67
- let { zkCallData: T, circomData: E, dimData: D } = await f(r.merkleTreeHinkalByChain[l], r.merkleTreeAccessTokenByChain[l], S, C, r.userKeys, w, _.externalActionId, _.externalAddress, _.externalActionMetadata, r.generateProofRemotely, e, l, void 0, void 0, void 0, b, void 0, void 0, r.getContractWithFetcher(l, t.HinkalHelperContract), x);
68
- console.log("[hinkalDeposit] zk proof ready", {
69
- zkCallDataLength: T?.length,
70
- circomDataLength: Array.isArray(E) ? E.length : void 0,
71
- dimDataLength: Array.isArray(D) ? D.length : void 0
72
- }), console.log("[hinkalDeposit] calling transactCallDirect");
73
- let O = await p(r, l, a, i, T, E, D, y, v, o, c);
74
- console.log("[hinkalDeposit] transactCallDirect result", O), console.log("[hinkalDeposit] constructing admin data");
75
- let k = u(n.Onboarding, l, d, a, await r.getEthereumAddress());
76
- return console.log("[hinkalDeposit] adminData", k), console.log("[hinkalDeposit] emitting public tx data"), m(k), console.log("[hinkalDeposit] complete"), O;
42
+ let l = s(i), d = i.map((e) => e.erc20TokenAddress), [{ externalActionData: _, contractTransaction: v, contractToApprove: y, patchAccessTokenMerkleTree: b, signatureData: x }, { inputUtxosArray: S, outputUtxosArray: C }] = await Promise.all([h(r, l, d, a), g(r, l, d, a)]), w = `swapperM${a.length.toString()}x${S[0].length}x1`, { zkCallData: T, circomData: E, dimData: D } = await f(r.merkleTreeHinkalByChain[l], r.merkleTreeAccessTokenByChain[l], S, C, r.userKeys, w, _.externalActionId, _.externalAddress, _.externalActionMetadata, r.generateProofRemotely, e, l, void 0, void 0, void 0, b, void 0, void 0, r.getContractWithFetcher(l, t.HinkalHelperContract), x), O = await p(r, l, a, i, T, E, D, y, v, o, c);
43
+ return m(u(n.Onboarding, l, d, a, await r.getEthereumAddress())), O;
77
44
  }, v = async (i, c, l, d, g = !0, _ = !1) => {
78
45
  let v = s(c), y = c.map((e) => e.erc20TokenAddress), [b, x, S] = d.split(",");
79
46
  if (!o(d)) throw Error(r.RECIPIENT_FORMAT_INCORRECT);
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/caseInsensitive.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../error-handling/logger.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../externalABIs/index.cjs`),m=require(`../../functions/utils/tx-confirmation.utils.cjs`),h=require(`../../functions/utils/tronSimulation.utils.cjs`),g=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),_=require(`../../API/admin-calls.cjs`),v=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`);var y=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let a=!1;for(let o=0;o<r;o+=1)if(u.isSameERC20Token(n[o].token,e[i])){n[o].balance+=t[i],a=!0;break}a||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},b=async(e,r,i,o)=>{for(let s=0;s<o.length;s+=1)a.caseInsensitiveEqual(o[s].token.erc20TokenAddress,t.zeroAddress)||await m.waitForEthereumTransactionConfirmation(r,(await e.getContractWithSigner(r,n.ContractType.ERC20Contract,o[s].token.erc20TokenAddress).approve(i,o[s].balance)).hash)},x=async(e,n,r,i)=>{let a=Array.from(i.entries());for(let i=0;i<a.length;i+=1){let[o,s]=a[i],c=await e.contract(p.ERC20ABI,o).allowance(n,r).call({from:n});if(BigInt(String(c))<s){let{transaction:i}=await e.transactionBuilder.triggerSmartContract(o,`approve(address,uint256)`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN},[{type:`address`,value:r},{type:`uint256`,value:s.toString()}],n),a=await e.trx.sign(i),c=await e.trx.sendRawTransaction(a);if(!c.result){let e=c.code??`UNKNOWN`,t=c.message?Buffer.from(c.message,`hex`).toString():`no message`;throw Error(`Tron token approval failed: ${e} - ${t}`)}}}},S=e=>{let t=new Set;e.forEach(({extraRandomization:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})},C=async(n,i,o,s,u)=>{let d=n.getTronWeb(),{hinkalAddress:f}=e.networkRegistry[i].contractData,p=c.evmHexToTronBase58Address(f),m=await n.getEthereumAddressByChain(i),_=o.map(e=>e.erc20TokenAddress),v=o.map(()=>0n),y=0n,b=new Map;for(let e=0;e<o.length;e+=1){let n=c.evmHexToTronBase58Address(o[e].erc20TokenAddress);if(a.caseInsensitiveEqual(o[e].erc20TokenAddress,t.zeroAddress))y+=s[e];else{let t=b.get(n)??0n;b.set(n,t+s[e])}}await x(d,m,p,b),await g.waitForTronErc20Approvals(d,m,p,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t})));let S=u.map(e=>({extraRandomization:e.extraRandomization.toString(),stealthAddress:e.stealthAddress.toString(),H0:e.H0.toString(),H1:e.H1.toString()}));if(await h.simulateTronTransaction(i,p,`prooflessDeposit`,e.networkRegistry[i].contractData.hinkalABI,[_,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])],m,y>0n?y:void 0),y>0n){let n=BigInt(await d.trx.getBalance(m)),a=BigInt(t.TRON_DEFAULT_FEE_LIMIT_SUN);try{let{hinkalABI:t}=e.networkRegistry[i].contractData;if(!t)throw Error(`Hinkal ABI not found`);a=await c.estimateTronFeeSunWithPadding(d,i,p,m,c.createTronCallData(t,`prooflessDeposit`,[_,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])]),y)}catch(e){l.Logger.error(`Error estimating Tron prooflessDeposit fee`,e)}if(n<y+a)throw Error(r.insufficientResourcesErrorCodes.INSUFFICIENT_TRON_BALANCE_FOR_FEE)}let{transaction:C}=await d.transactionBuilder.triggerSmartContract(p,`prooflessDeposit(address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:y>0n?Number(y):0},[{type:`address[]`,value:_},{type:`uint256[]`,value:s.map(String)},{type:`uint256[]`,value:v.map(String)},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:S.map(e=>[e.extraRandomization,e.stealthAddress,e.H0,e.H1])}],m),w=await d.trx.sign(C),T=await d.trx.sendRawTransaction(w);if(!T.result)throw l.Logger.error(`Tron prooflessDeposit broadcast failed`,T),Error(`Tron prooflessDeposit broadcast failed`);let E=typeof T==`string`?T:T?.txid??T?.transaction?.txID;if(!E)throw Error(`Tron prooflessDeposit failed (missing txid)`);return E},w=async(r,c,l,p,m)=>{let h=u.validateAndGetChainId(c),x=e.isTronLike(h),w=await r.getEthereumAddressByChain(h),T=r.userKeys.getShieldedPrivateKey(),E=p??c.map(()=>d.calcStealthAddressStructure(o.Utxo.findCorrectRandomization(i.randomBigInt(31),T),T));if(E.length!==c.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);S(E);let D;if(x)D=await C(r,h,c,l,E);else{let e=r.getContractWithSigner(h,n.ContractType.HinkalContract),i=r.getProviderAdapter(h),o=y(c,l),u=c.reduce((e,n,r)=>a.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+l[r]:e,0n),d=o.filter(({token:e,balance:n})=>!a.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),f;if(d.length>0&&await i.supportsBatchCall?.(h)&&i.sendBatchCallsTransaction){let t=v.buildApproveAndProoflessDepositCalls(d.map(({token:e})=>e.erc20TokenAddress),d.map(({balance:e})=>e),s.getContractAddress(e),e,c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,u);f=await i.sendBatchCallsTransaction(h,t)}else{await b(r,h,s.getContractAddress(e),o);let t=await r.getEthereumAddressByChain(h),n=o.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await g.waitForErc20Approvals(r,h,t,s.getContractAddress(e),n),f=await e.prooflessDeposit(c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,{value:u>0n?u:void 0})}D=f.hash}return _.emitTxPublicData(f.constructAdminData(m,h,c.map(({erc20TokenAddress:e})=>e),l,w)),D};exports.hinkalProoflessDeposit=w;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/web3/etherFunctions.cjs`),a=require(`../../functions/utils/caseInsensitive.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../error-handling/logger.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../externalABIs/index.cjs`),m=require(`../../functions/utils/tx-confirmation.utils.cjs`),h=require(`../../functions/utils/tronSimulation.utils.cjs`),g=require(`../../functions/web3/functionCalls/constructBatchCall.cjs`),_=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),v=require(`../../API/admin-calls.cjs`);var y=(e,t)=>{let n=[],r=0;for(let i=0;i<e.length;i+=1){let a=!1;for(let o=0;o<r;o+=1)if(u.isSameERC20Token(n[o].token,e[i])){n[o].balance+=t[i],a=!0;break}a||(n[r]={token:e[i],balance:t[i]},r+=1)}return n},b=async(e,r,i,o)=>{for(let s=0;s<o.length;s+=1)a.caseInsensitiveEqual(o[s].token.erc20TokenAddress,t.zeroAddress)||await m.waitForEthereumTransactionConfirmation(r,(await e.getContractWithSigner(r,n.ContractType.ERC20Contract,o[s].token.erc20TokenAddress).approve(i,o[s].balance)).hash)},x=async(e,n,r,i)=>{let a=Array.from(i.entries());for(let i=0;i<a.length;i+=1){let[o,s]=a[i],c=await e.contract(p.ERC20ABI,o).allowance(n,r).call({from:n});if(BigInt(String(c))<s){let{transaction:i}=await e.transactionBuilder.triggerSmartContract(o,`approve(address,uint256)`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN},[{type:`address`,value:r},{type:`uint256`,value:s.toString()}],n),a=await e.trx.sign(i),c=await e.trx.sendRawTransaction(a);if(!c.result){let e=c.code??`UNKNOWN`,t=c.message?Buffer.from(c.message,`hex`).toString():`no message`;throw Error(`Tron token approval failed: ${e} - ${t}`)}}}},S=e=>{let t=new Set;e.forEach(({extraRandomization:e,stealthAddress:n})=>{let r=`${e.toString()}:${n.toString()}`;if(t.has(r))throw Error(`Duplicate randomization and stealth address pair detected in stealthAddressStructures`);t.add(r)})},C=async(n,i,o,s,u)=>{let d=n.getTronWeb(),{hinkalAddress:f}=e.networkRegistry[i].contractData,p=c.evmHexToTronBase58Address(f),m=await n.getEthereumAddressByChain(i),g=o.map(e=>e.erc20TokenAddress),v=o.map(()=>0n),y=0n,b=new Map;for(let e=0;e<o.length;e+=1){let n=c.evmHexToTronBase58Address(o[e].erc20TokenAddress);if(a.caseInsensitiveEqual(o[e].erc20TokenAddress,t.zeroAddress))y+=s[e];else{let t=b.get(n)??0n;b.set(n,t+s[e])}}await x(d,m,p,b),await _.waitForTronErc20Approvals(d,m,p,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t})));let S=u.map(e=>({extraRandomization:e.extraRandomization.toString(),stealthAddress:e.stealthAddress.toString(),H0:e.H0.toString(),H1:e.H1.toString()}));if(await h.simulateTronTransaction(i,p,`prooflessDeposit`,e.networkRegistry[i].contractData.hinkalABI,[g,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])],m,y>0n?y:void 0),y>0n){let n=BigInt(await d.trx.getBalance(m)),a=BigInt(t.TRON_DEFAULT_FEE_LIMIT_SUN);try{let{hinkalABI:t}=e.networkRegistry[i].contractData;if(!t)throw Error(`Hinkal ABI not found`);a=await c.estimateTronFeeSunWithPadding(d,i,p,m,c.createTronCallData(t,`prooflessDeposit`,[g,s.map(String),v.map(String),u.map(e=>[e.extraRandomization.toString(),e.stealthAddress.toString(),e.H0.toString(),e.H1.toString()])]),y)}catch(e){l.Logger.error(`Error estimating Tron prooflessDeposit fee`,e)}if(n<y+a)throw Error(r.insufficientResourcesErrorCodes.INSUFFICIENT_TRON_BALANCE_FOR_FEE)}let{transaction:C}=await d.transactionBuilder.triggerSmartContract(p,`prooflessDeposit(address[],uint256[],uint256[],(uint256,uint256,uint256,uint256)[])`,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:y>0n?Number(y):0},[{type:`address[]`,value:g},{type:`uint256[]`,value:s.map(String)},{type:`uint256[]`,value:v.map(String)},{type:`tuple(uint256,uint256,uint256,uint256)[]`,value:S.map(e=>[e.extraRandomization,e.stealthAddress,e.H0,e.H1])}],m),w=await d.trx.sign(C),T=await d.trx.sendRawTransaction(w);if(!T.result)throw l.Logger.error(`Tron prooflessDeposit broadcast failed`,T),Error(`Tron prooflessDeposit broadcast failed`);let E=typeof T==`string`?T:T?.txid??T?.transaction?.txID;if(!E)throw Error(`Tron prooflessDeposit failed (missing txid)`);return E},w=async(r,c,l,p,m)=>{let h=u.validateAndGetChainId(c),x=e.isTronLike(h),w=await r.getEthereumAddressByChain(h),T=r.userKeys.getShieldedPrivateKey(),E=p??c.map(()=>d.calcStealthAddressStructure(o.Utxo.findCorrectRandomization(i.randomBigInt(31),T),T));if(E.length!==c.length)throw Error(`Stealth address structures length must be equal to erc20 tokens length`);S(E);let D;if(x)D=await C(r,h,c,l,E);else{let e=r.getContractWithSigner(h,n.ContractType.HinkalContract),i=r.getProviderAdapter(h),o=y(c,l),u=c.reduce((e,n,r)=>a.caseInsensitiveEqual(n.erc20TokenAddress,t.zeroAddress)?e+l[r]:e,0n),d=o.filter(({token:e,balance:n})=>!a.caseInsensitiveEqual(e.erc20TokenAddress,t.zeroAddress)&&n>0n),f;if(d.length>0&&await i.supportsBatchCall?.(h)&&i.sendBatchCallsTransaction){let t=g.buildApproveAndProoflessDepositCalls(d.map(({token:e})=>e.erc20TokenAddress),d.map(({balance:e})=>e),s.getContractAddress(e),e,c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,u);f=await i.sendBatchCallsTransaction(h,t)}else{await b(r,h,s.getContractAddress(e),o);let t=await r.getEthereumAddressByChain(h),n=o.map(({token:e,balance:t})=>({tokenAddress:e.erc20TokenAddress,requiredAmount:t}));await _.waitForErc20Approvals(r,h,t,s.getContractAddress(e),n),f=await e.prooflessDeposit(c.map(({erc20TokenAddress:e})=>e),l,c.map(()=>0n),E,{value:u>0n?u:void 0})}D=f.hash}return v.emitTxPublicData(f.constructAdminData(m,h,c.map(({erc20TokenAddress:e})=>e),l,w)),D};exports.hinkalProoflessDeposit=w;
@@ -14,9 +14,9 @@ import { constructAdminData as _ } from "../../functions/pre-transaction/constru
14
14
  import { ERC20ABI as v } from "../../externalABIs/index.mjs";
15
15
  import { waitForEthereumTransactionConfirmation as y } from "../../functions/utils/tx-confirmation.utils.mjs";
16
16
  import { simulateTronTransaction as b } from "../../functions/utils/tronSimulation.utils.mjs";
17
- import { waitForErc20Approvals as x, waitForTronErc20Approvals as S } from "../../functions/web3/functionCalls/waitForErc20Approvals.mjs";
18
- import { emitTxPublicData as C } from "../../API/admin-calls.mjs";
19
- import { buildApproveAndProoflessDepositCalls as w } from "../../functions/web3/functionCalls/constructBatchCall.mjs";
17
+ import { buildApproveAndProoflessDepositCalls as x } from "../../functions/web3/functionCalls/constructBatchCall.mjs";
18
+ import { waitForErc20Approvals as S, waitForTronErc20Approvals as C } from "../../functions/web3/functionCalls/waitForErc20Approvals.mjs";
19
+ import { emitTxPublicData as w } from "../../API/admin-calls.mjs";
20
20
  //#region libs/shared/common/src/data-structures/Hinkal/hinkalProoflessDeposit.ts
21
21
  var T = (e, t) => {
22
22
  let n = [], r = 0;
@@ -60,16 +60,16 @@ var T = (e, t) => {
60
60
  t.add(r);
61
61
  });
62
62
  }, k = async (e, i, o, c, l) => {
63
- let m = e.getTronWeb(), { hinkalAddress: h } = t[i].contractData, g = f(h), _ = await e.getEthereumAddressByChain(i), v = o.map((e) => e.erc20TokenAddress), y = o.map(() => 0n), x = 0n, C = /* @__PURE__ */ new Map();
63
+ let m = e.getTronWeb(), { hinkalAddress: h } = t[i].contractData, g = f(h), _ = await e.getEthereumAddressByChain(i), v = o.map((e) => e.erc20TokenAddress), y = o.map(() => 0n), x = 0n, S = /* @__PURE__ */ new Map();
64
64
  for (let e = 0; e < o.length; e += 1) {
65
65
  let t = f(o[e].erc20TokenAddress);
66
66
  if (s(o[e].erc20TokenAddress, r)) x += c[e];
67
67
  else {
68
- let n = C.get(t) ?? 0n;
69
- C.set(t, n + c[e]);
68
+ let n = S.get(t) ?? 0n;
69
+ S.set(t, n + c[e]);
70
70
  }
71
71
  }
72
- await D(m, _, g, C), await S(m, _, g, Array.from(C.entries()).map(([e, t]) => ({
72
+ await D(m, _, g, S), await C(m, _, g, Array.from(S.entries()).map(([e, t]) => ({
73
73
  tokenAddress: e,
74
74
  requiredAmount: t
75
75
  })));
@@ -149,7 +149,7 @@ var T = (e, t) => {
149
149
  else {
150
150
  let e = t.getContractWithSigner(f, i.HinkalContract), o = t.getProviderAdapter(f), c = T(n, a), u = n.reduce((e, t, n) => s(t.erc20TokenAddress, r) ? e + a[n] : e, 0n), d = c.filter(({ token: e, balance: t }) => !s(e.erc20TokenAddress, r) && t > 0n), p;
151
151
  if (d.length > 0 && await o.supportsBatchCall?.(f) && o.sendBatchCallsTransaction) {
152
- let t = w(d.map(({ token: e }) => e.erc20TokenAddress), d.map(({ balance: e }) => e), l(e), e, n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, u);
152
+ let t = x(d.map(({ token: e }) => e.erc20TokenAddress), d.map(({ balance: e }) => e), l(e), e, n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, u);
153
153
  p = await o.sendBatchCallsTransaction(f, t);
154
154
  } else {
155
155
  await E(t, f, l(e), c);
@@ -157,11 +157,11 @@ var T = (e, t) => {
157
157
  tokenAddress: e.erc20TokenAddress,
158
158
  requiredAmount: t
159
159
  }));
160
- await x(t, f, r, l(e), i), p = await e.prooflessDeposit(n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, { value: u > 0n ? u : void 0 });
160
+ await S(t, f, r, l(e), i), p = await e.prooflessDeposit(n.map(({ erc20TokenAddress: e }) => e), a, n.map(() => 0n), y, { value: u > 0n ? u : void 0 });
161
161
  }
162
162
  b = p.hash;
163
163
  }
164
- return C(_(d, f, n.map(({ erc20TokenAddress: e }) => e), a, m)), b;
164
+ return w(_(d, f, n.map(({ erc20TokenAddress: e }) => e), a, m)), b;
165
165
  };
166
166
  //#endregion
167
167
  export { A as hinkalProoflessDeposit };
@@ -1 +1 @@
1
- require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/time.utils.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/pre-transaction/getFeeStructure.cjs`),c=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),l=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),f=require(`../../functions/pre-transaction/getExternalSwapAddress.cjs`),p=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var m=async(e,t,r,o)=>{let s=[...await i.addPaddingToUtxos(e,t,r,o)],c=[],l=n.getCurrentTimeInSeconds().toString();for(let t=0;t<r.length;t+=1){let{outputUtxos:n}=a.outputUtxoProcessing(e.userKeys,s[t],o[t],l);c.push(n)}return{inputUtxosArray:s,outputUtxosArray:c}},h=async(n,i,a,h,g,_,v,y)=>{console.log(`[hinkalSwap] start`,{tokenCount:i.length,deltaAmounts:a,externalActionId:h,data:g,feeToken:_,hasFeeStructureOverride:!!v,action:y});let b=r.validateAndGetChainId(i);console.log(`[hinkalSwap] chainId`,b);let x=i.map(e=>e.erc20TokenAddress);console.log(`[hinkalSwap] erc20Addresses`,x);let S=await n.getEthereumAddressByChain(b);console.log(`[hinkalSwap] ethereumAddress`,S),console.log(`[hinkalSwap] resolving fee structure`);let C=v??await s.getFeeStructure(b,_,x,h,void 0,35n);console.log(`[hinkalSwap] feeStructure`,C),p.mergeWithFeeStructure(b,x,a,C),console.log(`[hinkalSwap] deltaAmounts after fee merge`,a);let w=f.getExternalSwapAddress(b,h);console.log(`[hinkalSwap] externalAddress`,w);let T={externalActionId:h,externalAddress:w,externalActionMetadata:g};console.log(`[hinkalSwap] externalActionData`,T),console.log(`[hinkalSwap] loading relay, kyc data, and utxos`);let[E,{patchAccessTokenMerkleTree:D,signatureData:O},{inputUtxosArray:k,outputUtxosArray:A}]=await Promise.all([n.getRandomRelay(b,!0),c.getKycAndSignatureData(n,b,x,a,S),m(n,b,x,a)]);if(console.log(`[hinkalSwap] relay and proof inputs ready`,{relay:E,hasPatchAccessTokenMerkleTree:!!D,hasSignatureData:!!O,inputUtxoGroups:k.length,outputUtxoGroups:A.length,inputUtxoSizes:k.map(e=>e.length),outputUtxoSizes:A.map(e=>e.length)}),!E)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let j=`swapperM${a.length.toString()}x${k[0].length}x1`;console.log(`[hinkalSwap] circuitName`,j);let M=[!1,!0,!1].slice(0,a.length);console.log(`[hinkalSwap] onChainCreation`,M),console.log(`[hinkalSwap] constructing zk proof and commitment validation data`);let[{zkCallData:N,circomData:P,dimData:F},I]=await Promise.all([u.constructZkProof(n.merkleTreeHinkalByChain[b],n.merkleTreeAccessTokenByChain[b],k,A,n.userKeys,j,T.externalActionId,T.externalAddress,T.externalActionMetadata,n.generateProofRemotely,E,b,M,void 0,void 0,D,void 0,C,n.getContractWithFetcher(b,e.ContractType.HinkalHelperContract),O),l.buildCommitmentValidationData(b,n.userKeys,x,k)]);console.log(`[hinkalSwap] proof data ready`,{zkCallDataLength:N?.length,circomDataLength:Array.isArray(P)?P.length:void 0,dimDataLength:Array.isArray(F)?F.length:void 0,commitmentValidationData:I});let L=o.constructAdminData(y,b,x,a,S,i);console.log(`[hinkalSwap] adminData`,L),console.log(`[hinkalSwap] calling transactCallRelayer`);let R=await d.transactCallRelayer(b,N,F,P,I,void 0,void 0,L);return console.log(`[hinkalSwap] txHash`,R),R};exports.hinkalSwap=h;
1
+ require(`../../constants/protocol.constants.cjs`);const e=require(`../../types/ethereum-network.types.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/time.utils.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/pre-transaction/getFeeStructure.cjs`),c=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),l=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const u=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),d=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),f=require(`../../functions/pre-transaction/getExternalSwapAddress.cjs`),p=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var m=async(e,t,r,o)=>{let s=[...await i.addPaddingToUtxos(e,t,r,o)],c=[],l=n.getCurrentTimeInSeconds().toString();for(let t=0;t<r.length;t+=1){let{outputUtxos:n}=a.outputUtxoProcessing(e.userKeys,s[t],o[t],l);c.push(n)}return{inputUtxosArray:s,outputUtxosArray:c}},h=async(n,i,a,h,g,_,v,y)=>{let b=r.validateAndGetChainId(i),x=i.map(e=>e.erc20TokenAddress),S=await n.getEthereumAddressByChain(b),C=v??await s.getFeeStructure(b,_,x,h,void 0,35n);p.mergeWithFeeStructure(b,x,a,C);let w={externalActionId:h,externalAddress:f.getExternalSwapAddress(b,h),externalActionMetadata:g},[T,{patchAccessTokenMerkleTree:E,signatureData:D},{inputUtxosArray:O,outputUtxosArray:k}]=await Promise.all([n.getRandomRelay(b,!0),c.getKycAndSignatureData(n,b,x,a,S),m(n,b,x,a)]);if(!T)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let A=`swapperM${a.length.toString()}x${O[0].length}x1`,j=[!1,!0,!1].slice(0,a.length),[{zkCallData:M,circomData:N,dimData:P},F]=await Promise.all([u.constructZkProof(n.merkleTreeHinkalByChain[b],n.merkleTreeAccessTokenByChain[b],O,k,n.userKeys,A,w.externalActionId,w.externalAddress,w.externalActionMetadata,n.generateProofRemotely,T,b,j,void 0,void 0,E,void 0,C,n.getContractWithFetcher(b,e.ContractType.HinkalHelperContract),D),l.buildCommitmentValidationData(b,n.userKeys,x,O)]);return await d.transactCallRelayer(b,M,P,N,F,void 0,void 0,o.constructAdminData(y,b,x,a,S,i))};exports.hinkalSwap=h;
@@ -26,64 +26,24 @@ var m = async (e, t, r, o) => {
26
26
  outputUtxosArray: c
27
27
  };
28
28
  }, h = async (n, i, a, h, g, _, v, y) => {
29
- console.log("[hinkalSwap] start", {
30
- tokenCount: i.length,
31
- deltaAmounts: a,
29
+ let b = r(i), x = i.map((e) => e.erc20TokenAddress), S = await n.getEthereumAddressByChain(b), C = v ?? await s(b, _, x, h, void 0, 35n);
30
+ p(b, x, a, C);
31
+ let w = {
32
32
  externalActionId: h,
33
- data: g,
34
- feeToken: _,
35
- hasFeeStructureOverride: !!v,
36
- action: y
37
- });
38
- let b = r(i);
39
- console.log("[hinkalSwap] chainId", b);
40
- let x = i.map((e) => e.erc20TokenAddress);
41
- console.log("[hinkalSwap] erc20Addresses", x);
42
- let S = await n.getEthereumAddressByChain(b);
43
- console.log("[hinkalSwap] ethereumAddress", S), console.log("[hinkalSwap] resolving fee structure");
44
- let C = v ?? await s(b, _, x, h, void 0, 35n);
45
- console.log("[hinkalSwap] feeStructure", C), p(b, x, a, C), console.log("[hinkalSwap] deltaAmounts after fee merge", a);
46
- let w = f(b, h);
47
- console.log("[hinkalSwap] externalAddress", w);
48
- let T = {
49
- externalActionId: h,
50
- externalAddress: w,
33
+ externalAddress: f(b, h),
51
34
  externalActionMetadata: g
52
- };
53
- console.log("[hinkalSwap] externalActionData", T), console.log("[hinkalSwap] loading relay, kyc data, and utxos");
54
- let [E, { patchAccessTokenMerkleTree: D, signatureData: O }, { inputUtxosArray: k, outputUtxosArray: A }] = await Promise.all([
35
+ }, [T, { patchAccessTokenMerkleTree: E, signatureData: D }, { inputUtxosArray: O, outputUtxosArray: k }] = await Promise.all([
55
36
  n.getRandomRelay(b, !0),
56
37
  c(n, b, x, a, S),
57
38
  m(n, b, x, a)
58
39
  ]);
59
- if (console.log("[hinkalSwap] relay and proof inputs ready", {
60
- relay: E,
61
- hasPatchAccessTokenMerkleTree: !!D,
62
- hasSignatureData: !!O,
63
- inputUtxoGroups: k.length,
64
- outputUtxoGroups: A.length,
65
- inputUtxoSizes: k.map((e) => e.length),
66
- outputUtxoSizes: A.map((e) => e.length)
67
- }), !E) throw Error(t.RELAYER_NOT_AVAILABLE);
68
- let j = `swapperM${a.length.toString()}x${k[0].length}x1`;
69
- console.log("[hinkalSwap] circuitName", j);
70
- let M = [
40
+ if (!T) throw Error(t.RELAYER_NOT_AVAILABLE);
41
+ let A = `swapperM${a.length.toString()}x${O[0].length}x1`, j = [
71
42
  !1,
72
43
  !0,
73
44
  !1
74
- ].slice(0, a.length);
75
- console.log("[hinkalSwap] onChainCreation", M), console.log("[hinkalSwap] constructing zk proof and commitment validation data");
76
- let [{ zkCallData: N, circomData: P, dimData: F }, I] = await Promise.all([u(n.merkleTreeHinkalByChain[b], n.merkleTreeAccessTokenByChain[b], k, A, n.userKeys, j, T.externalActionId, T.externalAddress, T.externalActionMetadata, n.generateProofRemotely, E, b, M, void 0, void 0, D, void 0, C, n.getContractWithFetcher(b, e.HinkalHelperContract), O), l(b, n.userKeys, x, k)]);
77
- console.log("[hinkalSwap] proof data ready", {
78
- zkCallDataLength: N?.length,
79
- circomDataLength: Array.isArray(P) ? P.length : void 0,
80
- dimDataLength: Array.isArray(F) ? F.length : void 0,
81
- commitmentValidationData: I
82
- });
83
- let L = o(y, b, x, a, S, i);
84
- console.log("[hinkalSwap] adminData", L), console.log("[hinkalSwap] calling transactCallRelayer");
85
- let R = await d(b, N, F, P, I, void 0, void 0, L);
86
- return console.log("[hinkalSwap] txHash", R), R;
45
+ ].slice(0, a.length), [{ zkCallData: M, circomData: N, dimData: P }, F] = await Promise.all([u(n.merkleTreeHinkalByChain[b], n.merkleTreeAccessTokenByChain[b], O, k, n.userKeys, A, w.externalActionId, w.externalAddress, w.externalActionMetadata, n.generateProofRemotely, T, b, j, void 0, void 0, E, void 0, C, n.getContractWithFetcher(b, e.HinkalHelperContract), D), l(b, n.userKeys, x, O)]);
46
+ return await d(b, M, P, N, F, void 0, void 0, o(y, b, x, a, S, i));
87
47
  };
88
48
  //#endregion
89
49
  export { h as hinkalSwap };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.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/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),g=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const _=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=async(e,t,n,r,i,o)=>{let s=[...await l.addPaddingToUtxos(e,t,n,r)],c=[],d=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,s[t],r[t],d,void 0,!0,i,t===0?o:0n);c.push(n)}return{inputUtxosArray:s,outputUtxosArray:c}},x=async(a,l,u,x,S,C,w)=>{console.log(`[hinkalTransfer] start`,{tokenCount:l.length,amountChangesBase:u,recipientAddress:x,feeToken:S,hasFeeStructureOverride:!!C,action:w});let T=c.validateAndGetChainId(l);console.log(`[hinkalTransfer] chainId`,T);let E=e.isTronLike(T);if(console.log(`[hinkalTransfer] isTron`,E),!o.isValidPrivateAddress(x))throw console.log(`[hinkalTransfer] invalid recipientAddress`,x),Error(i.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);console.log(`[hinkalTransfer] recipientAddress validated`);let D=s.addressToHexFormat(await a.getEthereumAddressByChain(T));console.log(`[hinkalTransfer] ethereumAddress`,D);let O=l.map(e=>e.erc20TokenAddress);console.log(`[hinkalTransfer] erc20Addresses`,O);let k=await f.modifyVolatileTokenAmountChanges(T,l,u);console.log(`[hinkalTransfer] amountChanges`,k),console.log(`[hinkalTransfer] resolving fee structure`);let A=C??await m.getFeeStructure(T,S,O,r.ExternalActionId.Transact,[],5n);console.log(`[hinkalTransfer] feeStructure initial`,A),A.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE,console.log(`[hinkalTransfer] feeStructure normalized`,A);let j=d.calculateTotalFee(-k[0],A);console.log(`[hinkalTransfer] totalFee`,j);let M=-k[0];console.log(`[hinkalTransfer] recipientAmount`,M);let N={feeToken:A.feeToken,flatFee:j,variableRate:0n};console.log(`[hinkalTransfer] transferFeeStructure`,N),y.mergeWithFeeStructure(T,O,k,N),console.log(`[hinkalTransfer] amountChanges after fee merge`,k);let P=l[0];if(console.log(`[hinkalTransfer] primary token`,P),!P)throw Error(`Transfer Action: No Token Found`);console.log(`[hinkalTransfer] loading relay, kyc data, and utxos`);let[F,{patchAccessTokenMerkleTree:I,signatureData:L},{inputUtxosArray:R,outputUtxosArray:z}]=await Promise.all([a.getRandomRelay(T,!0),h.getKycAndSignatureData(a,T,O,k,D),b(a,T,O,k,x,M)]);if(console.log(`[hinkalTransfer] relay and proof inputs ready`,{relay:F,hasPatchAccessTokenMerkleTree:!!I,hasSignatureData:!!L,inputUtxoGroups:R.length,outputUtxoGroups:z.length,inputUtxoSizes:R.map(e=>e.length),outputUtxoSizes:z.map(e=>e.length)}),!F)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let B={externalActionId:0n,externalAddress:F,externalActionMetadata:`0x00`};console.log(`[hinkalTransfer] externalActionData`,B);let V=`swapperM${k.length}x${R[0].length}x2`;console.log(`[hinkalTransfer] circuitName`,V),console.log(`[hinkalTransfer] constructing zk proof and commitment validation data`);let[{zkCallData:H,circomData:U,dimData:W},G]=await Promise.all([_.constructZkProof(a.merkleTreeHinkalByChain[T],a.merkleTreeAccessTokenByChain[T],R,z,a.userKeys,V,B.externalActionId,B.externalAddress,B.externalActionMetadata,a.generateProofRemotely,F,T,void 0,void 0,void 0,I,void 0,N,a.getContractWithFetcher(T,n.ContractType.HinkalHelperContract),L),g.buildCommitmentValidationData(T,a.userKeys,O,R)]);console.log(`[hinkalTransfer] proof data ready`,{zkCallDataLength:H?.length,circomDataLength:Array.isArray(U)?U.length:void 0,dimDataLength:Array.isArray(W)?W.length:void 0,commitmentValidationData:G});let K=await s.reorderZkCallData(E,H,W,U);console.log(`[hinkalTransfer] tronProofSignature`,K);let q=p.constructAdminData(w,T,O,k,D);console.log(`[hinkalTransfer] adminData`,q),console.log(`[hinkalTransfer] calling transactCallRelayer`);let J=await v.transactCallRelayer(T,H,W,U,G,void 0,void 0,q,K);return console.log(`[hinkalTransfer] txHash`,J),J};exports.hinkalTransfer=x;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.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/utils/fees.utils.cjs`),f=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),g=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const _=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=async(e,t,n,r,i,o)=>{let s=[...await l.addPaddingToUtxos(e,t,n,r)],c=[],d=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,s[t],r[t],d,void 0,!0,i,t===0?o:0n);c.push(n)}return{inputUtxosArray:s,outputUtxosArray:c}},x=async(a,l,u,x,S,C,w)=>{let T=c.validateAndGetChainId(l),E=e.isTronLike(T);if(!o.isValidPrivateAddress(x))throw Error(i.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let D=s.addressToHexFormat(await a.getEthereumAddressByChain(T)),O=l.map(e=>e.erc20TokenAddress),k=await f.modifyVolatileTokenAmountChanges(T,l,u),A=C??await m.getFeeStructure(T,S,O,r.ExternalActionId.Transact,[],5n);A.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let j=d.calculateTotalFee(-k[0],A),M=-k[0],N={feeToken:A.feeToken,flatFee:j,variableRate:0n};if(y.mergeWithFeeStructure(T,O,k,N),!l[0])throw Error(`Transfer Action: No Token Found`);let[P,{patchAccessTokenMerkleTree:F,signatureData:I},{inputUtxosArray:L,outputUtxosArray:R}]=await Promise.all([a.getRandomRelay(T,!0),h.getKycAndSignatureData(a,T,O,k,D),b(a,T,O,k,x,M)]);if(!P)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let z={externalActionId:0n,externalAddress:P,externalActionMetadata:`0x00`},B=`swapperM${k.length}x${L[0].length}x2`,[{zkCallData:V,circomData:H,dimData:U},W]=await Promise.all([_.constructZkProof(a.merkleTreeHinkalByChain[T],a.merkleTreeAccessTokenByChain[T],L,R,a.userKeys,B,z.externalActionId,z.externalAddress,z.externalActionMetadata,a.generateProofRemotely,P,T,void 0,void 0,void 0,F,void 0,N,a.getContractWithFetcher(T,n.ContractType.HinkalHelperContract),I),g.buildCommitmentValidationData(T,a.userKeys,O,L)]),G=await s.reorderZkCallData(E,V,U,H);return await v.transactCallRelayer(T,V,U,H,W,void 0,void 0,p.constructAdminData(w,T,O,k,D),G)};exports.hinkalTransfer=x;
@@ -32,75 +32,28 @@ var x = async (e, t, n, r, i, o) => {
32
32
  outputUtxosArray: c
33
33
  };
34
34
  }, S = async (a, u, d, S, C, w, T) => {
35
- console.log("[hinkalTransfer] start", {
36
- tokenCount: u.length,
37
- amountChangesBase: d,
38
- recipientAddress: S,
39
- feeToken: C,
40
- hasFeeStructureOverride: !!w,
41
- action: T
42
- });
43
- let E = l(u);
44
- console.log("[hinkalTransfer] chainId", E);
45
- let D = e(E);
46
- if (console.log("[hinkalTransfer] isTron", D), !o(S)) throw console.log("[hinkalTransfer] invalid recipientAddress", S), Error(i.RECIPIENT_FORMAT_INCORRECT);
47
- console.log("[hinkalTransfer] recipientAddress validated");
48
- let O = s(await a.getEthereumAddressByChain(E));
49
- console.log("[hinkalTransfer] ethereumAddress", O);
50
- let k = u.map((e) => e.erc20TokenAddress);
51
- console.log("[hinkalTransfer] erc20Addresses", k);
52
- let A = await p(E, u, d);
53
- console.log("[hinkalTransfer] amountChanges", A), console.log("[hinkalTransfer] resolving fee structure");
54
- let j = w ?? await h(E, C, k, r.Transact, [], 5n);
55
- console.log("[hinkalTransfer] feeStructure initial", j), j.variableRate ||= t, console.log("[hinkalTransfer] feeStructure normalized", j);
56
- let M = f(-A[0], j);
57
- console.log("[hinkalTransfer] totalFee", M);
58
- let N = -A[0];
59
- console.log("[hinkalTransfer] recipientAmount", N);
60
- let P = {
35
+ let E = l(u), D = e(E);
36
+ if (!o(S)) throw Error(i.RECIPIENT_FORMAT_INCORRECT);
37
+ let O = s(await a.getEthereumAddressByChain(E)), k = u.map((e) => e.erc20TokenAddress), A = await p(E, u, d), j = w ?? await h(E, C, k, r.Transact, [], 5n);
38
+ j.variableRate ||= t;
39
+ let M = f(-A[0], j), N = -A[0], P = {
61
40
  feeToken: j.feeToken,
62
41
  flatFee: M,
63
42
  variableRate: 0n
64
43
  };
65
- console.log("[hinkalTransfer] transferFeeStructure", P), b(E, k, A, P), console.log("[hinkalTransfer] amountChanges after fee merge", A);
66
- let F = u[0];
67
- if (console.log("[hinkalTransfer] primary token", F), !F) throw Error("Transfer Action: No Token Found");
68
- console.log("[hinkalTransfer] loading relay, kyc data, and utxos");
69
- let [I, { patchAccessTokenMerkleTree: L, signatureData: R }, { inputUtxosArray: z, outputUtxosArray: B }] = await Promise.all([
44
+ if (b(E, k, A, P), !u[0]) throw Error("Transfer Action: No Token Found");
45
+ let [F, { patchAccessTokenMerkleTree: I, signatureData: L }, { inputUtxosArray: R, outputUtxosArray: z }] = await Promise.all([
70
46
  a.getRandomRelay(E, !0),
71
47
  g(a, E, k, A, O),
72
48
  x(a, E, k, A, S, N)
73
49
  ]);
74
- if (console.log("[hinkalTransfer] relay and proof inputs ready", {
75
- relay: I,
76
- hasPatchAccessTokenMerkleTree: !!L,
77
- hasSignatureData: !!R,
78
- inputUtxoGroups: z.length,
79
- outputUtxoGroups: B.length,
80
- inputUtxoSizes: z.map((e) => e.length),
81
- outputUtxoSizes: B.map((e) => e.length)
82
- }), !I) throw Error(i.RELAYER_NOT_AVAILABLE);
83
- let V = {
50
+ if (!F) throw Error(i.RELAYER_NOT_AVAILABLE);
51
+ let B = {
84
52
  externalActionId: 0n,
85
- externalAddress: I,
53
+ externalAddress: F,
86
54
  externalActionMetadata: "0x00"
87
- };
88
- console.log("[hinkalTransfer] externalActionData", V);
89
- let H = `swapperM${A.length}x${z[0].length}x2`;
90
- console.log("[hinkalTransfer] circuitName", H), console.log("[hinkalTransfer] constructing zk proof and commitment validation data");
91
- let [{ zkCallData: U, circomData: W, dimData: G }, K] = await Promise.all([v(a.merkleTreeHinkalByChain[E], a.merkleTreeAccessTokenByChain[E], z, B, a.userKeys, H, V.externalActionId, V.externalAddress, V.externalActionMetadata, a.generateProofRemotely, I, E, void 0, void 0, void 0, L, void 0, P, a.getContractWithFetcher(E, n.HinkalHelperContract), R), _(E, a.userKeys, k, z)]);
92
- console.log("[hinkalTransfer] proof data ready", {
93
- zkCallDataLength: U?.length,
94
- circomDataLength: Array.isArray(W) ? W.length : void 0,
95
- dimDataLength: Array.isArray(G) ? G.length : void 0,
96
- commitmentValidationData: K
97
- });
98
- let q = await c(D, U, G, W);
99
- console.log("[hinkalTransfer] tronProofSignature", q);
100
- let J = m(T, E, k, A, O);
101
- console.log("[hinkalTransfer] adminData", J), console.log("[hinkalTransfer] calling transactCallRelayer");
102
- let Y = await y(E, U, G, W, K, void 0, void 0, J, q);
103
- return console.log("[hinkalTransfer] txHash", Y), Y;
55
+ }, V = `swapperM${A.length}x${R[0].length}x2`, [{ zkCallData: H, circomData: U, dimData: W }, G] = await Promise.all([v(a.merkleTreeHinkalByChain[E], a.merkleTreeAccessTokenByChain[E], R, z, a.userKeys, V, B.externalActionId, B.externalAddress, B.externalActionMetadata, a.generateProofRemotely, F, E, void 0, void 0, void 0, I, void 0, P, a.getContractWithFetcher(E, n.HinkalHelperContract), L), _(E, a.userKeys, k, R)]), K = await c(D, H, W, U);
56
+ return await y(E, H, W, U, G, void 0, void 0, m(T, E, k, A, O), K);
104
57
  };
105
58
  //#endregion
106
59
  export { S as hinkalTransfer };
@@ -1 +1 @@
1
- const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/utils/fees.utils.cjs`),d=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),h=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=async(e,t,n,r)=>{let i=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},x=async(a,c,l,x,S,C,w,T)=>{console.log(`[hinkalWithdraw] start`,{tokenCount:c.length,deltaAmountsBase:l,recipientAddress:x,isRelayerOff:S,feeToken:C,hasFeeStructureOverride:!!w,action:T});let E=s.validateAndGetChainId(c);console.log(`[hinkalWithdraw] chainId`,E);let D=e.isTronLike(E);console.log(`[hinkalWithdraw] isTron`,D);let O=o.addressToHexFormat(await a.getEthereumAddressByChain(E));console.log(`[hinkalWithdraw] ethereumAddress`,O);let k=c.map(e=>e.erc20TokenAddress);console.log(`[hinkalWithdraw] erc20Addresses`,k);let A=await d.modifyVolatileTokenAmountChanges(E,c,l);console.log(`[hinkalWithdraw] deltaAmounts`,A);let j;if(console.log(`[hinkalWithdraw] feeStructure initialized as undefined`),!S){console.log(`[hinkalWithdraw] resolving relayer fee structure`);let e=w??await p.getFeeStructure(E,C,k,r.ExternalActionId.Transact);console.log(`[hinkalWithdraw] rawFeeStructure`,e);let t=u.calculateTotalFee(-A[0],e);console.log(`[hinkalWithdraw] totalFee`,t),j={feeToken:e.feeToken,flatFee:t,variableRate:0n},console.log(`[hinkalWithdraw] feeStructure`,j),y.mergeWithFeeStructure(E,k,A,j),console.log(`[hinkalWithdraw] deltaAmounts after fee merge`,A)}let M=c[0];if(console.log(`[hinkalWithdraw] primary token`,M),!M)throw Error(`Deposit Action: No Token Found`);let N={externalActionId:0n,externalAddress:o.addressToHexFormat(x),externalActionMetadata:`0x00`};console.log(`[hinkalWithdraw] externalActionData`,N),console.log(`[hinkalWithdraw] loading relay, kyc data, and utxos`);let[P,{patchAccessTokenMerkleTree:F,signatureData:I},{inputUtxosArray:L,outputUtxosArray:R}]=await Promise.all([a.getRandomRelay(E,!0),m.getKycAndSignatureData(a,E,k,A,O),b(a,E,k,A)]);if(console.log(`[hinkalWithdraw] relay and proof inputs ready`,{relay:P,hasPatchAccessTokenMerkleTree:!!F,hasSignatureData:!!I,inputUtxoGroups:L.length,outputUtxoGroups:R.length,inputUtxoSizes:L.map(e=>e.length),outputUtxoSizes:R.map(e=>e.length)}),!S&&!P)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let z=`swapperM${A.length.toString()}x${L[0].length}x1`;console.log(`[hinkalWithdraw] circuitName`,z),console.log(`[hinkalWithdraw] constructing zk proof and commitment validation data`);let[{zkCallData:B,circomData:V,dimData:H},U]=await Promise.all([g.constructZkProof(a.merkleTreeHinkalByChain[E],a.merkleTreeAccessTokenByChain[E],L,R,a.userKeys,z,N.externalActionId,N.externalAddress,N.externalActionMetadata,a.generateProofRemotely,S?t.zeroAddress:P,E,void 0,void 0,void 0,F,void 0,j,a.getContractWithFetcher(E,n.ContractType.HinkalHelperContract),I,S?O:void 0),h.buildCommitmentValidationData(E,a.userKeys,k,L)]);console.log(`[hinkalWithdraw] proof data ready`,{zkCallDataLength:B?.length,circomDataLength:Array.isArray(V)?V.length:void 0,dimDataLength:Array.isArray(H)?H.length:void 0,commitmentValidationData:U});let W=await o.reorderZkCallData(D,B,H,V);if(console.log(`[hinkalWithdraw] tronProofSignature`,W),S){if(console.log(`[hinkalWithdraw] relayer disabled, using direct transaction path`),!M)throw Error(`Withdraw Action: No Token Found`);let e=await _.transactCallDirect(a,E,A[0],M,B,V,H);return console.log(`[hinkalWithdraw] direct transaction result`,e),e}let G=f.constructAdminData(T,E,k,A,O);console.log(`[hinkalWithdraw] adminData`,G),console.log(`[hinkalWithdraw] calling transactCallRelayer`);let K=await v.transactCallRelayer(E,B,H,V,U,void 0,void 0,G,W);return console.log(`[hinkalWithdraw] txHash`,K),K};exports.hinkalWithdraw=x;
1
+ const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/utils/fees.utils.cjs`),d=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/getKycAndSignatureData.cjs`),h=require(`../../functions/pre-transaction/buildCommitmentValidationData.cjs`);require(`../../functions/pre-transaction/index.cjs`);const g=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),v=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=async(e,t,n,r)=>{let i=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},x=async(a,c,l,x,S,C,w,T)=>{let E=s.validateAndGetChainId(c),D=e.isTronLike(E),O=o.addressToHexFormat(await a.getEthereumAddressByChain(E)),k=c.map(e=>e.erc20TokenAddress),A=await d.modifyVolatileTokenAmountChanges(E,c,l),j;if(!S){let e=w??await p.getFeeStructure(E,C,k,r.ExternalActionId.Transact),t=u.calculateTotalFee(-A[0],e);j={feeToken:e.feeToken,flatFee:t,variableRate:0n},y.mergeWithFeeStructure(E,k,A,j)}let M=c[0];if(!M)throw Error(`Deposit Action: No Token Found`);let N={externalActionId:0n,externalAddress:o.addressToHexFormat(x),externalActionMetadata:`0x00`},[P,{patchAccessTokenMerkleTree:F,signatureData:I},{inputUtxosArray:L,outputUtxosArray:R}]=await Promise.all([a.getRandomRelay(E,!0),m.getKycAndSignatureData(a,E,k,A,O),b(a,E,k,A)]);if(!S&&!P)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let z=`swapperM${A.length.toString()}x${L[0].length}x1`,[{zkCallData:B,circomData:V,dimData:H},U]=await Promise.all([g.constructZkProof(a.merkleTreeHinkalByChain[E],a.merkleTreeAccessTokenByChain[E],L,R,a.userKeys,z,N.externalActionId,N.externalAddress,N.externalActionMetadata,a.generateProofRemotely,S?t.zeroAddress:P,E,void 0,void 0,void 0,F,void 0,j,a.getContractWithFetcher(E,n.ContractType.HinkalHelperContract),I,S?O:void 0),h.buildCommitmentValidationData(E,a.userKeys,k,L)]),W=await o.reorderZkCallData(D,B,H,V);if(S){if(!M)throw Error(`Withdraw Action: No Token Found`);return await _.transactCallDirect(a,E,A[0],M,B,V,H)}return await v.transactCallRelayer(E,B,H,V,U,void 0,void 0,f.constructAdminData(T,E,k,A,O),W)};exports.hinkalWithdraw=x;