@hinkal/common 0.3.4 → 0.3.6
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/assets/snarkjsWorkerLauncher-SrStwJvX.js +1 -0
- package/assets/snarkjsWorkerLogic-DtIjisbE.js +132 -0
- package/assets/utxoWorkerLauncher-CIBeBAML.js +1 -0
- package/assets/utxoWorkerLogic-C8R4GSaf.js +199 -0
- package/assets/zkProofWorkerLauncher-DfwteloJ.js +1 -0
- package/assets/zkProofWorkerLogic-CY9y6rOV.js +199 -0
- package/common/src/constants/vite.constants.cjs +1 -1
- package/common/src/constants/vite.constants.mjs +23 -5
- package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +50 -97
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +90 -128
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +56 -110
- package/common/src/data-structures/Hinkal/hinkalSolanaTransact.cjs +1 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaTransact.d.ts +3 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaTransact.mjs +117 -0
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.d.ts +2 -31
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +45 -121
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +41 -83
- package/common/src/data-structures/Hinkal/hinkalTransact.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransact.mjs +41 -42
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +106 -125
- package/common/src/data-structures/IndexedDB/pay-activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/pay-activity-db.mjs +43 -1
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +0 -1
- package/common/src/functions/pre-transaction/ensureAmountChanges.cjs +1 -1
- package/common/src/functions/pre-transaction/ensureAmountChanges.mjs +3 -10
- package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
- package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +1 -0
- package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +13 -9
- package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructSolanaZkProof.d.ts +1 -1
- package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +35 -35
- package/common/src/functions/snarkjs/constructTxEnclave.cjs +1 -1
- package/common/src/functions/snarkjs/constructTxEnclave.d.ts +2 -0
- package/common/src/functions/snarkjs/constructTxEnclave.mjs +40 -40
- package/common/src/functions/utils/enum.utils.cjs +1 -0
- package/common/src/functions/utils/enum.utils.mjs +12 -0
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.mjs +0 -1
- package/common/src/types/index.cjs +1 -1
- package/common/src/types/index.d.ts +1 -0
- package/common/src/types/index.mjs +1 -0
- package/common/src/types/pay-activities.types.d.ts +18 -3
- package/common/src/types/solana-transact.types.cjs +1 -0
- package/common/src/types/solana-transact.types.d.ts +35 -0
- package/common/src/types/solana-transact.types.mjs +6 -0
- package/common/src/webworker/logError-Dex6ch32.js +2 -0
- package/common/src/webworker/package.json +5 -3
- package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/snarkjsWorker/snarkjsWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/snarkjsWorkerNode.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/utxoWorkerNode.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +1 -28
- package/common/src/webworker/viteWorkerURL.constant.mjs +13 -27
- package/common/src/webworker/workerProxy-BuJUMCQ4.js +1 -0
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
- package/package.json +5 -3
- package/common/src/webworker/logError-CxZzSALU.js +0 -2
- package/common/src/webworker/workerProxy-swwPYw6e.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const t=require(`./activity-db.cjs`);let n=require(`idb-keyval`);new class extends t.ActivityStorage{async savePrivateSendTx(t){let r=this.generateTxId(),i={timestamp:new Date,...t};return await(0,n.update)(e.StorageKeys.TX_ACTIVITY,(e={})=>(e[r]=i,e)),r}async saveMultiplePrivateSendTxs(e){let t=e.map(e=>this.savePrivateSendTx(e));return Promise.all(t)}async getTransactionRecords(){
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const t=require(`./activity-db.cjs`);let n=require(`idb-keyval`);var r=e=>{let{token:t,amount:n,amountInDollar:r,...i}=e;return i.tokens?.length?{...i,tokens:[...i.tokens]}:t?{...i,tokens:[{token:t,amount:n??`0`,amountInDollar:r??`0`}]}:{...i,tokens:[]}},i=e=>[e.txHash,e.to?.toLowerCase(),e.activityType,e.sentFrom,e.sentTo].join(`-`),a=e=>{let t={...e},n=new Map,a=!1;return Object.entries(e).forEach(([e,o])=>{let s=r(o);if(s.tokens.length===0||(o.token&&(a=!0),t[e]=s,!s.txHash))return;let c=i(s),l=n.get(c);if(l===void 0){n.set(c,e);return}t[l].tokens.push(...s.tokens),delete t[e],a=!0}),{mergedRecords:t,needsWrite:a}};new class extends t.ActivityStorage{async savePrivateSendTx(t){let r=this.generateTxId(),i={timestamp:new Date,...t};return await(0,n.update)(e.StorageKeys.TX_ACTIVITY,(e={})=>(e[r]=i,e)),r}async saveMultiplePrivateSendTxs(e){let t=e.map(e=>this.savePrivateSendTx(e));return Promise.all(t)}async getTransactionRecords(){let t=await(0,n.get)(e.StorageKeys.TX_ACTIVITY);if(!t)return[];let i=a(t);return i.needsWrite&&await(0,n.update)(e.StorageKeys.TX_ACTIVITY,(e={})=>(i=a(e),i.mergedRecords)),Object.values(i.mergedRecords).map(r).filter(e=>e.tokens.length>0)}};
|
|
@@ -2,6 +2,45 @@ import { StorageKeys as e } from "../../types/cache.types.mjs";
|
|
|
2
2
|
import "../../types/index.mjs";
|
|
3
3
|
import { ActivityStorage as t } from "./activity-db.mjs";
|
|
4
4
|
import { get as n, update as r } from "idb-keyval";
|
|
5
|
+
//#region libs/shared/common/src/data-structures/IndexedDB/pay-activity-db.ts
|
|
6
|
+
var i = (e) => {
|
|
7
|
+
let { token: t, amount: n, amountInDollar: r, ...i } = e;
|
|
8
|
+
return i.tokens?.length ? {
|
|
9
|
+
...i,
|
|
10
|
+
tokens: [...i.tokens]
|
|
11
|
+
} : t ? {
|
|
12
|
+
...i,
|
|
13
|
+
tokens: [{
|
|
14
|
+
token: t,
|
|
15
|
+
amount: n ?? "0",
|
|
16
|
+
amountInDollar: r ?? "0"
|
|
17
|
+
}]
|
|
18
|
+
} : {
|
|
19
|
+
...i,
|
|
20
|
+
tokens: []
|
|
21
|
+
};
|
|
22
|
+
}, a = (e) => [
|
|
23
|
+
e.txHash,
|
|
24
|
+
e.to?.toLowerCase(),
|
|
25
|
+
e.activityType,
|
|
26
|
+
e.sentFrom,
|
|
27
|
+
e.sentTo
|
|
28
|
+
].join("-"), o = (e) => {
|
|
29
|
+
let t = { ...e }, n = /* @__PURE__ */ new Map(), r = !1;
|
|
30
|
+
return Object.entries(e).forEach(([e, o]) => {
|
|
31
|
+
let s = i(o);
|
|
32
|
+
if (s.tokens.length === 0 || (o.token && (r = !0), t[e] = s, !s.txHash)) return;
|
|
33
|
+
let c = a(s), l = n.get(c);
|
|
34
|
+
if (l === void 0) {
|
|
35
|
+
n.set(c, e);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
t[l].tokens.push(...s.tokens), delete t[e], r = !0;
|
|
39
|
+
}), {
|
|
40
|
+
mergedRecords: t,
|
|
41
|
+
needsWrite: r
|
|
42
|
+
};
|
|
43
|
+
};
|
|
5
44
|
new class extends t {
|
|
6
45
|
async savePrivateSendTx(t) {
|
|
7
46
|
let n = this.generateTxId(), i = {
|
|
@@ -15,7 +54,10 @@ new class extends t {
|
|
|
15
54
|
return Promise.all(t);
|
|
16
55
|
}
|
|
17
56
|
async getTransactionRecords() {
|
|
18
|
-
|
|
57
|
+
let t = await n(e.TX_ACTIVITY);
|
|
58
|
+
if (!t) return [];
|
|
59
|
+
let a = o(t);
|
|
60
|
+
return a.needsWrite && await r(e.TX_ACTIVITY, (e = {}) => (a = o(e), a.mergedRecords)), Object.values(a.mergedRecords).map(i).filter((e) => e.tokens.length > 0);
|
|
19
61
|
}
|
|
20
62
|
}();
|
|
21
63
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/legacyKeys.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/calculateSolanaNullifierCount.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/
|
|
1
|
+
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/legacyKeys.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/calculateSolanaNullifierCount.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/getExternalSwapAddress.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./utils/getContractAddress.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/proxyAvatar.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/temp-wallet.utils.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./web3/lifiAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
|
|
@@ -37,7 +37,6 @@ import "./web3/getSolanaPriorityFee.mjs";
|
|
|
37
37
|
import "./utils/process.utils.mjs";
|
|
38
38
|
import "./pre-transaction/sendV0Transaction.mjs";
|
|
39
39
|
import "./utils/bytes32.utils.mjs";
|
|
40
|
-
import "./pre-transaction/ensureAmountChanges.mjs";
|
|
41
40
|
import "./pre-transaction/getFeeStructure.mjs";
|
|
42
41
|
import "./pre-transaction/getExternalSwapAddress.mjs";
|
|
43
42
|
import "./pre-transaction/waitForDepositedUtxosInMerkleTree.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../constants/protocol.constants.cjs`),require(`../snarkjs/common.snarkjs.cjs`),require(`lodash`);
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
//#region libs/shared/common/src/functions/pre-transaction/ensureAmountChanges.ts
|
|
5
|
-
var r = (r, i, a) => {
|
|
6
|
-
let o = t(r, i), s = a.map((t) => t < 0n ? e + t : t);
|
|
7
|
-
if (o.length !== s.length || !n(o, s)) throw Error("Amount changes are not equal");
|
|
8
|
-
};
|
|
9
|
-
//#endregion
|
|
10
|
-
export { r as ensureAmountChanges };
|
|
1
|
+
import "../../constants/protocol.constants.mjs";
|
|
2
|
+
import "../snarkjs/common.snarkjs.mjs";
|
|
3
|
+
import "lodash";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`);var
|
|
1
|
+
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../utils/time.utils.cjs`),r=require(`../../data-structures/utxo/Utxo.cjs`);var i=(n,i,a,o,s=!0,c,l)=>{let u=e.countTotalAmountInUtxos(i),{erc20TokenAddress:d,mintAddress:f}=i[0];if(s&&a<0n&&u+a<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let p=[new r.Utxo({amount:e.bigintMax(u+a,0n),erc20TokenAddress:d,mintAddress:f,nullifyingKey:n.getShieldedPrivateKey(),timeStamp:o,spendingPublicKey:n.getSpendingKeyPair().pubSpendingBJJPoint})];return c!==void 0&&l!==void 0&&c.forEach((e,t)=>{let[n,i,a,,,s]=e.split(`,`);p.push(new r.Utxo({amount:l[t],erc20TokenAddress:d,mintAddress:f,H0:[BigInt(i),BigInt(a)],stealthAddress:n,encryptionKey:s,timeStamp:o}))}),{outputUtxos:p}},a=(e,t,r,a,o)=>{let s=n.getCurrentTimeInSeconds().toString();return t.map((t,n)=>i(e,t,r[n],s,!0,a,a===void 0?void 0:o?.map(e=>e[n]??0n)).outputUtxos)};exports.buildOutputUtxos=a,exports.outputUtxoProcessing=i;
|
|
@@ -3,3 +3,4 @@ import { Utxo } from '../../data-structures/utxo/Utxo';
|
|
|
3
3
|
export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddresses?: string[], recipientAmountChanges?: bigint[]) => {
|
|
4
4
|
outputUtxos: Utxo[];
|
|
5
5
|
};
|
|
6
|
+
export declare const buildOutputUtxos: (userKeys: UserKeys, inputUtxosArray: Utxo[][], amountChanges: bigint[], recipientAddresses?: string[], recipientAmountChanges?: bigint[][]) => Utxo[][];
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
import { bigintMax as e, countTotalAmountInUtxos as t } from "../utils/amounts.utils.mjs";
|
|
2
2
|
import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { getCurrentTimeInSeconds as r } from "../utils/time.utils.mjs";
|
|
4
|
+
import { Utxo as i } from "../../data-structures/utxo/Utxo.mjs";
|
|
4
5
|
//#region libs/shared/common/src/functions/pre-transaction/outputUtxoProcessing.ts
|
|
5
|
-
var
|
|
6
|
+
var a = (r, a, o, s, c = !0, l, u) => {
|
|
6
7
|
let d = t(a), { erc20TokenAddress: f, mintAddress: p } = a[0];
|
|
7
8
|
if (c && o < 0n && d + o < 0n) throw Error(n.INSUFFICIENT_FUNDS_TO_TRANSACT);
|
|
8
|
-
let m = [new
|
|
9
|
+
let m = [new i({
|
|
9
10
|
amount: e(d + o, 0n),
|
|
10
11
|
erc20TokenAddress: f,
|
|
11
12
|
mintAddress: p,
|
|
12
|
-
nullifyingKey:
|
|
13
|
+
nullifyingKey: r.getShieldedPrivateKey(),
|
|
13
14
|
timeStamp: s,
|
|
14
|
-
spendingPublicKey:
|
|
15
|
+
spendingPublicKey: r.getSpendingKeyPair().pubSpendingBJJPoint
|
|
15
16
|
})];
|
|
16
17
|
return l !== void 0 && u !== void 0 && l.forEach((e, t) => {
|
|
17
|
-
let [n,
|
|
18
|
-
m.push(new
|
|
18
|
+
let [n, r, a, , , o] = e.split(",");
|
|
19
|
+
m.push(new i({
|
|
19
20
|
amount: u[t],
|
|
20
21
|
erc20TokenAddress: f,
|
|
21
22
|
mintAddress: p,
|
|
22
|
-
H0: [BigInt(
|
|
23
|
+
H0: [BigInt(r), BigInt(a)],
|
|
23
24
|
stealthAddress: n,
|
|
24
25
|
encryptionKey: o,
|
|
25
26
|
timeStamp: s
|
|
26
27
|
}));
|
|
27
28
|
}), { outputUtxos: m };
|
|
29
|
+
}, o = (e, t, n, i, o) => {
|
|
30
|
+
let s = r().toString();
|
|
31
|
+
return t.map((t, r) => a(e, t, n[r], s, !0, i, i === void 0 ? void 0 : o?.map((e) => e[r] ?? 0n)).outputUtxos);
|
|
28
32
|
};
|
|
29
33
|
//#endregion
|
|
30
|
-
export {
|
|
34
|
+
export { o as buildOutputUtxos, a as outputUtxoProcessing };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../utils/solanaMint.utils.cjs`),a=require(`./common.snarkjs.cjs`),o=require(`../pre-transaction/solana.cjs`),s=require(`./signedMessageHash.cjs`);require(`../pre-transaction/index.cjs`);const c=require(`./generateMainAndCommitmentZkProof.cjs`),l=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`);require(`../web3/index.cjs`);const u=require(`../pre-transaction/getSolanaCalldataHash.cjs`);let d=require(`ethers`),f=require(`@solana/web3.js`);var p=async(p,m,h,g,_,v,y,b,x,S,C
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../utils/solanaMint.utils.cjs`),a=require(`./common.snarkjs.cjs`),o=require(`../pre-transaction/solana.cjs`),s=require(`./signedMessageHash.cjs`);require(`../pre-transaction/index.cjs`);const c=require(`./generateMainAndCommitmentZkProof.cjs`),l=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`);require(`../web3/index.cjs`);const u=require(`../pre-transaction/getSolanaCalldataHash.cjs`);let d=require(`ethers`),f=require(`@solana/web3.js`);var p=async(p,m,h,g,_,v,y,b,x,S,C=[],w=e.chainIds.solanaLocalnet,T=[],E=[],D=0n)=>{let O=new f.PublicKey(b),k=new f.PublicKey(x),A=m.getShieldedPrivateKey(),{pubSpendingBJJPoint:j}=m.getSpendingKeyPair(),M=a.calcStealthAddressStructure(r.UserKeys.findCorrectRandomization(n.randomBigInt(31),A),A,m.getSpendingKeyPair().pubSpendingBJJPoint),N=C.some(Boolean)?a.calcOnchainEncryptedOutput(r.UserKeys.getEncryptionKeyPair(A).publicKey,M):`0x`,P=a.calcEncryptedOutputs(_).flatMap((e,t)=>C[t]?e.map(()=>[]):e.map(e=>[...d.ethers.getBytes(e)])),F=n.randomBigInt(31),I=t.poseidonFunction(F),L=t.poseidonFunction(D),R=h.map(e=>i.formatMintAddress(e)),z=R.map(e=>e.mintAccountPart1),B=R.map(e=>e.mintAccountPart2),V=u.getSolanaCalldataHash(S,O,k,P,N,v,y,T,E),H=`${S.tokenNumber}x${S.nullifierAmount}x${S.outputAmount}`,U=a.calcAmountChanges(g,_),{inCommitmentSiblings:W,inCommitmentSiblingSides:G,rootHashHinkal:K,rootHashHinkalIndex:q,inNullifiers:J}=await l.getDataFromWorkers(w,p,g.map(e=>e.map(e=>e.getConstructableParams()))),Y=a.buildOutCommitments(_),X=M.H0x,Z=M.H0y,Q=s.computeSignedMessageHashSolana({rootHashHinkal:K,mintAccountPart1:z,mintAccountPart2:B,amountChanges:U,outTimeStamp:BigInt(_[0][0].timeStamp),inNullifiers:J,outCommitments:Y,calldataHash:V,message:I,swapperAccountAdditionalSeed:L,outH1Ay:M.H1y,H0Ax:X,H0Ay:Z}),{R8:$,S:ee}=m.signEddsa(Q),te={rootHashHinkal:K,spendingPublicKey:j,eddsaSignature:[$[0],$[1],ee],signedMessageHash:Q,nullifyingPrivateKey:A,mintAccountPart1:z,mintAccountPart2:B,amountChanges:U,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inH0Ax:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[1].toString())),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:J,inCommitmentSiblings:W,inCommitmentSiblingSides:G,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(_[0][0].timeStamp),outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:Y,calldataHash:V,messageSeed:F,swapperAccountSalt:D,H0Ax:X,H0Ay:Z},{zkCallData:ne,publicSignals:re,commitmentValidationData:ie}=await c.generateMainAndCommitmentZkProof(w,m,h,g,`mainSolanaCircuit${H}`,te),[ae,oe,se]=ne;return{proofAArr:ae.map(BigInt).map(o.encodeToByte32Array).flat(),proofBArr:oe.flat().map(BigInt).map(o.encodeToByte32Array).flat(),proofCArr:se.map(BigInt).map(o.encodeToByte32Array).flat(),publicInputsArr:re.map(BigInt).map(o.encodeToByte32Array),commitmentValidationData:ie,rootHashHinkalIndex:q,encryptedOutputs:P,onChainEncryptedOutput:N}};exports.constructSolanaZkProof=p;
|
|
@@ -4,7 +4,7 @@ import { AccountMeta } from '@solana/web3.js';
|
|
|
4
4
|
import { DimDataType } from '../../types/circom-data.types';
|
|
5
5
|
import { MerkleTree } from '../../data-structures/merkle-tree';
|
|
6
6
|
import { UserKeys } from '../../data-structures/crypto-keys/keys';
|
|
7
|
-
export declare const constructSolanaZkProof: (merkleTreeHinkal: MerkleTree<bigint>, userKeys: UserKeys, mintAddresses: string[], inputUtxosArray: Utxo[][], outputUtxosArray: Utxo[][],
|
|
7
|
+
export declare const constructSolanaZkProof: (merkleTreeHinkal: MerkleTree<bigint>, userKeys: UserKeys, mintAddresses: string[], inputUtxosArray: Utxo[][], outputUtxosArray: Utxo[][], relayerFee: bigint, variableRate: bigint, recipientAddress: string, signerAddress: string, dimensions: DimDataType, onChainCreation?: boolean[], chainId?: number, instructions?: HinkalInstruction[], remainingAccounts?: AccountMeta[], swapperAccountSalt?: bigint) => Promise<{
|
|
8
8
|
proofAArr: number[];
|
|
9
9
|
proofBArr: number[];
|
|
10
10
|
proofCArr: number[];
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { chainIds as e } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { poseidonFunction as t } from "../../crypto/poseidon.mjs";
|
|
3
|
-
import { randomBigInt as
|
|
4
|
-
import { UserKeys as
|
|
5
|
-
import { formatMintAddress as
|
|
6
|
-
import { buildOutCommitments as
|
|
7
|
-
import { encodeToByte32Array as
|
|
8
|
-
import { computeSignedMessageHashSolana as
|
|
3
|
+
import { randomBigInt as n } from "../web3/etherFunctions.mjs";
|
|
4
|
+
import { UserKeys as r } from "../../data-structures/crypto-keys/keys.mjs";
|
|
5
|
+
import { formatMintAddress as i } from "../utils/solanaMint.utils.mjs";
|
|
6
|
+
import { buildOutCommitments as a, calcAmountChanges as o, calcEncryptedOutputs as s, calcOnchainEncryptedOutput as c, calcStealthAddressStructure as l, getUtxoCircuitH0Coords as u } from "./common.snarkjs.mjs";
|
|
7
|
+
import { encodeToByte32Array as d } from "../pre-transaction/solana.mjs";
|
|
8
|
+
import { computeSignedMessageHashSolana as f } from "./signedMessageHash.mjs";
|
|
9
9
|
import "../pre-transaction/index.mjs";
|
|
10
|
-
import { generateMainAndCommitmentZkProof as
|
|
11
|
-
import { getDataFromWorkers as
|
|
10
|
+
import { generateMainAndCommitmentZkProof as p } from "./generateMainAndCommitmentZkProof.mjs";
|
|
11
|
+
import { getDataFromWorkers as ee } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
12
12
|
import "../web3/index.mjs";
|
|
13
|
-
import { getSolanaCalldataHash as
|
|
14
|
-
import { ethers as
|
|
15
|
-
import { PublicKey as
|
|
13
|
+
import { getSolanaCalldataHash as te } from "../pre-transaction/getSolanaCalldataHash.mjs";
|
|
14
|
+
import { ethers as m } from "ethers";
|
|
15
|
+
import { PublicKey as h } from "@solana/web3.js";
|
|
16
16
|
//#region libs/shared/common/src/functions/snarkjs/constructSolanaZkProof.ts
|
|
17
|
-
var
|
|
18
|
-
let
|
|
17
|
+
var g = async (g, _, v, y, b, x, S, C, w, T, E = [], D = e.solanaLocalnet, ne = [], re = [], O = 0n) => {
|
|
18
|
+
let ie = new h(C), k = new h(w), A = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: j } = _.getSpendingKeyPair(), M = l(r.findCorrectRandomization(n(31), A), A, _.getSpendingKeyPair().pubSpendingBJJPoint), N = E.some(Boolean) ? c(r.getEncryptionKeyPair(A).publicKey, M) : "0x", P = s(b).flatMap((e, t) => E[t] ? e.map(() => []) : e.map((e) => [...m.getBytes(e)])), F = n(31), I = t(F), L = t(O), R = v.map((e) => i(e)), z = R.map((e) => e.mintAccountPart1), B = R.map((e) => e.mintAccountPart2), V = te(T, ie, k, P, N, x, S, ne, re), H = `${T.tokenNumber}x${T.nullifierAmount}x${T.outputAmount}`, U = o(y, b), { inCommitmentSiblings: W, inCommitmentSiblingSides: ae, rootHashHinkal: G, rootHashHinkalIndex: K, inNullifiers: q } = await ee(D, g, y.map((e) => e.map((e) => e.getConstructableParams()))), J = a(b), Y = M.H0x, X = M.H0y, Z = f({
|
|
19
19
|
rootHashHinkal: G,
|
|
20
20
|
mintAccountPart1: z,
|
|
21
21
|
mintAccountPart2: B,
|
|
22
|
-
amountChanges:
|
|
23
|
-
outTimeStamp: BigInt(
|
|
22
|
+
amountChanges: U,
|
|
23
|
+
outTimeStamp: BigInt(b[0][0].timeStamp),
|
|
24
24
|
inNullifiers: q,
|
|
25
25
|
outCommitments: J,
|
|
26
26
|
calldataHash: V,
|
|
@@ -29,46 +29,46 @@ var h = async (h, g, _, v, y, b, x, S, re, ie, C, w = [], T = e.solanaLocalnet,
|
|
|
29
29
|
outH1Ay: M.H1y,
|
|
30
30
|
H0Ax: Y,
|
|
31
31
|
H0Ay: X
|
|
32
|
-
}), { R8: Q, S:
|
|
32
|
+
}), { R8: Q, S: oe } = _.signEddsa(Z), se = {
|
|
33
33
|
rootHashHinkal: G,
|
|
34
34
|
spendingPublicKey: j,
|
|
35
35
|
eddsaSignature: [
|
|
36
36
|
Q[0],
|
|
37
37
|
Q[1],
|
|
38
|
-
|
|
38
|
+
oe
|
|
39
39
|
],
|
|
40
40
|
signedMessageHash: Z,
|
|
41
41
|
nullifyingPrivateKey: A,
|
|
42
42
|
mintAccountPart1: z,
|
|
43
43
|
mintAccountPart2: B,
|
|
44
|
-
amountChanges:
|
|
45
|
-
inAmounts:
|
|
46
|
-
inH0Ax:
|
|
47
|
-
inH0Ay:
|
|
48
|
-
inTimeStamps:
|
|
44
|
+
amountChanges: U,
|
|
45
|
+
inAmounts: y.map((e) => e.map((e) => e.amount.toString())),
|
|
46
|
+
inH0Ax: y.map((e) => e.map((e) => u(e)[0].toString())),
|
|
47
|
+
inH0Ay: y.map((e) => e.map((e) => u(e)[1].toString())),
|
|
48
|
+
inTimeStamps: y.map((e) => e.map((e) => e.timeStamp)),
|
|
49
49
|
inNullifiers: q,
|
|
50
|
-
inCommitmentSiblings:
|
|
51
|
-
inCommitmentSiblingSides:
|
|
52
|
-
outAmounts:
|
|
53
|
-
outTimeStamp: BigInt(
|
|
54
|
-
outPublicKeys:
|
|
50
|
+
inCommitmentSiblings: W,
|
|
51
|
+
inCommitmentSiblingSides: ae,
|
|
52
|
+
outAmounts: b.map((e) => e.map((e) => e.amount.toString())),
|
|
53
|
+
outTimeStamp: BigInt(b[0][0].timeStamp),
|
|
54
|
+
outPublicKeys: b.map((e) => e.map((e) => e.getStealthAddress())),
|
|
55
55
|
outCommitments: J,
|
|
56
56
|
calldataHash: V,
|
|
57
57
|
messageSeed: F,
|
|
58
|
-
swapperAccountSalt:
|
|
58
|
+
swapperAccountSalt: O,
|
|
59
59
|
H0Ax: Y,
|
|
60
60
|
H0Ay: X
|
|
61
|
-
}, { zkCallData:
|
|
61
|
+
}, { zkCallData: ce, publicSignals: le, commitmentValidationData: $ } = await p(D, _, v, y, `mainSolanaCircuit${H}`, se), [ue, de, fe] = ce;
|
|
62
62
|
return {
|
|
63
|
-
proofAArr:
|
|
64
|
-
proofBArr:
|
|
65
|
-
proofCArr:
|
|
66
|
-
publicInputsArr:
|
|
67
|
-
commitmentValidationData:
|
|
63
|
+
proofAArr: ue.map(BigInt).map(d).flat(),
|
|
64
|
+
proofBArr: de.flat().map(BigInt).map(d).flat(),
|
|
65
|
+
proofCArr: fe.map(BigInt).map(d).flat(),
|
|
66
|
+
publicInputsArr: le.map(BigInt).map(d),
|
|
67
|
+
commitmentValidationData: $,
|
|
68
68
|
rootHashHinkalIndex: K,
|
|
69
69
|
encryptedOutputs: P,
|
|
70
70
|
onChainEncryptedOutput: N
|
|
71
71
|
};
|
|
72
72
|
};
|
|
73
73
|
//#endregion
|
|
74
|
-
export {
|
|
74
|
+
export { g as constructSolanaZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(`./verifySignedEnclaveResponse.cjs`);var i=async(i,a)=>{let{keyCiphertext:o,inputCiphertext:s}=await n.makeEnclaveHandshakeAndEncryptInput(a),c=await t.httpClient.post(`${e.ENCLAVE_URL}${i}`,{key:o,inputs:s});return r.verifySignedEnclaveResponse(c.data,c.signature)},
|
|
1
|
+
const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(`./verifySignedEnclaveResponse.cjs`);var i=e=>e?.flat().filter(e=>e.amount>0n).map(e=>e.getCommitment()),a=async(i,a)=>{let{keyCiphertext:o,inputCiphertext:s}=await n.makeEnclaveHandshakeAndEncryptInput(a),c=await t.httpClient.post(`${e.ENCLAVE_URL}${i}`,{key:o,inputs:s});return r.verifySignedEnclaveResponse(c.data,c.signature)},o=e=>{if(Array.isArray(e))return`[${e.map(o).join(`,`)}]`;if(e&&typeof e==`object`){let t=e;return`{${Object.keys(t).filter(e=>t[e]!==void 0).sort().map(e=>`${JSON.stringify(e)}:${o(t[e])}`).join(`,`)}}`}return JSON.stringify(e)},s=(e,t)=>{if(o({chainId:String(e.chainId),erc20Addresses:e.erc20Addresses,amountChanges:e.amountChanges,externalAddress:e.externalAddress,...e.originalSender?{originalSender:e.originalSender}:{},relay:e.relay??``,feeStructure:e.feeStructure?{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()}:null,externalActionId:e.externalActionId??``,externalActionMetadata:e.externalActionMetadata??``,onChainCreation:e.onChainCreation??null,recipientAddress:e.recipientAddress??null,recipientAmounts:e.recipientAmounts??null,selfOutputAmounts:e.selfOutputAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,createBlockedUtxos:e.createBlockedUtxos??!1,...e.forceEmptyUtxos?{forceEmptyUtxos:!0}:{},messageSeed:e.messageSeed??``,skipLock:e.skipLock??!1})!==o(t))throw Error(`Enclave prepare-tx response does not match the request sent - refusing to sign`)},c=(e,t)=>{let n={chainId:String(e.chainId),mintAddresses:e.mintAddresses,amountChanges:e.amountChanges,relayAddress:e.relayAddress,recipient:e.recipient,signer:e.signer??e.relayAddress,functionName:e.functionName??`transact`,accounts:e.accounts,onChainCreation:e.onChainCreation??null,relayerFee:e.relayerFee??`0`,variableRate:e.variableRate??`0`,hinkalInstructions:e.hinkalInstructions??null,remainingAccounts:e.remainingAccounts??null,swapperAccountSalt:e.swapperAccountSalt??`0`,recipientAddress:e.recipientAddress??``,recipientAmounts:e.recipientAmounts??null,inputCommitments:e.inputCommitments??null,useBlockedUtxos:e.useBlockedUtxos??!1,messageSeed:e.messageSeed??``};if(e.recipientAmount&&(n.recipientAmount=e.recipientAmount),e.displayRecipient&&(n.displayRecipient=e.displayRecipient),o(n)!==o(t))throw Error(`Enclave prepare-solana-tx response does not match the request sent - refusing to sign`)},l=e=>({R8:e.R8.map(String),S:e.S.toString()}),u=e=>({feeToken:e.feeToken,flatFee:e.flatFee.toString(),variableRate:e.variableRate.toString()}),d=(e,t)=>{if(o({chainId:String(e.chainId),erc20Address:e.erc20Address,externalAddress:e.externalAddress,relay:e.relay,feeStructure:{feeToken:e.feeStructure.feeToken,flatFee:e.feeStructure.flatFee.toString(),variableRate:e.feeStructure.variableRate.toString()},hashedEthereumAddress:e.hashedEthereumAddress})!==o(t))throw Error(`Enclave prepare-stuck-withdraw response does not match the request sent - refusing to sign`)},f=async(e,t,n=e.userKeys)=>{let r={...t,amountChanges:t.amountChanges.map(String),recipientAmounts:t.recipientAmounts?.map(e=>e.map(String)),selfOutputAmounts:t.selfOutputAmounts?.map(String),messageSeed:t.messageSeed?.toString(),nullifyingKey:n.getShieldedPrivateKey(),spendingPublicKey:n.getSpendingKeyPair().pubSpendingBJJPoint.map(String)},i=await a(`/prepare-tx`,r);return s(r,i.request),i},p=async(e,t)=>{let{nullifierCount:n}=await a(`/estimate-nullifiers`,{...t,amountChanges:t.amountChanges.map(String),nullifyingKey:e.userKeys.getShieldedPrivateKey(),spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)});return n},m=async(e,t,n=e.userKeys)=>{let r={...t,amountChanges:t.amountChanges.map(String),relayerFee:t.relayerFee?.toString(),variableRate:t.variableRate?.toString(),swapperAccountSalt:t.swapperAccountSalt?.toString(),recipientAmounts:t.recipientAmounts?.map(String),messageSeed:t.messageSeed?.toString(),nullifyingKey:n.getShieldedPrivateKey(),spendingPublicKey:n.getSpendingKeyPair().pubSpendingBJJPoint.map(String)},i=await a(`/prepare-solana-tx`,r);return c(r,i.request),i},h=async(e,t)=>{let n={...t,nullifyingKey:e.userKeys.getShieldedPrivateKey(),spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)},{jobs:r,request:i}=await a(`/prepare-stuck-withdraw`,n);return d(n,i),r},g=async(e,t)=>{let n=Object.fromEntries(Object.entries(t.feeStructures).map(([e,t])=>[e,u(t)])),{jobs:r}=await a(`/prepare-solana-stuck-withdraw`,{...t,feeStructures:n,nullifyingKey:e.userKeys.getShieldedPrivateKey(),spendingPublicKey:e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)});return r},_=async(e,t)=>a(`/finalize-tx`,{jobId:e,eddsaSignature:l(t)}),v=async(e,t)=>a(`/finalize-solana-tx`,{jobId:e,eddsaSignature:l(t)}),y=async(e,t,n,r)=>{let{txHash:i}=await a(`/finalize-tx-relay`,{jobId:e,eddsaSignature:l(t),chainId:n,adminData:r?.adminData,authorizationData:r?.authorizationData,withUniswapWorkAround:r?.withUniswapWorkAround});return i},b=async(e,t,n,r)=>{let{txHash:i}=await a(`/finalize-solana-tx-relay`,{jobId:e,eddsaSignature:l(t),chainId:n,adminData:r?.adminData});return i};exports.collectInputCommitments=i,exports.estimateNullifiersEnclaveCall=p,exports.finalizeSolanaTxEnclaveCall=v,exports.finalizeSolanaTxEnclaveCallRelay=b,exports.finalizeTxEnclaveCall=_,exports.finalizeTxEnclaveCallRelay=y,exports.prepareSolanaStuckWithdrawEnclaveCall=g,exports.prepareSolanaTxEnclaveCall=m,exports.prepareStuckWithdrawEnclaveCall=h,exports.prepareTxEnclaveCall=f;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { IHinkal } from '../../data-structures/Hinkal/IHinkal';
|
|
2
2
|
import { UserKeys } from '../../data-structures/crypto-keys/keys';
|
|
3
|
+
import { Utxo } from '../../data-structures/utxo/Utxo';
|
|
3
4
|
import { EstimateNullifiersParams, FinalizeSolanaTxResponseType, FinalizeTxResponseType, PreparedJobType, PrepareSolanaStuckWithdrawParams, PrepareSolanaTxParams, PrepareSolanaTxResponseType, PrepareStuckWithdrawRequestType, PrepareTxParams, PrepareTxResponseType } from '../../types/remote-tx-build.types';
|
|
4
5
|
import { AdminDataType } from '../../types/admin.types';
|
|
5
6
|
import { AuthorizationData } from '../../types/hinkal.types';
|
|
7
|
+
export declare const collectInputCommitments: (inputUtxos?: Utxo[][]) => string[] | undefined;
|
|
6
8
|
export declare const prepareTxEnclaveCall: (hinkal: IHinkal, params: PrepareTxParams, userKeys?: UserKeys) => Promise<PrepareTxResponseType>;
|
|
7
9
|
export declare const estimateNullifiersEnclaveCall: (hinkal: IHinkal, params: EstimateNullifiersParams) => Promise<number>;
|
|
8
10
|
export declare const prepareSolanaTxEnclaveCall: (hinkal: IHinkal, params: PrepareSolanaTxParams, userKeys?: UserKeys) => Promise<PrepareSolanaTxResponseType>;
|
|
@@ -4,21 +4,21 @@ import "../../data-structures/http/index.mjs";
|
|
|
4
4
|
import { makeEnclaveHandshakeAndEncryptInput as n } from "../utils/encryptInputForEnclave.mjs";
|
|
5
5
|
import { verifySignedEnclaveResponse as r } from "./verifySignedEnclaveResponse.mjs";
|
|
6
6
|
//#region libs/shared/common/src/functions/snarkjs/constructTxEnclave.ts
|
|
7
|
-
var i = async (i, a) => {
|
|
7
|
+
var i = (e) => e?.flat().filter((e) => e.amount > 0n).map((e) => e.getCommitment()), a = async (i, a) => {
|
|
8
8
|
let { keyCiphertext: o, inputCiphertext: s } = await n(a), c = await t.post(`${e}${i}`, {
|
|
9
9
|
key: o,
|
|
10
10
|
inputs: s
|
|
11
11
|
});
|
|
12
12
|
return r(c.data, c.signature);
|
|
13
|
-
},
|
|
14
|
-
if (Array.isArray(e)) return `[${e.map(
|
|
13
|
+
}, o = (e) => {
|
|
14
|
+
if (Array.isArray(e)) return `[${e.map(o).join(",")}]`;
|
|
15
15
|
if (e && typeof e == "object") {
|
|
16
16
|
let t = e;
|
|
17
|
-
return `{${Object.keys(t).filter((e) => t[e] !== void 0).sort().map((e) => `${JSON.stringify(e)}:${
|
|
17
|
+
return `{${Object.keys(t).filter((e) => t[e] !== void 0).sort().map((e) => `${JSON.stringify(e)}:${o(t[e])}`).join(",")}}`;
|
|
18
18
|
}
|
|
19
19
|
return JSON.stringify(e);
|
|
20
|
-
},
|
|
21
|
-
if (
|
|
20
|
+
}, s = (e, t) => {
|
|
21
|
+
if (o({
|
|
22
22
|
chainId: String(e.chainId),
|
|
23
23
|
erc20Addresses: e.erc20Addresses,
|
|
24
24
|
amountChanges: e.amountChanges,
|
|
@@ -42,8 +42,8 @@ var i = async (i, a) => {
|
|
|
42
42
|
...e.forceEmptyUtxos ? { forceEmptyUtxos: !0 } : {},
|
|
43
43
|
messageSeed: e.messageSeed ?? "",
|
|
44
44
|
skipLock: e.skipLock ?? !1
|
|
45
|
-
}) !==
|
|
46
|
-
},
|
|
45
|
+
}) !== o(t)) throw Error("Enclave prepare-tx response does not match the request sent - refusing to sign");
|
|
46
|
+
}, c = (e, t) => {
|
|
47
47
|
let n = {
|
|
48
48
|
chainId: String(e.chainId),
|
|
49
49
|
mintAddresses: e.mintAddresses,
|
|
@@ -65,16 +65,16 @@ var i = async (i, a) => {
|
|
|
65
65
|
useBlockedUtxos: e.useBlockedUtxos ?? !1,
|
|
66
66
|
messageSeed: e.messageSeed ?? ""
|
|
67
67
|
};
|
|
68
|
-
if (e.recipientAmount && (n.recipientAmount = e.recipientAmount), e.displayRecipient && (n.displayRecipient = e.displayRecipient),
|
|
69
|
-
},
|
|
68
|
+
if (e.recipientAmount && (n.recipientAmount = e.recipientAmount), e.displayRecipient && (n.displayRecipient = e.displayRecipient), o(n) !== o(t)) throw Error("Enclave prepare-solana-tx response does not match the request sent - refusing to sign");
|
|
69
|
+
}, l = (e) => ({
|
|
70
70
|
R8: e.R8.map(String),
|
|
71
71
|
S: e.S.toString()
|
|
72
|
-
}),
|
|
72
|
+
}), u = (e) => ({
|
|
73
73
|
feeToken: e.feeToken,
|
|
74
74
|
flatFee: e.flatFee.toString(),
|
|
75
75
|
variableRate: e.variableRate.toString()
|
|
76
|
-
}),
|
|
77
|
-
if (
|
|
76
|
+
}), d = (e, t) => {
|
|
77
|
+
if (o({
|
|
78
78
|
chainId: String(e.chainId),
|
|
79
79
|
erc20Address: e.erc20Address,
|
|
80
80
|
externalAddress: e.externalAddress,
|
|
@@ -85,8 +85,8 @@ var i = async (i, a) => {
|
|
|
85
85
|
variableRate: e.feeStructure.variableRate.toString()
|
|
86
86
|
},
|
|
87
87
|
hashedEthereumAddress: e.hashedEthereumAddress
|
|
88
|
-
}) !==
|
|
89
|
-
},
|
|
88
|
+
}) !== o(t)) throw Error("Enclave prepare-stuck-withdraw response does not match the request sent - refusing to sign");
|
|
89
|
+
}, f = async (e, t, n = e.userKeys) => {
|
|
90
90
|
let r = {
|
|
91
91
|
...t,
|
|
92
92
|
amountChanges: t.amountChanges.map(String),
|
|
@@ -95,17 +95,17 @@ var i = async (i, a) => {
|
|
|
95
95
|
messageSeed: t.messageSeed?.toString(),
|
|
96
96
|
nullifyingKey: n.getShieldedPrivateKey(),
|
|
97
97
|
spendingPublicKey: n.getSpendingKeyPair().pubSpendingBJJPoint.map(String)
|
|
98
|
-
},
|
|
99
|
-
return
|
|
100
|
-
},
|
|
101
|
-
let { nullifierCount: n } = await
|
|
98
|
+
}, i = await a("/prepare-tx", r);
|
|
99
|
+
return s(r, i.request), i;
|
|
100
|
+
}, p = async (e, t) => {
|
|
101
|
+
let { nullifierCount: n } = await a("/estimate-nullifiers", {
|
|
102
102
|
...t,
|
|
103
103
|
amountChanges: t.amountChanges.map(String),
|
|
104
104
|
nullifyingKey: e.userKeys.getShieldedPrivateKey(),
|
|
105
105
|
spendingPublicKey: e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)
|
|
106
106
|
});
|
|
107
107
|
return n;
|
|
108
|
-
},
|
|
108
|
+
}, m = async (e, t, n = e.userKeys) => {
|
|
109
109
|
let r = {
|
|
110
110
|
...t,
|
|
111
111
|
amountChanges: t.amountChanges.map(String),
|
|
@@ -116,47 +116,47 @@ var i = async (i, a) => {
|
|
|
116
116
|
messageSeed: t.messageSeed?.toString(),
|
|
117
117
|
nullifyingKey: n.getShieldedPrivateKey(),
|
|
118
118
|
spendingPublicKey: n.getSpendingKeyPair().pubSpendingBJJPoint.map(String)
|
|
119
|
-
},
|
|
120
|
-
return
|
|
121
|
-
},
|
|
119
|
+
}, i = await a("/prepare-solana-tx", r);
|
|
120
|
+
return c(r, i.request), i;
|
|
121
|
+
}, h = async (e, t) => {
|
|
122
122
|
let n = {
|
|
123
123
|
...t,
|
|
124
124
|
nullifyingKey: e.userKeys.getShieldedPrivateKey(),
|
|
125
125
|
spendingPublicKey: e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)
|
|
126
|
-
}, { jobs: r, request:
|
|
127
|
-
return
|
|
128
|
-
},
|
|
129
|
-
let n = Object.fromEntries(Object.entries(t.feeStructures).map(([e, t]) => [e,
|
|
126
|
+
}, { jobs: r, request: i } = await a("/prepare-stuck-withdraw", n);
|
|
127
|
+
return d(n, i), r;
|
|
128
|
+
}, g = async (e, t) => {
|
|
129
|
+
let n = Object.fromEntries(Object.entries(t.feeStructures).map(([e, t]) => [e, u(t)])), { jobs: r } = await a("/prepare-solana-stuck-withdraw", {
|
|
130
130
|
...t,
|
|
131
131
|
feeStructures: n,
|
|
132
132
|
nullifyingKey: e.userKeys.getShieldedPrivateKey(),
|
|
133
133
|
spendingPublicKey: e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint.map(String)
|
|
134
134
|
});
|
|
135
135
|
return r;
|
|
136
|
-
},
|
|
136
|
+
}, _ = async (e, t) => a("/finalize-tx", {
|
|
137
137
|
jobId: e,
|
|
138
|
-
eddsaSignature:
|
|
139
|
-
}),
|
|
138
|
+
eddsaSignature: l(t)
|
|
139
|
+
}), v = async (e, t) => a("/finalize-solana-tx", {
|
|
140
140
|
jobId: e,
|
|
141
|
-
eddsaSignature:
|
|
142
|
-
}),
|
|
143
|
-
let { txHash:
|
|
141
|
+
eddsaSignature: l(t)
|
|
142
|
+
}), y = async (e, t, n, r) => {
|
|
143
|
+
let { txHash: i } = await a("/finalize-tx-relay", {
|
|
144
144
|
jobId: e,
|
|
145
|
-
eddsaSignature:
|
|
145
|
+
eddsaSignature: l(t),
|
|
146
146
|
chainId: n,
|
|
147
147
|
adminData: r?.adminData,
|
|
148
148
|
authorizationData: r?.authorizationData,
|
|
149
149
|
withUniswapWorkAround: r?.withUniswapWorkAround
|
|
150
150
|
});
|
|
151
|
-
return
|
|
152
|
-
},
|
|
153
|
-
let { txHash:
|
|
151
|
+
return i;
|
|
152
|
+
}, b = async (e, t, n, r) => {
|
|
153
|
+
let { txHash: i } = await a("/finalize-solana-tx-relay", {
|
|
154
154
|
jobId: e,
|
|
155
|
-
eddsaSignature:
|
|
155
|
+
eddsaSignature: l(t),
|
|
156
156
|
chainId: n,
|
|
157
157
|
adminData: r?.adminData
|
|
158
158
|
});
|
|
159
|
-
return
|
|
159
|
+
return i;
|
|
160
160
|
};
|
|
161
161
|
//#endregion
|
|
162
|
-
export {
|
|
162
|
+
export { i as collectInputCommitments, p as estimateNullifiersEnclaveCall, v as finalizeSolanaTxEnclaveCall, b as finalizeSolanaTxEnclaveCallRelay, _ as finalizeTxEnclaveCall, y as finalizeTxEnclaveCallRelay, g as prepareSolanaStuckWithdrawEnclaveCall, m as prepareSolanaTxEnclaveCall, h as prepareStuckWithdrawEnclaveCall, f as prepareTxEnclaveCall };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`./serialize.utils.cjs`);function t(e,t){return Object.values(e).includes(t)}function n(n,r,i=!1){if(t(n,r))return r;let a=`Value ${e.safeJsonStringify(r)} is not a valid member of enum ${e.safeJsonStringify(n)}.`;if(i)throw Error(a)}exports.toEnumValue=n;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { safeJsonStringify as e } from "./serialize.utils.mjs";
|
|
2
|
+
//#region libs/shared/common/src/functions/utils/enum.utils.ts
|
|
3
|
+
function t(e, t) {
|
|
4
|
+
return Object.values(e).includes(t);
|
|
5
|
+
}
|
|
6
|
+
function n(n, r, i = !1) {
|
|
7
|
+
if (t(n, r)) return r;
|
|
8
|
+
let a = `Value ${e(r)} is not a valid member of enum ${e(n)}.`;
|
|
9
|
+
if (i) throw Error(a);
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { n as toEnumValue };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./abi.utils.cjs`),require(`./serialize.utils.cjs`),require(`./caseInsensitive.utils.cjs`),require(`./amounts.utils.cjs`),require(`./time.utils.cjs`),require(`./upToDateState.cjs`),require(`./cacheFunctions.cjs`),require(`./enclaveHandshakeService.cjs`),require(`./encryptInputForEnclave.cjs`),require(`./solanaMint.utils.cjs`),require(`./serialize-utxos.utils.cjs`),require(`./customEnclaveFunctionsRegister.cjs`),require(`./addresses.cjs`),require(`./tron.utils.cjs`),require(`./legacyKeys.cjs`),require(`./auth.utils.cjs`),require(`./string.utils.cjs`),require(`./token-check.utils.cjs`),require(`./map.utils.cjs`),require(`./mutexes.utils.cjs`),require(`./erc20tokenFunctions.cjs`),require(`../pre-transaction/outputUtxoProcessing.cjs`),require(`./external-action.utils.cjs`),require(`../pre-transaction/solana.cjs`),require(`../pre-transaction/process-gas-estimates.cjs`),require(`../pre-transaction/getVolatileTransferAmount.cjs`),require(`../pre-transaction/constructAdminData.cjs`),require(`./create-provider.cjs`),require(`../pre-transaction/calculateSolanaNullifierCount.cjs`),require(`../pre-transaction/convert-okx-instructions.cjs`),require(`./process.utils.cjs`),require(`../pre-transaction/sendV0Transaction.cjs`),require(`./bytes32.utils.cjs`),require(`../pre-transaction/
|
|
1
|
+
require(`./abi.utils.cjs`),require(`./serialize.utils.cjs`),require(`./caseInsensitive.utils.cjs`),require(`./amounts.utils.cjs`),require(`./time.utils.cjs`),require(`./upToDateState.cjs`),require(`./cacheFunctions.cjs`),require(`./enclaveHandshakeService.cjs`),require(`./encryptInputForEnclave.cjs`),require(`./solanaMint.utils.cjs`),require(`./serialize-utxos.utils.cjs`),require(`./customEnclaveFunctionsRegister.cjs`),require(`./addresses.cjs`),require(`./tron.utils.cjs`),require(`./legacyKeys.cjs`),require(`./auth.utils.cjs`),require(`./string.utils.cjs`),require(`./token-check.utils.cjs`),require(`./map.utils.cjs`),require(`./mutexes.utils.cjs`),require(`./erc20tokenFunctions.cjs`),require(`../pre-transaction/outputUtxoProcessing.cjs`),require(`./external-action.utils.cjs`),require(`../pre-transaction/solana.cjs`),require(`../pre-transaction/process-gas-estimates.cjs`),require(`../pre-transaction/getVolatileTransferAmount.cjs`),require(`../pre-transaction/constructAdminData.cjs`),require(`./create-provider.cjs`),require(`../pre-transaction/calculateSolanaNullifierCount.cjs`),require(`../pre-transaction/convert-okx-instructions.cjs`),require(`./process.utils.cjs`),require(`../pre-transaction/sendV0Transaction.cjs`),require(`./bytes32.utils.cjs`),require(`../pre-transaction/getFeeStructure.cjs`),require(`../pre-transaction/getExternalSwapAddress.cjs`),require(`../pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`../pre-transaction/buildCommitmentValidationData.cjs`),require(`../pre-transaction/index.cjs`),require(`./getContractAddress.cjs`),require(`./getSignerFromContract.cjs`),require(`./tronSimulation.utils.cjs`),require(`./tx-confirmation.utils.cjs`),require(`./getUtxosFromReceipt.utils.cjs`),require(`./getRecipientInfoFromUserKeys.cjs`),require(`./resolve-domain-address.cjs`),require(`./resolve-sync.utils.cjs`),require(`./convertIntegrationProviderToExternalActionId.cjs`),require(`./evmNetworkFunctions.cjs`),require(`./userAgent.cjs`),require(`./reloadPage.cjs`),require(`./cacheDevice.utils.cjs`),require(`./getBlockExplorerUrl.cjs`),require(`./involves-permit2-op.cjs`),require(`./convertEmporiumOpToCallInfo.cjs`),require(`./publicBalance.utils.cjs`),require(`./rpc-int-encode.cjs`),require(`./walletBalances.utils.cjs`),require(`./nftTokenFunctions.cjs`),require(`./inLogicMetadata.cjs`),require(`./networks.utils.cjs`),require(`./postToOffscreen.cjs`),require(`./solanaSendPreflight.utils.cjs`),require(`./voidWallets.utils.cjs`),require(`./prepareHinkal.cjs`),require(`./getUtxosFromReceiptSolana.cjs`),require(`./fees.utils.cjs`),require(`./proxyAvatar.utils.cjs`),require(`./enclave-utxo-storage.cjs`),require(`./enclave-signature-storage.cjs`),require(`./buildClaimableDepositPlan.cjs`),require(`./deposit-claimable.utils.cjs`),require(`./formatter.cjs`),require(`./transfer-claimable.utils.cjs`),require(`./bridge-flow.utils.cjs`),require(`./bridge-claimable.utils.cjs`),require(`./temp-wallet.utils.cjs`),require(`./dispatchBalanceRefreshes.cjs`),require(`./lifi.utils.cjs`),require(`./enclave-recipient-info-storage.cjs`),require(`./solana-memo.cjs`),require(`./mnemonics.cjs`),require(`./nearIntents.utils.cjs`),require(`./enclaveSessionSigning.cjs`),require(`./validateWalletAddress.cjs`),require(`./waasStamp.cjs`);
|
|
@@ -31,7 +31,6 @@ import "../pre-transaction/convert-okx-instructions.mjs";
|
|
|
31
31
|
import "./process.utils.mjs";
|
|
32
32
|
import "../pre-transaction/sendV0Transaction.mjs";
|
|
33
33
|
import "./bytes32.utils.mjs";
|
|
34
|
-
import "../pre-transaction/ensureAmountChanges.mjs";
|
|
35
34
|
import "../pre-transaction/getFeeStructure.mjs";
|
|
36
35
|
import "../pre-transaction/getExternalSwapAddress.mjs";
|
|
37
36
|
import "../pre-transaction/waitForDepositedUtxosInMerkleTree.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chains.types.cjs`),require(`./hinkal.types.cjs`),require(`./circom-data.types.cjs`),require(`./ethereum-network.types.cjs`),require(`./external-action.types.cjs`),require(`./token.types.cjs`),require(`./transactions.types.cjs`),require(`./admin.types.cjs`),require(`./activities.types.cjs`),require(`./transaction.types.cjs`),require(`./balances.types.cjs`),require(`./cache.types.cjs`),require(`./eip5792.types.cjs`),require(`./offscreen.types.cjs`),require(`./scheduled-transactions.types.cjs`),require(`./events.types.cjs`),require(`./schedule.types.cjs`),require(`./transact.types.cjs`);
|
|
1
|
+
require(`./chains.types.cjs`),require(`./hinkal.types.cjs`),require(`./circom-data.types.cjs`),require(`./ethereum-network.types.cjs`),require(`./external-action.types.cjs`),require(`./token.types.cjs`),require(`./transactions.types.cjs`),require(`./admin.types.cjs`),require(`./activities.types.cjs`),require(`./transaction.types.cjs`),require(`./balances.types.cjs`),require(`./cache.types.cjs`),require(`./eip5792.types.cjs`),require(`./offscreen.types.cjs`),require(`./scheduled-transactions.types.cjs`),require(`./events.types.cjs`),require(`./schedule.types.cjs`),require(`./transact.types.cjs`),require(`./solana-transact.types.cjs`);
|