@hinkal/common 0.2.33 → 0.2.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API/callNearIntentsAPI.cjs +1 -0
- package/API/callNearIntentsAPI.d.ts +3 -0
- package/API/callNearIntentsAPI.mjs +8 -0
- package/API/enclaveSignatureCalls.cjs +1 -1
- package/API/enclaveSignatureCalls.d.ts +1 -1
- package/API/enclaveSignatureCalls.mjs +1 -1
- package/API/index.cjs +1 -1
- package/API/index.d.ts +1 -0
- package/API/index.mjs +1 -0
- package/constants/bridging.constants.cjs +1 -1
- package/constants/bridging.constants.d.ts +15 -1
- package/constants/bridging.constants.mjs +25 -5
- package/constants/chains.constants.cjs +1 -1
- package/constants/chains.constants.d.ts +12 -1
- package/constants/chains.constants.mjs +94 -26
- package/constants/index.cjs +1 -1
- package/constants/index.mjs +1 -0
- package/constants/protocol.constants.cjs +1 -1
- package/constants/protocol.constants.d.ts +3 -0
- package/constants/protocol.constants.mjs +2 -2
- package/constants/server.constants.cjs +1 -1
- package/constants/server.constants.d.ts +2 -0
- package/constants/server.constants.mjs +2 -0
- package/constants/token-data/ERC20Registry.cjs +1 -1
- package/constants/token-data/ERC20Registry.mjs +49 -14
- package/constants/token-data/avalancheRegistry.json.cjs +1 -0
- package/constants/token-data/avalancheRegistry.json.mjs +44 -0
- package/constants/token-data/bnbMainnetRegistry.json.cjs +1 -0
- package/constants/token-data/bnbMainnetRegistry.json.mjs +44 -0
- package/constants/token-data/cronosRegistry.json.cjs +1 -0
- package/constants/token-data/cronosRegistry.json.mjs +44 -0
- package/constants/token-data/hyperEvmRegistry.json.cjs +1 -0
- package/constants/token-data/hyperEvmRegistry.json.mjs +36 -0
- package/constants/token-data/index.cjs +1 -1
- package/constants/token-data/index.d.ts +58 -1
- package/constants/token-data/index.mjs +10 -2
- package/constants/token-data/inkRegistry.json.cjs +1 -0
- package/constants/token-data/inkRegistry.json.mjs +28 -0
- package/constants/token-data/monadRegistry.json.cjs +1 -0
- package/constants/token-data/monadRegistry.json.mjs +36 -0
- package/constants/token-data/plasmaRegistry.json.cjs +1 -0
- package/constants/token-data/plasmaRegistry.json.mjs +28 -0
- package/constants/token-data/popularNonRebasingTokens.cjs +1 -0
- package/constants/token-data/popularNonRebasingTokens.d.ts +2 -0
- package/constants/token-data/popularNonRebasingTokens.mjs +11 -0
- package/constants/tokens.constants.cjs +1 -1
- package/constants/tokens.constants.mjs +8 -1
- package/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/data-structures/Hinkal/Hinkal.d.ts +8 -2
- package/data-structures/Hinkal/Hinkal.mjs +123 -101
- package/data-structures/Hinkal/IHinkal.d.ts +8 -2
- package/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/data-structures/Hinkal/handleAutoDepositBack.mjs +15 -15
- package/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
- package/data-structures/Hinkal/hinkalClaimUtxo.mjs +33 -35
- package/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndBridge.mjs +43 -49
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +38 -40
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.cjs +1 -0
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.d.ts +6 -0
- package/data-structures/Hinkal/hinkalNearDepositAndBridge.mjs +43 -0
- package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/data-structures/Hinkal/hinkalPrivateWallet.mjs +21 -26
- package/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +62 -64
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.d.ts +2 -2
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +36 -36
- package/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySend.mjs +7 -7
- package/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxyShield.mjs +9 -9
- package/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaProxySwap.mjs +8 -8
- package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaSwap.mjs +50 -51
- package/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaTransfer.mjs +45 -46
- package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +38 -39
- package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSwap.mjs +18 -19
- package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalTransfer.mjs +21 -22
- package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdraw.mjs +24 -25
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +39 -41
- package/data-structures/Hinkal/index.cjs +1 -1
- package/data-structures/Hinkal/index.d.ts +1 -0
- package/data-structures/Hinkal/index.mjs +1 -0
- package/data-structures/crypto-keys/keys.cjs +1 -1
- package/data-structures/crypto-keys/keys.d.ts +18 -0
- package/data-structures/crypto-keys/keys.mjs +10 -0
- package/data-structures/index.cjs +1 -1
- package/data-structures/index.mjs +1 -0
- package/error-handling/error-codes.constants.cjs +1 -1
- package/error-handling/error-codes.constants.d.ts +4 -0
- package/error-handling/error-codes.constants.mjs +4 -0
- package/error-handling/get-error.message.cjs +1 -1
- package/error-handling/get-error.message.mjs +2 -1
- package/functions/index.cjs +1 -1
- package/functions/index.mjs +8 -6
- package/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/functions/pre-transaction/buildCommitmentValidationData.d.ts +12 -2
- package/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -36
- package/functions/pre-transaction/sendV0Transaction.cjs +2 -1
- package/functions/pre-transaction/sendV0Transaction.d.ts +2 -2
- package/functions/pre-transaction/sendV0Transaction.mjs +65 -60
- package/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/functions/snarkjs/constructGeneralZkProof.d.ts +1 -0
- package/functions/snarkjs/constructGeneralZkProof.mjs +6 -5
- package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/functions/snarkjs/constructSolanaZkProof.d.ts +1 -0
- package/functions/snarkjs/constructSolanaZkProof.mjs +35 -34
- package/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -0
- package/functions/snarkjs/generateMainAndCommitmentZkProof.d.ts +11 -0
- package/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +16 -0
- package/functions/snarkjs/generateZkProof.cjs +1 -1
- package/functions/snarkjs/generateZkProof.d.ts +3 -3
- package/functions/snarkjs/generateZkProof.mjs +5 -9
- package/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
- package/functions/snarkjs/generateZkProofEnclave.d.ts +2 -2
- package/functions/snarkjs/generateZkProofEnclave.mjs +8 -8
- package/functions/snarkjs/generateZkProofSelf.cjs +1 -1
- package/functions/snarkjs/generateZkProofSelf.mjs +5 -5
- package/functions/snarkjs/index.cjs +1 -1
- package/functions/snarkjs/index.d.ts +1 -0
- package/functions/snarkjs/index.mjs +1 -0
- package/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
- package/functions/snarkjs/verifyCommitmentValidationData.mjs +5 -5
- package/functions/utils/customEnclaveFunctionsRegister.d.ts +3 -3
- package/functions/utils/enclave-signature-storage.cjs +1 -1
- package/functions/utils/enclave-signature-storage.d.ts +1 -1
- package/functions/utils/enclave-signature-storage.mjs +1 -1
- package/functions/utils/index.cjs +1 -1
- package/functions/utils/index.d.ts +1 -0
- package/functions/utils/index.mjs +6 -5
- package/functions/utils/nearIntents.utils.cjs +1 -0
- package/functions/utils/nearIntents.utils.d.ts +11 -0
- package/functions/utils/nearIntents.utils.mjs +36 -0
- package/functions/utils/time.utils.cjs +1 -1
- package/functions/utils/time.utils.d.ts +1 -0
- package/functions/utils/time.utils.mjs +2 -2
- package/functions/web3/oneInchAPI.cjs +1 -1
- package/functions/web3/oneInchAPI.mjs +1 -1
- package/index.cjs +1 -1
- package/index.mjs +320 -315
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/near-intents.types.d.ts +60 -0
- package/types/solana.types.d.ts +1 -0
- package/webworker/{logError-fCJ4HXQz.js → logError-DoUkEIFE.js} +14 -14
- package/webworker/package.json +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/snarkjsWorkerNode.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/utxoWorkerNode.cjs +1 -1
- package/webworker/viteWorkerURL.constant.cjs +3 -3
- package/webworker/viteWorkerURL.constant.mjs +3 -3
- package/webworker/{workerProxy-BNBqYien.js → workerProxy-DQJE57Ye.js} +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/webworker/zkProofWorkerNode.cjs +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`);require(`../../constants/index.cjs`);const r=require(`../../API/admin-calls.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`);require(`../../constants/index.cjs`);const r=require(`../../API/admin-calls.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../AccountActions/AccountActions.cjs`),c=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),l=require(`../../functions/pre-transaction/getFeeStructure.cjs`),u=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);require(`../AccountActions/index.cjs`);let d=require(`@solana/web3.js`);var f=async(e,t)=>{let{addressLookupTableAccount:n,instructionLists:r}=JSON.parse(t).data,i=await Promise.all(n.map(async t=>{let n=await e.getAddressLookupTable(new d.PublicKey(t));if(!n.value)throw Error(`Failed to fetch lookup table: ${t}`);return n.value}));if(r.length===0)throw Error(`No instructions found`);return{instructions:r.map(e=>new d.TransactionInstruction({keys:e.accounts.map(e=>({pubkey:new d.PublicKey(e.pubkey),isSigner:e.isSigner,isWritable:e.isWritable})),programId:new d.PublicKey(e.programId),data:Buffer.from(e.data,`base64`)})),lookupTableAccounts:i}},p=async(e,t)=>{let n=d.VersionedTransaction.deserialize(Buffer.from(t,`base64`)),r=await Promise.all(n.message.addressTableLookups.map(async({accountKey:t})=>{let n=await e.getAddressLookupTable(t);if(!n.value)throw Error(`Failed to fetch lookup table: ${t.toBase58()}`);return n.value})),{instructions:i}=d.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:r});return{instructions:i,lookupTableAccounts:r}},m=async(n,r,i,a)=>{let c=s.AccountActions.getAddressFromSubAccount(n,i);if(!c)throw Error(`Public account address is not available`);let{fetchRpcUrl:l}=t.networkRegistry[n];if(!l)throw Error(`RPC URL not found for the specified chain ID`);let u=o.createCustomSolanaConnection(l),m=new d.PublicKey(c),{instructions:h,lookupTableAccounts:g}=a===e.ExternalActionId.Lifi?await p(u,r):await f(u,r);return{connection:u,walletPublicKey:m,instructions:h,lookupTableAccounts:g}},h=async(t,o,s,f,p,h,g,_,v)=>{let y=i.validateAndGetChainId(o),b=h===e.ExternalActionId.Lifi,[{connection:x,walletPublicKey:S,instructions:C,lookupTableAccounts:w},T,E]=await Promise.all([m(y,f,p,h),b?Promise.resolve(null):t.getRandomRelay(y),t.getEthereumAddressByChain(y)]),D=C;if(!b){if(!T)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let t=o[1],r=s[1]*(_??await l.getFeeStructure(y,g,o.map(e=>e.erc20TokenAddress),e.ExternalActionId.Emporium)).variableRate/10000n,{instructions:i}=await u.buildSolanaTransferInstructions(x,S,new d.PublicKey(T),t,r);D=[...C,...i]}let O=await c.sendProxyV0Transaction({connection:x,chainId:y,subAccount:p,payerPublicKey:S,instructions:D,lookupTableAccounts:w});return r.emitTxPublicData(a.constructAdminData(v,y,o.map(e=>e.erc20TokenAddress),s,E,o)),O},g=async(t,n,r,i)=>{if(i===e.ExternalActionId.Lifi)return n;let{connection:a,walletPublicKey:o,instructions:s,lookupTableAccounts:l}=await m(t,n,r,i);return c.serializeProxyV0Transaction(a,o,s,l)};exports.getSolanaProxySwapSerializedTransaction=g,exports.hinkalSolanaProxySwap=h;
|
|
@@ -4,8 +4,8 @@ import { transactionErrorCodes as n } from "../../error-handling/error-codes.con
|
|
|
4
4
|
import "../../constants/index.mjs";
|
|
5
5
|
import { emitTxPublicData as r } from "../../API/admin-calls.mjs";
|
|
6
6
|
import { validateAndGetChainId as i } from "../../functions/utils/token-check.utils.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { constructAdminData as a } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
8
|
+
import { createCustomSolanaConnection as o } from "../../functions/utils/create-provider.mjs";
|
|
9
9
|
import { AccountActions as s } from "../AccountActions/AccountActions.mjs";
|
|
10
10
|
import { sendProxyV0Transaction as c, serializeProxyV0Transaction as l } from "../../functions/pre-transaction/sendV0Transaction.mjs";
|
|
11
11
|
import { getFeeStructure as u } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
@@ -42,27 +42,27 @@ var g = async (e, t) => {
|
|
|
42
42
|
instructions: i,
|
|
43
43
|
lookupTableAccounts: r
|
|
44
44
|
};
|
|
45
|
-
}, v = async (n, r, i,
|
|
45
|
+
}, v = async (n, r, i, a) => {
|
|
46
46
|
let c = s.getAddressFromSubAccount(n, i);
|
|
47
47
|
if (!c) throw Error("Public account address is not available");
|
|
48
48
|
let { fetchRpcUrl: l } = t[n];
|
|
49
49
|
if (!l) throw Error("RPC URL not found for the specified chain ID");
|
|
50
|
-
let u =
|
|
50
|
+
let u = o(l), d = new f(c), { instructions: p, lookupTableAccounts: m } = a === e.Lifi ? await _(u, r) : await g(u, r);
|
|
51
51
|
return {
|
|
52
52
|
connection: u,
|
|
53
53
|
walletPublicKey: d,
|
|
54
54
|
instructions: p,
|
|
55
55
|
lookupTableAccounts: m
|
|
56
56
|
};
|
|
57
|
-
}, y = async (t,
|
|
58
|
-
let y = i(
|
|
57
|
+
}, y = async (t, o, s, l, p, m, h, g, _) => {
|
|
58
|
+
let y = i(o), b = m === e.Lifi, [{ connection: x, walletPublicKey: S, instructions: C, lookupTableAccounts: w }, T, E] = await Promise.all([
|
|
59
59
|
v(y, l, p, m),
|
|
60
60
|
b ? Promise.resolve(null) : t.getRandomRelay(y),
|
|
61
61
|
t.getEthereumAddressByChain(y)
|
|
62
62
|
]), D = C;
|
|
63
63
|
if (!b) {
|
|
64
64
|
if (!T) throw Error(n.RELAYER_NOT_AVAILABLE);
|
|
65
|
-
let t =
|
|
65
|
+
let t = o[1], r = s[1] * (g ?? await u(y, h, o.map((e) => e.erc20TokenAddress), e.Emporium)).variableRate / 10000n, { instructions: i } = await d(x, S, new f(T), t, r);
|
|
66
66
|
D = [...C, ...i];
|
|
67
67
|
}
|
|
68
68
|
let O = await c({
|
|
@@ -73,7 +73,7 @@ var g = async (e, t) => {
|
|
|
73
73
|
instructions: D,
|
|
74
74
|
lookupTableAccounts: w
|
|
75
75
|
});
|
|
76
|
-
return r(
|
|
76
|
+
return r(a(_, y, o.map((e) => e.erc20TokenAddress), s, E, o)), O;
|
|
77
77
|
}, b = async (t, n, r, i) => {
|
|
78
78
|
if (i === e.Lifi) return n;
|
|
79
79
|
let { connection: a, walletPublicKey: o, instructions: s, lookupTableAccounts: c } = await v(t, n, r, i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../crypto-keys/keys.cjs`),s=require(`../../functions/utils/time.utils.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../crypto-keys/keys.cjs`),s=require(`../../functions/utils/time.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/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/solana.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),ee=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),m=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`),y=require(`@solana/web3.js`);var b=async(e,t,n,r)=>{let i=[...await l.addPaddingToUtxos(e,t,n,r,6)],a=s.getCurrentTimeInSeconds().toString(),o=[];for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,i[t],r[t],a);o.push([n[0]])}return{inputUtxosArray:i,outputUtxosArray:o}},x=async(s,l,u,x,te,S,C,w,T)=>{let E=c.validateAndGetChainId(l),D=new y.PublicKey(n.solanaNativeAddress),{hinkalAddress:ne,originalDeployer:O}=t.networkRegistry[E].contractData;if(!O)throw Error(`No IDL configured for Solana program on this network`);let k=new y.PublicKey(O),A=new y.PublicKey(ne),j=l.map(e=>e.erc20TokenAddress),{userKeys:M,merkleTreeHinkalByChain:N}=s,P=w??await h.getFeeStructure(E,C,j,e.ExternalActionId.Transact),F=u[1],I=Number(s.cacheDevice.get(r.StorageKeys.SLIPPAGE_PERCENTAGE)??0),L=l[1],R=a.getAmountInToken(L,F),z=Number(R)*I/100;u[1]-=a.getAmountInWei(L,z.toFixed(L.decimals));let B=F*BigInt(P.variableRate??0)/10000n+P.flatFee;if(u[1]-=B,u[1]<0)throw Error(i.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let V=P.variableRate.toString(),[H,U,{inputUtxosArray:W,outputUtxosArray:G}]=await Promise.all([s.getRandomRelay(E,!0),s.getEthereumAddressByChain(E),b(s,E,j,u)]);if(!H)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let K=s.userKeys.getShieldedPrivateKey(),q=o.UserKeys.findCorrectRandomization(a.randomBigInt(31),K),J={tokenNumber:2,nullifierAmount:W[0].length,outputAmount:1},Y=d.calcEncryptedOutputs(G).map(e=>[...v.ethers.getBytes(e[0])]),X=f.getSwapperAccountPublicKeyFromSalt(A,k,x),{remainingAccounts:Z,hinkalInstructions:Q}=ee.convertOKXToHinkalInstructions(te,X);m.ensureAmountChanges(W,G,u);let{proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,commitmentValidationData:$}=await g.constructSolanaZkProof(s.generateProofRemotely,N[E],M,j,W,G,q,P.flatFee,P.variableRate,D.toString(),H,J,Y,E,Q,Z,x),se=f.getStorageAccountPublicKey(A,k),ce=f.getStorageVaultPublicKey(A,k),le=l[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[0].erc20TokenAddress),ue=l[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[1].erc20TokenAddress),de={recipient:D.toString(),storageAccount:se.toString(),storageVault:ce.toString(),swapperAccount:X.toString(),mintFrom:le?.toString()??null,mintTo:ue?.toString()??null,remainingAccounts:Z.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:S};return _.solanaTransactCallRelayer({chainId:E,relayAddress:H,functionName:`swap`,args:{encryptedOutputs:Y,proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,relayerFee:P.flatFee.toString(),variableRate:V,dimensions:J,hinkalInstructions:Q.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}))},accounts:de,commitmentValidationData:$,adminData:p.constructAdminData(T,E,j,u,U,l)})};exports.hinkalSolanaSwap=x;
|
|
@@ -11,18 +11,17 @@ import { validateAndGetChainId as u } from "../../functions/utils/token-check.ut
|
|
|
11
11
|
import { addPaddingToUtxos as d } from "../../functions/web3/events/getShieldedBalance.mjs";
|
|
12
12
|
import { outputUtxoProcessing as f } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
|
|
13
13
|
import { calcEncryptedOutputs as p } from "../../functions/snarkjs/common.snarkjs.mjs";
|
|
14
|
-
import { getStorageAccountPublicKey as
|
|
15
|
-
import { constructAdminData as
|
|
16
|
-
import { convertOKXToHinkalInstructions as
|
|
17
|
-
import { ensureAmountChanges as
|
|
18
|
-
import { getFeeStructure as
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import { PublicKey as w } from "@solana/web3.js";
|
|
14
|
+
import { getStorageAccountPublicKey as ee, getStorageVaultPublicKey as m, getSwapperAccountPublicKeyFromSalt as h } from "../../functions/pre-transaction/solana.mjs";
|
|
15
|
+
import { constructAdminData as g } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
16
|
+
import { convertOKXToHinkalInstructions as _ } from "../../functions/pre-transaction/convert-okx-instructions.mjs";
|
|
17
|
+
import { ensureAmountChanges as v } from "../../functions/pre-transaction/ensureAmountChanges.mjs";
|
|
18
|
+
import { getFeeStructure as y } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
19
|
+
import { constructSolanaZkProof as b } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
|
|
20
|
+
import { solanaTransactCallRelayer as x } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
21
|
+
import { ethers as S } from "ethers";
|
|
22
|
+
import { PublicKey as C } from "@solana/web3.js";
|
|
24
23
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaSwap.ts
|
|
25
|
-
var
|
|
24
|
+
var te = async (e, t, n, r) => {
|
|
26
25
|
let i = [...await d(e, t, n, r, 6)], a = l().toString(), o = [];
|
|
27
26
|
for (let t = 0; t < n.length; t += 1) {
|
|
28
27
|
let { outputUtxos: n } = f(e.userKeys, i[t], r[t], a);
|
|
@@ -32,62 +31,62 @@ var T = async (e, t, n, r) => {
|
|
|
32
31
|
inputUtxosArray: i,
|
|
33
32
|
outputUtxosArray: o
|
|
34
33
|
};
|
|
35
|
-
},
|
|
36
|
-
let
|
|
37
|
-
if (!
|
|
38
|
-
let
|
|
39
|
-
f[1] -= o(
|
|
40
|
-
let
|
|
41
|
-
if (f[1] -=
|
|
42
|
-
let
|
|
43
|
-
l.getRandomRelay(
|
|
44
|
-
l.getEthereumAddressByChain(
|
|
45
|
-
|
|
34
|
+
}, w = async (l, d, f, w, ne, re, ie, ae, T) => {
|
|
35
|
+
let E = u(d), D = new C(n), { hinkalAddress: O, originalDeployer: k } = t[E].contractData;
|
|
36
|
+
if (!k) throw Error("No IDL configured for Solana program on this network");
|
|
37
|
+
let A = new C(k), j = new C(O), M = d.map((e) => e.erc20TokenAddress), { userKeys: N, merkleTreeHinkalByChain: P } = l, F = ae ?? await y(E, ie, M, e.Transact), I = f[1], L = Number(l.cacheDevice.get(r.SLIPPAGE_PERCENTAGE) ?? 0), R = d[1], z = a(R, I), B = Number(z) * L / 100;
|
|
38
|
+
f[1] -= o(R, B.toFixed(R.decimals));
|
|
39
|
+
let V = I * BigInt(F.variableRate ?? 0) / 10000n + F.flatFee;
|
|
40
|
+
if (f[1] -= V, f[1] < 0) throw Error(i.LOW_OUTPUT_AMOUNT);
|
|
41
|
+
let H = F.variableRate.toString(), [U, oe, { inputUtxosArray: W, outputUtxosArray: G }] = await Promise.all([
|
|
42
|
+
l.getRandomRelay(E, !0),
|
|
43
|
+
l.getEthereumAddressByChain(E),
|
|
44
|
+
te(l, E, M, f)
|
|
46
45
|
]);
|
|
47
|
-
if (!
|
|
48
|
-
let
|
|
46
|
+
if (!U) throw Error(i.RELAYER_NOT_AVAILABLE);
|
|
47
|
+
let K = l.userKeys.getShieldedPrivateKey(), q = c.findCorrectRandomization(s(31), K), J = {
|
|
49
48
|
tokenNumber: 2,
|
|
50
|
-
nullifierAmount:
|
|
49
|
+
nullifierAmount: W[0].length,
|
|
51
50
|
outputAmount: 1
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
let
|
|
55
|
-
recipient:
|
|
56
|
-
storageAccount:
|
|
57
|
-
storageVault:
|
|
58
|
-
swapperAccount:
|
|
59
|
-
mintFrom:
|
|
60
|
-
mintTo:
|
|
61
|
-
remainingAccounts:
|
|
51
|
+
}, Y = p(G).map((e) => [...S.getBytes(e[0])]), X = h(j, A, w), { remainingAccounts: Z, hinkalInstructions: Q } = _(ne, X);
|
|
52
|
+
v(W, G, f);
|
|
53
|
+
let { proofAArr: se, proofBArr: $, proofCArr: ce, publicInputsArr: le, commitmentValidationData: ue } = await b(l.generateProofRemotely, P[E], N, M, W, G, q, F.flatFee, F.variableRate, D.toString(), U, J, Y, E, Q, Z, w), de = ee(j, A), fe = m(j, A), pe = d[0].erc20TokenAddress === "11111111111111111111111111111111" ? null : new C(d[0].erc20TokenAddress), me = d[1].erc20TokenAddress === "11111111111111111111111111111111" ? null : new C(d[1].erc20TokenAddress), he = {
|
|
54
|
+
recipient: D.toString(),
|
|
55
|
+
storageAccount: de.toString(),
|
|
56
|
+
storageVault: fe.toString(),
|
|
57
|
+
swapperAccount: X.toString(),
|
|
58
|
+
mintFrom: pe?.toString() ?? null,
|
|
59
|
+
mintTo: me?.toString() ?? null,
|
|
60
|
+
remainingAccounts: Z.map((e) => ({
|
|
62
61
|
pubkey: e.pubkey.toString(),
|
|
63
62
|
isSigner: e.isSigner,
|
|
64
63
|
isWritable: e.isWritable
|
|
65
64
|
})),
|
|
66
|
-
addressLookupTableAccount:
|
|
65
|
+
addressLookupTableAccount: re
|
|
67
66
|
};
|
|
68
|
-
return
|
|
69
|
-
chainId:
|
|
70
|
-
relayAddress:
|
|
67
|
+
return x({
|
|
68
|
+
chainId: E,
|
|
69
|
+
relayAddress: U,
|
|
71
70
|
functionName: "swap",
|
|
72
71
|
args: {
|
|
73
|
-
encryptedOutputs:
|
|
72
|
+
encryptedOutputs: Y,
|
|
74
73
|
proofAArr: se,
|
|
75
|
-
proofBArr:
|
|
76
|
-
proofCArr:
|
|
77
|
-
publicInputsArr:
|
|
78
|
-
relayerFee:
|
|
79
|
-
variableRate:
|
|
80
|
-
dimensions:
|
|
81
|
-
hinkalInstructions:
|
|
74
|
+
proofBArr: $,
|
|
75
|
+
proofCArr: ce,
|
|
76
|
+
publicInputsArr: le,
|
|
77
|
+
relayerFee: F.flatFee.toString(),
|
|
78
|
+
variableRate: H,
|
|
79
|
+
dimensions: J,
|
|
80
|
+
hinkalInstructions: Q.map((e) => ({
|
|
82
81
|
accountIndexes: [...e.accountIndexes],
|
|
83
82
|
data: [...e.data],
|
|
84
83
|
programIndex: e.programIndex
|
|
85
84
|
}))
|
|
86
85
|
},
|
|
87
|
-
accounts:
|
|
88
|
-
commitmentValidationData:
|
|
89
|
-
adminData:
|
|
86
|
+
accounts: he,
|
|
87
|
+
commitmentValidationData: ue,
|
|
88
|
+
adminData: g(T, E, M, f, oe, d)
|
|
90
89
|
});
|
|
91
90
|
};
|
|
92
91
|
//#endregion
|
|
93
|
-
export {
|
|
92
|
+
export { w as hinkalSolanaSwap };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../functions/utils/addresses.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../crypto-keys/keys.cjs`),s=require(`../../functions/utils/time.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/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`)
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`);require(`../../types/index.cjs`);const r=require(`../../functions/utils/addresses.cjs`),i=require(`../../error-handling/error-codes.constants.cjs`),a=require(`../../functions/web3/etherFunctions.cjs`),o=require(`../crypto-keys/keys.cjs`),s=require(`../../functions/utils/time.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/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`);var y=async(e,t,n,r,i,a)=>{let o=(await l.addPaddingToUtxos(e,t,n,r,6))[0],c=s.getCurrentTimeInSeconds().toString(),{outputUtxos:d}=u.outputUtxoProcessing(e.userKeys,o,r[0],c,!0,i,a);return{inputUtxos:o,senderUtxo:d[0],recipientUtxo:d[1]}},b=async(s,l,u,_,b,x,S)=>{if(!r.isValidPrivateAddress(_))throw Error(i.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=c.validateAndGetChainId(l),w=[...u],{originalDeployer:T}=t.networkRegistry[C].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=s,O=l.map(e=>e.erc20TokenAddress);if(O.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let k=x??await m.getFeeStructure(C,b,O,e.ExternalActionId.Transact,[],5n);k.variableRate||=n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let A=h.calculateTotalFee(-w[0],k),j=-w[0];w[0]-=A;let[M,N,{inputUtxos:P,senderUtxo:F,recipientUtxo:I}]=await Promise.all([s.getRandomRelay(C,!0),s.getEthereumAddressByChain(C),y(s,C,O,w,_,j)]);if(!M)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let L=o.UserKeys.findCorrectRandomization(a.randomBigInt(31),s.userKeys.getShieldedPrivateKey()),R={tokenNumber:O.length,nullifierAmount:P.length,outputAmount:2},z=d.calcEncryptedOutputs([[F,I]])[0].map(e=>Array.from(v.ethers.getBytes(e)));p.ensureAmountChanges([P],[[F]],w);let{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,commitmentValidationData:W}=await g.constructSolanaZkProof(s.generateProofRemotely,D[C],E,[O[0]],[P],[[F,I]],L,A,0n,n.solanaNativeAddress,M,R,z,C),G={recipient:M,mint:O[0]===`11111111111111111111111111111111`?void 0:O[0]};return{chainId:C,relay:M,args:{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,encryptedOutputs:z,relayerFee:A.toString(),dimensions:R},accounts:G,adminData:f.constructAdminData(S,C,O,w,N),commitmentValidationData:W,recipientUtxo:I}},x=async(e,t,n,r,i,a,o,s=!1)=>{if(s)throw Error(`onlyGasEstimate is not supported for Solana transfer`);let c=await b(e,t,n,r,i,a,o);return _.solanaTransactCallRelayer({chainId:c.chainId,relayAddress:c.relay,functionName:`transfer`,args:c.args,accounts:c.accounts,adminData:c.adminData,commitmentValidationData:c.commitmentValidationData})};exports.buildSolanaTransferPlan=b,exports.hinkalSolanaTransfer=x;
|
|
@@ -14,67 +14,66 @@ import { calcEncryptedOutputs as f } from "../../functions/snarkjs/common.snarkj
|
|
|
14
14
|
import { constructAdminData as p } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
15
15
|
import { ensureAmountChanges as m } from "../../functions/pre-transaction/ensureAmountChanges.mjs";
|
|
16
16
|
import { getFeeStructure as h } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
17
|
-
import { buildCommitmentValidationData as g } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
|
|
18
17
|
import "../../functions/pre-transaction/index.mjs";
|
|
19
|
-
import { calculateTotalFee as
|
|
20
|
-
import { constructSolanaZkProof as
|
|
21
|
-
import { solanaTransactCallRelayer as
|
|
22
|
-
import { ethers as
|
|
18
|
+
import { calculateTotalFee as g } from "../../functions/utils/fees.utils.mjs";
|
|
19
|
+
import { constructSolanaZkProof as _ } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
|
|
20
|
+
import { solanaTransactCallRelayer as v } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
21
|
+
import { ethers as y } from "ethers";
|
|
23
22
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaTransfer.ts
|
|
24
|
-
var
|
|
23
|
+
var b = async (e, t, n, r, i, a) => {
|
|
25
24
|
let o = (await u(e, t, n, r, 6))[0], s = c().toString(), { outputUtxos: l } = d(e.userKeys, o, r[0], s, !0, i, a);
|
|
26
25
|
return {
|
|
27
26
|
inputUtxos: o,
|
|
28
27
|
senderUtxo: l[0],
|
|
29
28
|
recipientUtxo: l[1]
|
|
30
29
|
};
|
|
31
|
-
},
|
|
32
|
-
if (!i(
|
|
33
|
-
let
|
|
34
|
-
if (!
|
|
35
|
-
let { userKeys:
|
|
36
|
-
if (
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
let [
|
|
42
|
-
c.getRandomRelay(
|
|
43
|
-
c.getEthereumAddressByChain(
|
|
44
|
-
|
|
30
|
+
}, x = async (c, u, d, v, x, S, C) => {
|
|
31
|
+
if (!i(v)) throw Error(a.RECIPIENT_FORMAT_INCORRECT);
|
|
32
|
+
let w = l(u), T = [...d], { originalDeployer: E } = t[w].contractData;
|
|
33
|
+
if (!E) throw Error("missing data");
|
|
34
|
+
let { userKeys: D, merkleTreeHinkalByChain: O } = c, k = u.map((e) => e.erc20TokenAddress);
|
|
35
|
+
if (k.length > 1) throw Error("Solana Transfer: Only one mint address is supported");
|
|
36
|
+
let A = S ?? await h(w, x, k, e.Transact, [], 5n);
|
|
37
|
+
A.variableRate ||= n;
|
|
38
|
+
let j = g(-T[0], A), M = -T[0];
|
|
39
|
+
T[0] -= j;
|
|
40
|
+
let [N, P, { inputUtxos: F, senderUtxo: I, recipientUtxo: L }] = await Promise.all([
|
|
41
|
+
c.getRandomRelay(w, !0),
|
|
42
|
+
c.getEthereumAddressByChain(w),
|
|
43
|
+
b(c, w, k, T, v, M)
|
|
45
44
|
]);
|
|
46
|
-
if (!
|
|
47
|
-
let
|
|
48
|
-
tokenNumber:
|
|
49
|
-
nullifierAmount:
|
|
45
|
+
if (!N) throw Error(a.RELAYER_NOT_AVAILABLE);
|
|
46
|
+
let R = s.findCorrectRandomization(o(31), c.userKeys.getShieldedPrivateKey()), z = {
|
|
47
|
+
tokenNumber: k.length,
|
|
48
|
+
nullifierAmount: F.length,
|
|
50
49
|
outputAmount: 2
|
|
51
|
-
},
|
|
52
|
-
m([
|
|
53
|
-
let
|
|
54
|
-
recipient:
|
|
55
|
-
mint:
|
|
50
|
+
}, B = f([[I, L]])[0].map((e) => Array.from(y.getBytes(e)));
|
|
51
|
+
m([F], [[I]], T);
|
|
52
|
+
let { proofAArr: V, proofBArr: H, proofCArr: U, publicInputsArr: W, commitmentValidationData: G } = await _(c.generateProofRemotely, O[w], D, [k[0]], [F], [[I, L]], R, j, 0n, r, N, z, B, w), K = {
|
|
53
|
+
recipient: N,
|
|
54
|
+
mint: k[0] === "11111111111111111111111111111111" ? void 0 : k[0]
|
|
56
55
|
};
|
|
57
56
|
return {
|
|
58
|
-
chainId:
|
|
59
|
-
relay:
|
|
57
|
+
chainId: w,
|
|
58
|
+
relay: N,
|
|
60
59
|
args: {
|
|
61
|
-
proofAArr:
|
|
62
|
-
proofBArr:
|
|
63
|
-
proofCArr:
|
|
64
|
-
publicInputsArr:
|
|
65
|
-
encryptedOutputs:
|
|
66
|
-
relayerFee:
|
|
67
|
-
dimensions:
|
|
60
|
+
proofAArr: V,
|
|
61
|
+
proofBArr: H,
|
|
62
|
+
proofCArr: U,
|
|
63
|
+
publicInputsArr: W,
|
|
64
|
+
encryptedOutputs: B,
|
|
65
|
+
relayerFee: j.toString(),
|
|
66
|
+
dimensions: z
|
|
68
67
|
},
|
|
69
|
-
accounts:
|
|
70
|
-
adminData: p(
|
|
71
|
-
commitmentValidationData:
|
|
72
|
-
recipientUtxo:
|
|
68
|
+
accounts: K,
|
|
69
|
+
adminData: p(C, w, k, T, P),
|
|
70
|
+
commitmentValidationData: G,
|
|
71
|
+
recipientUtxo: L
|
|
73
72
|
};
|
|
74
|
-
},
|
|
73
|
+
}, S = async (e, t, n, r, i, a, o, s = !1) => {
|
|
75
74
|
if (s) throw Error("onlyGasEstimate is not supported for Solana transfer");
|
|
76
|
-
let c = await
|
|
77
|
-
return
|
|
75
|
+
let c = await x(e, t, n, r, i, a, o);
|
|
76
|
+
return v({
|
|
78
77
|
chainId: c.chainId,
|
|
79
78
|
relayAddress: c.relay,
|
|
80
79
|
functionName: "transfer",
|
|
@@ -85,4 +84,4 @@ var x = async (e, t, n, r, i, a) => {
|
|
|
85
84
|
});
|
|
86
85
|
};
|
|
87
86
|
//#endregion
|
|
88
|
-
export {
|
|
87
|
+
export { x as buildSolanaTransferPlan, S as hinkalSolanaTransfer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`),require(`../../types/index.cjs`);const n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`);require(`../../constants/index.cjs`);const i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`)
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`),require(`../../types/index.cjs`);const n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`);require(`../../constants/index.cjs`);const i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/token-check.utils.cjs`),s=require(`../../functions/web3/events/getShieldedBalance.cjs`),c=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let g=require(`ethers`);var _=async(e,t,n,r)=>{let i=[...await s.addPaddingToUtxos(e,t,n,r,6)][0],o=a.getCurrentTimeInSeconds().toString(),{outputUtxos:l}=c.outputUtxoProcessing(e.userKeys,i,r[0],o);return{inputUtxos:i,outputUtxos:l}},v=async(a,s,c,v,y,b,x)=>{let S=o.validateAndGetChainId(s),C=s.map(e=>e.erc20TokenAddress),w=s[0];if(!w)throw Error(`Solana Withdraw: No Token Found`);let{originalDeployer:T}=t.networkRegistry[S].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=a,O=b??await f.getFeeStructure(S,y,C,e.ExternalActionId.Transact),k=await p.calculateModifiedFeeStructure(S,w,-c[0],O);c[0]-=k.flatFee;let[A,{inputUtxos:j,outputUtxos:M}]=await Promise.all([a.getRandomRelay(S,!0),_(a,S,C,c)]);if(!A)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);if(C.length>1)throw Error(`Solana Withdraw: Only one mint address is supported`);let N=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),a.userKeys.getShieldedPrivateKey()),P={tokenNumber:C.length,nullifierAmount:j.length,outputAmount:M.length},F=l.calcEncryptedOutputs([M])[0][0],I=Array.from(g.ethers.getBytes(F));d.ensureAmountChanges([j],[M],c);let{proofAArr:L,proofBArr:R,proofCArr:z,publicInputsArr:B,commitmentValidationData:V}=await m.constructSolanaZkProof(a.generateProofRemotely,D[S],E,[C[0]],[j],[M],N,k.flatFee,k.variableRate,v,A,P,[I],S),H={recipient:v,mint:C[0]===`11111111111111111111111111111111`?void 0:C[0]};return h.solanaTransactCallRelayer({chainId:S,relayAddress:A,functionName:`transact`,args:{proofAArr:L,proofBArr:R,proofCArr:z,publicInputsArr:B,encryptedOutputs:[I],relayerFee:k.flatFee.toString(),dimensions:P},accounts:H,commitmentValidationData:V,adminData:u.constructAdminData(x,S,C,c,await a.getEthereumAddress())})};exports.hinkalSolanaWithdraw=v;
|
|
@@ -14,56 +14,55 @@ import { calcEncryptedOutputs as l } from "../../functions/snarkjs/common.snarkj
|
|
|
14
14
|
import { constructAdminData as u } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
15
15
|
import { ensureAmountChanges as d } from "../../functions/pre-transaction/ensureAmountChanges.mjs";
|
|
16
16
|
import { getFeeStructure as f } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
17
|
-
import { buildCommitmentValidationData as p } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
|
|
18
17
|
import "../../functions/pre-transaction/index.mjs";
|
|
19
|
-
import { calculateModifiedFeeStructure as
|
|
20
|
-
import { constructSolanaZkProof as
|
|
21
|
-
import { solanaTransactCallRelayer as
|
|
22
|
-
import { ethers as
|
|
18
|
+
import { calculateModifiedFeeStructure as p } from "../../functions/utils/fees.utils.mjs";
|
|
19
|
+
import { constructSolanaZkProof as m } from "../../functions/snarkjs/constructSolanaZkProof.mjs";
|
|
20
|
+
import { solanaTransactCallRelayer as h } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
21
|
+
import { ethers as g } from "ethers";
|
|
23
22
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.ts
|
|
24
|
-
var
|
|
23
|
+
var _ = async (e, t, n, r) => {
|
|
25
24
|
let i = [...await s(e, t, n, r, 6)][0], o = a().toString(), { outputUtxos: l } = c(e.userKeys, i, r[0], o);
|
|
26
25
|
return {
|
|
27
26
|
inputUtxos: i,
|
|
28
27
|
outputUtxos: l
|
|
29
28
|
};
|
|
30
|
-
},
|
|
31
|
-
let
|
|
32
|
-
if (!
|
|
33
|
-
let { originalDeployer:
|
|
34
|
-
if (!
|
|
35
|
-
let { userKeys:
|
|
36
|
-
c[0] -=
|
|
37
|
-
let [
|
|
38
|
-
if (!
|
|
39
|
-
if (
|
|
40
|
-
let
|
|
41
|
-
tokenNumber:
|
|
42
|
-
nullifierAmount:
|
|
43
|
-
outputAmount:
|
|
44
|
-
},
|
|
45
|
-
d([
|
|
46
|
-
let
|
|
47
|
-
recipient:
|
|
48
|
-
mint:
|
|
29
|
+
}, v = async (a, s, c, v, y, b, x) => {
|
|
30
|
+
let S = o(s), C = s.map((e) => e.erc20TokenAddress), w = s[0];
|
|
31
|
+
if (!w) throw Error("Solana Withdraw: No Token Found");
|
|
32
|
+
let { originalDeployer: T } = t[S].contractData;
|
|
33
|
+
if (!T) throw Error("missing data");
|
|
34
|
+
let { userKeys: E, merkleTreeHinkalByChain: D } = a, O = b ?? await f(S, y, C, e.Transact), k = await p(S, w, -c[0], O);
|
|
35
|
+
c[0] -= k.flatFee;
|
|
36
|
+
let [A, { inputUtxos: j, outputUtxos: M }] = await Promise.all([a.getRandomRelay(S, !0), _(a, S, C, c)]);
|
|
37
|
+
if (!A) throw Error(n.RELAYER_NOT_AVAILABLE);
|
|
38
|
+
if (C.length > 1) throw Error("Solana Withdraw: Only one mint address is supported");
|
|
39
|
+
let N = i.findCorrectRandomization(r(31), a.userKeys.getShieldedPrivateKey()), P = {
|
|
40
|
+
tokenNumber: C.length,
|
|
41
|
+
nullifierAmount: j.length,
|
|
42
|
+
outputAmount: M.length
|
|
43
|
+
}, F = l([M])[0][0], I = Array.from(g.getBytes(F));
|
|
44
|
+
d([j], [M], c);
|
|
45
|
+
let { proofAArr: L, proofBArr: R, proofCArr: z, publicInputsArr: B, commitmentValidationData: V } = await m(a.generateProofRemotely, D[S], E, [C[0]], [j], [M], N, k.flatFee, k.variableRate, v, A, P, [I], S), H = {
|
|
46
|
+
recipient: v,
|
|
47
|
+
mint: C[0] === "11111111111111111111111111111111" ? void 0 : C[0]
|
|
49
48
|
};
|
|
50
|
-
return
|
|
51
|
-
chainId:
|
|
52
|
-
relayAddress:
|
|
49
|
+
return h({
|
|
50
|
+
chainId: S,
|
|
51
|
+
relayAddress: A,
|
|
53
52
|
functionName: "transact",
|
|
54
53
|
args: {
|
|
55
|
-
proofAArr:
|
|
56
|
-
proofBArr:
|
|
57
|
-
proofCArr:
|
|
58
|
-
publicInputsArr:
|
|
59
|
-
encryptedOutputs: [
|
|
60
|
-
relayerFee:
|
|
61
|
-
dimensions:
|
|
54
|
+
proofAArr: L,
|
|
55
|
+
proofBArr: R,
|
|
56
|
+
proofCArr: z,
|
|
57
|
+
publicInputsArr: B,
|
|
58
|
+
encryptedOutputs: [I],
|
|
59
|
+
relayerFee: k.flatFee.toString(),
|
|
60
|
+
dimensions: P
|
|
62
61
|
},
|
|
63
|
-
accounts:
|
|
64
|
-
commitmentValidationData:
|
|
65
|
-
adminData: u(S, C,
|
|
62
|
+
accounts: H,
|
|
63
|
+
commitmentValidationData: V,
|
|
64
|
+
adminData: u(x, S, C, c, await a.getEthereumAddress())
|
|
66
65
|
});
|
|
67
66
|
};
|
|
68
67
|
//#endregion
|
|
69
|
-
export {
|
|
68
|
+
export { v as hinkalSolanaWithdraw };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../functions/web3/events/getShieldedBalance.cjs`),i=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`)
|
|
1
|
+
require(`../../constants/protocol.constants.cjs`);const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../functions/utils/time.utils.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`),r=require(`../../functions/web3/events/getShieldedBalance.cjs`),i=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),a=require(`../../functions/pre-transaction/constructAdminData.cjs`),o=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),c=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),l=require(`../../functions/pre-transaction/getExternalSwapAddress.cjs`),u=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var d=async(e,n,a,o)=>{let s=[...await r.addPaddingToUtxos(e,n,a,o)],c=[],l=t.getCurrentTimeInSeconds().toString();for(let t=0;t<a.length;t+=1){let{outputUtxos:n}=i.outputUtxoProcessing(e.userKeys,s[t],o[t],l);c.push(n)}return{inputUtxosArray:s,outputUtxosArray:c}},f=async(t,r,i,f,p,m,h,g)=>{let _=n.validateAndGetChainId(r),v=r.map(e=>e.erc20TokenAddress),y=await t.getEthereumAddressByChain(_),b=h??await o.getFeeStructure(_,m,v,f,void 0,35n);u.mergeWithFeeStructure(_,v,i,b);let x={externalActionId:f,externalAddress:l.getExternalSwapAddress(_,f),externalActionMetadata:p},[S,{inputUtxosArray:C,outputUtxosArray:w}]=await Promise.all([t.getRandomRelay(_,!0),d(t,_,v,i)]);if(!S)throw Error(e.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let T=[!1,!0,!1].slice(0,i.length),{zkCallData:E,circomData:D,dimData:O,commitmentValidationData:k}=await s.constructZkProof(t.merkleTreeHinkalByChain[_],C,w,t.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,t.generateProofRemotely,b,S,_,T);return await c.transactCallRelayer(_,E,O,D,k,void 0,void 0,a.constructAdminData(g,_,v,i,y,r))};exports.hinkalSwap=f;
|
|
@@ -6,14 +6,13 @@ import { addPaddingToUtxos as r } from "../../functions/web3/events/getShieldedB
|
|
|
6
6
|
import { outputUtxoProcessing as i } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
|
|
7
7
|
import { constructAdminData as a } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
8
8
|
import { getFeeStructure as o } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
9
|
-
import { buildCommitmentValidationData as s } from "../../functions/pre-transaction/buildCommitmentValidationData.mjs";
|
|
10
9
|
import "../../functions/pre-transaction/index.mjs";
|
|
11
|
-
import { constructZkProof as
|
|
12
|
-
import { transactCallRelayer as
|
|
13
|
-
import { getExternalSwapAddress as
|
|
14
|
-
import { mergeWithFeeStructure as
|
|
10
|
+
import { constructZkProof as s } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
|
|
11
|
+
import { transactCallRelayer as c } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
12
|
+
import { getExternalSwapAddress as l } from "../../functions/pre-transaction/getExternalSwapAddress.mjs";
|
|
13
|
+
import { mergeWithFeeStructure as u } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
|
|
15
14
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalSwap.ts
|
|
16
|
-
var
|
|
15
|
+
var d = async (e, n, a, o) => {
|
|
17
16
|
let s = [...await r(e, n, a, o)], c = [], l = t().toString();
|
|
18
17
|
for (let t = 0; t < a.length; t += 1) {
|
|
19
18
|
let { outputUtxos: n } = i(e.userKeys, s[t], o[t], l);
|
|
@@ -23,21 +22,21 @@ var f = async (e, n, a, o) => {
|
|
|
23
22
|
inputUtxosArray: s,
|
|
24
23
|
outputUtxosArray: c
|
|
25
24
|
};
|
|
26
|
-
},
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
let
|
|
30
|
-
externalActionId:
|
|
31
|
-
externalAddress:
|
|
32
|
-
externalActionMetadata:
|
|
33
|
-
}, [
|
|
34
|
-
if (!
|
|
35
|
-
let
|
|
25
|
+
}, f = async (t, r, i, f, p, m, h, g) => {
|
|
26
|
+
let _ = n(r), v = r.map((e) => e.erc20TokenAddress), y = await t.getEthereumAddressByChain(_), b = h ?? await o(_, m, v, f, void 0, 35n);
|
|
27
|
+
u(_, v, i, b);
|
|
28
|
+
let x = {
|
|
29
|
+
externalActionId: f,
|
|
30
|
+
externalAddress: l(_, f),
|
|
31
|
+
externalActionMetadata: p
|
|
32
|
+
}, [S, { inputUtxosArray: C, outputUtxosArray: w }] = await Promise.all([t.getRandomRelay(_, !0), d(t, _, v, i)]);
|
|
33
|
+
if (!S) throw Error(e.RELAYER_NOT_AVAILABLE);
|
|
34
|
+
let T = [
|
|
36
35
|
!1,
|
|
37
36
|
!0,
|
|
38
37
|
!1
|
|
39
|
-
].slice(0, i.length),
|
|
40
|
-
return await
|
|
38
|
+
].slice(0, i.length), { zkCallData: E, circomData: D, dimData: O, commitmentValidationData: k } = await s(t.merkleTreeHinkalByChain[_], C, w, t.userKeys, x.externalActionId, x.externalAddress, x.externalActionMetadata, t.generateProofRemotely, b, S, _, T);
|
|
39
|
+
return await c(_, E, O, D, k, void 0, void 0, a(g, _, v, i, y, r));
|
|
41
40
|
};
|
|
42
41
|
//#endregion
|
|
43
|
-
export {
|
|
42
|
+
export { f as hinkalSwap };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),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/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`)
|
|
1
|
+
const e=require(`../../types/external-action.types.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../constants/protocol.constants.cjs`),r=require(`../../functions/utils/addresses.cjs`),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/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),g=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var _=async(e,t,n,r,i,o)=>{let s=[...await c.addPaddingToUtxos(e,t,n,r)],u=[],d=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,s[t],r[t],d,!0,i,t===0?o:0n);u.push(n)}return{inputUtxosArray:s,outputUtxosArray:u}},v=async(a,c,l,v,y,b,x)=>{let S=s.validateAndGetChainId(c),C=t.isTronLike(S);if(!r.isValidPrivateAddress(v))throw Error(i.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let w=o.addressToHexFormat(await a.getEthereumAddressByChain(S)),T=c.map(e=>e.erc20TokenAddress),E=await u.modifyVolatileTokenAmountChanges(S,c,l),D=b??await f.getFeeStructure(S,y,T,e.ExternalActionId.Transact,[],5n);D.variableRate||=n.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let O=c[0];if(!O)throw Error(`Transfer Action: No Token Found`);let k=-E[0],A=await p.calculateModifiedFeeStructure(S,O,k,D);g.mergeWithFeeStructure(S,T,E,A);let[j,{inputUtxosArray:M,outputUtxosArray:N}]=await Promise.all([a.getRandomRelay(S,!0),_(a,S,T,E,v,k)]);if(!j)throw Error(i.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let P={externalActionId:0n,externalAddress:j,externalActionMetadata:`0x00`},{zkCallData:F,circomData:I,dimData:L,commitmentValidationData:R}=await m.constructZkProof(a.merkleTreeHinkalByChain[S],M,N,a.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,a.generateProofRemotely,A,j,S),z=await o.reorderZkCallData(C,F,L,I);return await h.transactCallRelayer(S,F,L,I,R,void 0,void 0,d.constructAdminData(x,S,T,E,w),z)};exports.hinkalTransfer=v;
|