@gurge/sdk-react-native 0.3.71 → 0.3.76
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/_virtual/_rolldown/runtime.mjs +11 -2
- package/common/src/API/getCoingeckoPrice.cjs +1 -1
- package/common/src/API/proxyAccountsCalls.cjs +1 -1
- package/common/src/crypto/EddsaRN.cjs +1 -1
- package/common/src/crypto/babyJub.cjs +1 -1
- package/common/src/crypto/babyJub.mjs +7 -6
- package/common/src/crypto/ecdh-sealed-keys.cjs +1 -1
- package/common/src/crypto/ecdh.cjs +1 -1
- package/common/src/crypto/eddsa.cjs +1 -1
- package/common/src/crypto/eddsa.mjs +7 -6
- package/common/src/crypto/poseidon.cjs +1 -1
- package/common/src/crypto/poseidon.mjs +13 -13
- package/common/src/crypto/preProcessing.cjs +1 -1
- package/common/src/data-structures/AccountActions/AccountActions.cjs +1 -1
- package/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySend.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxyShield.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaProxySwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
- package/common/src/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
- package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/activity-db.mjs +38 -38
- package/common/src/data-structures/IndexedDB/balances-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/balances-db.mjs +18 -16
- package/common/src/data-structures/IndexedDB/contact-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/contact-db.mjs +16 -14
- package/common/src/data-structures/IndexedDB/key-val-store.cjs +1 -1
- package/common/src/data-structures/IndexedDB/key-val-store.mjs +12 -12
- package/common/src/data-structures/IndexedDB/pay-activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/pay-activity-db.mjs +10 -8
- package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/signatures-db.mjs +23 -21
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +32 -31
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +25 -25
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +47 -46
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +20 -20
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +19 -19
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +19 -19
- package/common/src/data-structures/TokenDBs/token-visibility-db.cjs +1 -1
- package/common/src/data-structures/TokenDBs/token-visibility-db.mjs +45 -44
- package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
- package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.cjs +1 -1
- package/common/src/data-structures/crypto-keys/keys.cjs +1 -1
- package/common/src/data-structures/event-service/evm/AbstractNullifierSnapshotService.cjs +1 -1
- package/common/src/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
- package/common/src/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.cjs +1 -1
- package/common/src/data-structures/event-service/solana/SolanaBlockchainEventEmitter.cjs +1 -1
- package/common/src/data-structures/http/BasicHttpClient.cjs +1 -1
- package/common/src/functions/pre-transaction/convert-okx-instructions.cjs +1 -1
- package/common/src/functions/pre-transaction/ensureAmountChanges.cjs +1 -1
- package/common/src/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
- package/common/src/functions/pre-transaction/sendV0Transaction.cjs +1 -1
- package/common/src/functions/pre-transaction/solana.cjs +1 -1
- package/common/src/functions/pre-transaction/solanaTransfer.utils.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.helpers.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
- package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
- package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/fetchOnChainRootHashes.cjs +1 -1
- package/common/src/functions/snarkjs/signedMessageHash.cjs +1 -1
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.mjs +4 -1
- package/common/src/functions/utils/abi.utils.cjs +1 -1
- package/common/src/functions/utils/addresses.cjs +1 -1
- package/common/src/functions/utils/cacheFunctions.cjs +1 -1
- package/common/src/functions/utils/cacheFunctions.mjs +13 -13
- package/common/src/functions/utils/convertEmporiumOpToCallInfo.cjs +1 -1
- package/common/src/functions/utils/create-provider.cjs +1 -1
- package/common/src/functions/utils/encryptInputForEnclave.cjs +1 -1
- package/common/src/functions/utils/external-action.utils.cjs +1 -1
- package/common/src/functions/utils/getSignerFromContract.cjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
- package/common/src/functions/utils/ipfs.cjs +1 -1
- package/common/src/functions/utils/ipfs.mjs +3 -1
- package/common/src/functions/utils/mnemonics.cjs +1 -1
- package/common/src/functions/utils/publicBalance.utils.cjs +1 -1
- package/common/src/functions/utils/solana-memo.cjs +1 -1
- package/common/src/functions/utils/solanaMint.utils.cjs +1 -1
- package/common/src/functions/utils/tron.utils.cjs +1 -1
- package/common/src/functions/utils/userAgent.cjs +1 -1
- package/common/src/functions/web3/etherFunctions.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
- package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
- package/common/src/functions/web3/functionCalls/approveToken.cjs +1 -1
- package/common/src/functions/web3/functionCalls/constructBatchCall.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/common/src/functions/web3/getContractMetadata.cjs +1 -1
- package/common/src/functions/web3/okxAPI.cjs +1 -1
- package/common/src/functions/web3/uniswapAPI.cjs +1 -1
- package/common/src/mutexes/chainBalanceRwLock.cjs +1 -1
- package/common/src/mutexes/mutex.cjs +1 -1
- package/common/src/providers/EthersProviderAdapter.cjs +1 -1
- package/common/src/providers/SolanaProviderAdapter.cjs +1 -1
- package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
- package/common/src/types/hinkal.types.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/package.json +1 -1
- package/react-native/bridge/HinkalRNWorker.cjs +1 -1
- package/shims/circomlibjs-hinkal-fork.cjs +14 -0
- package/shims/circomlibjs-hinkal-fork.mjs +3 -0
- package/shims/circomlibjs.cjs +15 -0
- package/shims/circomlibjs.mjs +3 -0
- package/shims/constants.cjs +7 -0
- package/shims/constants.mjs +3 -0
- package/shims/crypto.cjs +102 -0
- package/shims/crypto.mjs +3 -0
- package/shims/ffjavascript.cjs +5 -0
- package/shims/ffjavascript.mjs +3 -0
- package/shims/globals.cjs +15 -0
- package/shims/globals.mjs +3 -0
- package/shims/idb-keyval.cjs +75 -0
- package/shims/idb-keyval.mjs +3 -0
- package/shims/multiformats.cjs +1 -0
- package/shims/multiformats.mjs +3 -0
- package/shims/os.cjs +7 -0
- package/shims/os.mjs +3 -0
- package/shims/readline.cjs +6 -0
- package/shims/readline.mjs +3 -0
- package/shims/snarkjs.cjs +21 -0
- package/shims/snarkjs.mjs +3 -0
- package/shims/url.cjs +5 -0
- package/shims/url.mjs +3 -0
- package/shims/web-worker.cjs +7 -0
- package/shims/web-worker.mjs +3 -0
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
//#region \0rolldown/runtime.js
|
|
2
|
-
var e = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports),
|
|
2
|
+
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = (e, i, o, s) => {
|
|
3
|
+
if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
|
|
4
|
+
get: ((e) => i[e]).bind(null, d),
|
|
5
|
+
enumerable: !(s = n(i, d)) || s.enumerable
|
|
6
|
+
});
|
|
7
|
+
return e;
|
|
8
|
+
}, c = (n, r, a) => (a = n == null ? {} : e(i(n)), s(r || !n || !n.__esModule ? t(a, "default", {
|
|
9
|
+
value: n,
|
|
10
|
+
enumerable: !0
|
|
11
|
+
}) : a, n)), l = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
|
|
3
12
|
if (typeof require < "u") return require.apply(this, arguments);
|
|
4
13
|
throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
|
|
5
14
|
});
|
|
6
15
|
//#endregion
|
|
7
|
-
export {
|
|
16
|
+
export { o as __commonJSMin, l as __require, c as __toESM };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`);require(`../constants/coingecko.constants.cjs`);let t=require(`axios`);t=e.__toESM(t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/server.constants.cjs`),t=require(`./getServerURL.cjs`),n=require(`../data-structures/http/HttpClient.cjs`);require(`../data-structures/http/index.cjs`);const r=require(`../functions/utils/addresses.cjs`);let i=require(`ethers`);var a=(e,t)=>{let n=t.getShieldedPrivateKey(),r=`HinkalProxyAccounts|${e.toLowerCase()}|${n}`;return i.ethers.keccak256(i.ethers.toUtf8Bytes(r))},o=async(r,i)=>{let o=a(r,i);return await n.httpClient.get(`${t.SERVER_URL}${e.API_CONFIG.ROUTES.getProxyAccounts(o)}`)},s=async(i,o,s)=>{let c=a(i,o),l=r.hashEthereumAddress(i);return await n.httpClient.post(`${t.SERVER_URL}${e.API_CONFIG.ROUTES.updateProxyAccounts}`,{secureKey:c,hashedEthereumAddress:l,proxyAccounts:s})};exports.getProxyAccounts=o,exports.updateProxyAccounts=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./poseidon.cjs`),t=require(`../functions/utils/bigint-math.utils.cjs`),n=require(`./babyJub.cjs`);let r=require(`@noble/hashes/blake1.js`);var i=21888242871839275222246405745257275088614511777268538073601725287587578984328n/8n,a=(e,t=0,n=e.length-t)=>{let r=0n;for(let i=n-1;i>=0;--i)r=(r<<8n)+BigInt(e[t+i]);return r},o=(e,n,r,i)=>{let a=t.mod(r);for(let t=0;t<i;t+=1)e[n+t]=Number(a&255n),a>>=8n},s=e=>t.mod(e,i),c=e=>{let t=new Uint8Array(e);return t[0]&=248,t[31]&=127,t[31]|=64,t},l=class{constructor(e,t){this.babyJub=e,this.poseidon=t}prv2pub(e){let t=a(c((0,r.blake512)(e).slice(0,32)),0,32);return this.babyJub.mulPointEscalar(this.babyJub.Base8,t/8n)}signPoseidon(e,n){let i=c((0,r.blake512)(e)),l=a(i,0,32),u=this.babyJub.mulPointEscalar(this.babyJub.Base8,l/8n),d=new Uint8Array(64);d.set(i.slice(32),0),o(d,32,n,32);let f=s(a((0,r.blake512)(d),0,64)),p=this.babyJub.mulPointEscalar(this.babyJub.Base8,f),m=this.poseidon([p[0],p[1],u[0],u[1],n]);return{R8:p,S:s(f+s(t.mod(BigInt(this.poseidon.F.toString(m)))*l))}}},u=async()=>(await e.poseidonHolder.init(),await n.jubHolder.init(),new l(n.jubHolder.getJub(),e.poseidonHolder.getPoseidon()));exports.buildEddsaRN=u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require(`../constants/vite.constants.cjs`),t=require(`../../../shims/circomlibjs-hinkal-fork.cjs`),n=require(`./BabyJubRN.cjs`);var r=t.default,i=new class{babyjub=void 0;async init(){this.babyjub||=e.isReactNative?new n.BabyJubRN:await(0,r.buildBabyjub)()}getJub(){return this.babyjub}},a=()=>i.getJub();exports.babyJubInstance=a,exports.jubHolder=i;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { require_circomlibjs_hinkal_fork as t } from "../../../shims/circomlibjs-hinkal-fork.mjs";
|
|
3
|
+
import { BabyJubRN as n } from "./BabyJubRN.mjs";
|
|
4
|
+
//#region common/src/crypto/babyJub.ts
|
|
5
|
+
var r = t(), i = new class {
|
|
5
6
|
babyjub = void 0;
|
|
6
7
|
async init() {
|
|
7
|
-
this.babyjub ||= e ? new
|
|
8
|
+
this.babyjub ||= e ? new n() : await (0, r.buildBabyjub)();
|
|
8
9
|
}
|
|
9
10
|
getJub() {
|
|
10
11
|
return this.babyjub;
|
|
11
12
|
}
|
|
12
|
-
}(),
|
|
13
|
+
}(), a = () => i.getJub();
|
|
13
14
|
//#endregion
|
|
14
|
-
export {
|
|
15
|
+
export { a as babyJubInstance, i as jubHolder };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`);let t=require(`ethers`),n=require(`libsodium-wrappers`);n=e.__toESM(n);var r=()=>n.default.crypto_box_SEALBYTES+n.default.crypto_secretbox_KEYBYTES,i=({nonce:e,sealedKeys:t,ciphertext:n})=>{let i=t.length,a=new Uint8Array(1+e.length+i*r()+n.length),o=0;return a[o]=i,o+=1,a.set(e,o),o+=e.length,t.forEach(e=>{a.set(e,o),o+=e.length}),a.set(n,o),a},a=(e,r)=>{let a=n.default.crypto_secretbox_keygen(),o=n.default.randombytes_buf(n.default.crypto_secretbox_NONCEBYTES),s=n.default.crypto_secretbox_easy(e,o,a);return i({nonce:o,sealedKeys:r.map(e=>n.default.crypto_box_seal(a,t.ethers.getBytes(e))),ciphertext:s})};exports.encryptSealedKeys=a,exports.pack=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`);require(`ethers`);let t=require(`libsodium-wrappers`);t=e.__toESM(t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require(`../constants/vite.constants.cjs`),t=require(`../../../shims/circomlibjs-hinkal-fork.cjs`),n=require(`./EddsaRN.cjs`);var r=t.default,i=new class{eddsa=void 0;async init(){this.eddsa||=e.isReactNative?await n.buildEddsaRN():await(0,r.buildEddsa)()}getEddsa(){return this.eddsa}},a=()=>i.getEddsa();exports.eddsaHolder=i,exports.eddsaInstance=a;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { require_circomlibjs_hinkal_fork as t } from "../../../shims/circomlibjs-hinkal-fork.mjs";
|
|
3
|
+
import { buildEddsaRN as n } from "./EddsaRN.mjs";
|
|
4
|
+
//#region common/src/crypto/eddsa.ts
|
|
5
|
+
var r = t(), i = new class {
|
|
5
6
|
eddsa = void 0;
|
|
6
7
|
async init() {
|
|
7
|
-
this.eddsa ||= e ? await
|
|
8
|
+
this.eddsa ||= e ? await n() : await (0, r.buildEddsa)();
|
|
8
9
|
}
|
|
9
10
|
getEddsa() {
|
|
10
11
|
return this.eddsa;
|
|
11
12
|
}
|
|
12
|
-
}(),
|
|
13
|
+
}(), a = () => i.getEddsa();
|
|
13
14
|
//#endregion
|
|
14
|
-
export {
|
|
15
|
+
export { i as eddsaHolder, a as eddsaInstance };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants/vite.constants.cjs`),n=require(`../functions/utils/amounts.utils.cjs`),r=require(`../../../shims/circomlibjs-hinkal-fork.cjs`);let i=require(`ethers`),a=require(`poseidon-lite`);a=e.__toESM(a);var o=r.default,s=()=>{let e=e=>{let t=a[`poseidon${e.length}`];if(!t)throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);return t(e.map(e=>BigInt(e)))};return e.F={toString:e=>BigInt(e).toString()},e},c=new class{poseidon=void 0;async init(){this.poseidon||=t.isReactNative?s():await(0,o.buildPoseidon)()}getPoseidon(){return this.poseidon}};function l(...e){let t=c.getPoseidon();return n.toBigInt(t.F.toString(t(e)))}var u=(...e)=>{let t=c.getPoseidon();return i.ethers.toBeHex(t.F.toString(t([...e])))};exports.poseidonFunction=l,exports.poseidonHash=u,exports.poseidonHolder=c;
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
2
|
import { toBigInt as t } from "../functions/utils/amounts.utils.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { require_circomlibjs_hinkal_fork as n } from "../../../shims/circomlibjs-hinkal-fork.mjs";
|
|
4
|
+
import { ethers as r } from "ethers";
|
|
5
|
+
import * as i from "poseidon-lite";
|
|
6
6
|
//#region common/src/crypto/poseidon.ts
|
|
7
|
-
var a = () => {
|
|
7
|
+
var a = n(), o = () => {
|
|
8
8
|
let e = (e) => {
|
|
9
|
-
let t =
|
|
9
|
+
let t = i[`poseidon${e.length}`];
|
|
10
10
|
if (!t) throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);
|
|
11
11
|
return t(e.map((e) => BigInt(e)));
|
|
12
12
|
};
|
|
13
13
|
return e.F = { toString: (e) => BigInt(e).toString() }, e;
|
|
14
|
-
},
|
|
14
|
+
}, s = new class {
|
|
15
15
|
poseidon = void 0;
|
|
16
16
|
async init() {
|
|
17
|
-
this.poseidon ||= e ?
|
|
17
|
+
this.poseidon ||= e ? o() : await (0, a.buildPoseidon)();
|
|
18
18
|
}
|
|
19
19
|
getPoseidon() {
|
|
20
20
|
return this.poseidon;
|
|
21
21
|
}
|
|
22
22
|
}();
|
|
23
|
-
function
|
|
24
|
-
let n =
|
|
23
|
+
function c(...e) {
|
|
24
|
+
let n = s.getPoseidon();
|
|
25
25
|
return t(n.F.toString(n(e)));
|
|
26
26
|
}
|
|
27
|
-
var
|
|
28
|
-
let t =
|
|
29
|
-
return
|
|
27
|
+
var l = (...e) => {
|
|
28
|
+
let t = s.getPoseidon();
|
|
29
|
+
return r.toBeHex(t.F.toString(t([...e])));
|
|
30
30
|
};
|
|
31
31
|
//#endregion
|
|
32
|
-
export {
|
|
32
|
+
export { c as poseidonFunction, l as poseidonHash, s as poseidonHolder };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`./poseidon.cjs`),n=require(`./babyJub.cjs`),r=require(`./eddsa.cjs`);let i=require(`buffer`),a=require(`libsodium-wrappers`);a=e.__toESM(a);let o=require(`process`);o=e.__toESM(o);var s=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=i.Buffer,globalThis.process=o.default),await Promise.all([a.default.ready,t.poseidonHolder.init(),n.jubHolder.init(),...e?[]:[r.eddsaHolder.init()]])};exports.preProcessing=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(
|
|
1
|
+
const e=require(`../../../../_virtual/_rolldown/runtime.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../functions/utils/create-provider.cjs`);let r=require(`ethers`),i=require(`@solana/web3.js`),a=require(`bs58`);a=e.__toESM(a);let o=require(`tweetnacl`);o=e.__toESM(o);var s=class{static getEvmPrivateKeyFromSolanaPrivateKey=e=>{let t=a.default.decode(e).slice(0,32);return r.ethers.hexlify(t)};static getSolanaPrivateKeyFromEvmPrivateKey=e=>{let t=r.ethers.getBytes(e),n=i.Keypair.fromSeed(t);return a.default.encode(n.secretKey)};static getSolanaSignerFromPrivateKey=e=>{let t=a.default.decode(e);return i.Keypair.fromSecretKey(t)};static getSignerAddressFromPrivateKey(e,n){return t.isSolanaLike(e)?this.getSolanaSignerFromPrivateKey(n).publicKey.toString():new r.ethers.Wallet(n).address}static signMessageFromPrivateKey=async(e,n,i)=>{if(t.isSolanaLike(e)){let e=this.getSolanaSignerFromPrivateKey(n),t=r.ethers.isHexString(i)?r.ethers.getBytes(i):new TextEncoder().encode(i),a=o.default.sign.detached(t,e.secretKey);return`0x${Buffer.from(a).toString(`hex`)}`}let a=new r.ethers.Wallet(n),s=r.ethers.isHexString(i)?r.ethers.getBytes(i):i;return a.signMessage(s)};static signSolanaTransactionFromPrivateKey=(e,n,r)=>{if(!t.isSolanaLike(e))throw Error(`Solana transaction signing is only available for Solana chains`);let i=this.getSolanaSignerFromPrivateKey(n);r.sign([i])};static sendAndSignSolanaTransactionFromPrivateKey=async(e,t,n,r=!1)=>{let i=this.getSolanaSignerFromPrivateKey(t);return n.sign([i]),await e.sendRawTransaction(n.serialize(),{skipPreflight:r,preflightCommitment:`confirmed`})};static signTypedDataFromPrivateKey=async(e,n,i,a,o)=>{if(t.isSolanaLike(e))throw Error(`Solana does not support typed data`);return await new r.ethers.Wallet(n).signTypedData(i,a,o)};static authorizeDelegation=async(e,i,a,o)=>{if(t.isSolanaLike(e))throw Error(`Solana does not support delegation`);let s=n.createJsonRpcProvider(e);return await new r.ethers.Wallet(i).connect(s).authorize({address:a,...o!==void 0&&{nonce:o}})};static getAddressFromSubAccount=(e,n)=>t.isSolanaLike(e)?n.solanaAddress:n.ethAddress;static getPrivateKeyFromSubAccount=(e,n)=>t.isSolanaLike(e)?n.solanaPrivateKey:n.privateKey;static getAvailableAddressFromSubAccount=e=>{let t=e.ethAddress??e.solanaAddress;if(!t)throw Error(`No address available for subaccount`);return t}};exports.AccountActions=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../crypto/poseidon.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../API/scheduled-transactions-calls.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../TokenDBs/PrivateTokensDB.cjs`),f=require(`../../functions/utils/erc20tokenFunctions.cjs`),p=require(`../../functions/web3/events/getShieldedBalance.cjs`),m=require(`../../functions/web3/getContractMetadata.cjs`),h=require(`../../functions/utils/reloadPage.cjs`),g=require(`../../functions/utils/cacheDevice.utils.cjs`),_=require(`../../providers/SolanaProviderAdapter.cjs`),v=require(`../../functions/utils/enclave-signature-storage.cjs`),y=require(`../../functions/utils/mnemonics.cjs`),b=require(`../../functions/snarkjs/fetchOnChainRootHashes.cjs`),x=require(`../../functions/private-wallet/emporium.helpers.cjs`),S=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const C=require(`./hinkalDepositAndWithdraw.cjs`),w=require(`./hinkalSolanaDeposit.cjs`),T=require(`./hinkalSwap.cjs`),E=require(`./hinkalWithdraw.cjs`),D=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const O=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const k=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),A=require(`./hinkalPrivateWallet.cjs`),j=require(`./hinkalGetRecipientInfo.cjs`),M=require(`./hinkalSignSubAccount.cjs`),N=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const P=require(`./hinkalProoflessDeposit.cjs`),F=require(`./hinkalProxySwap.cjs`),ee=require(`./hinkalMultiSend.cjs`),I=require(`./hinkalTransfer.cjs`),L=require(`./hinkalProxyToPrivate.cjs`),R=require(`../../providers/TronProviderAdapter.cjs`),z=require(`./hinkalSolanaDepositAndWithdraw.cjs`),B=require(`./hinkalSolanaWithdraw.cjs`),V=require(`./hinkalSolanaTransfer.cjs`),H=require(`./hinkalSolanaSwap.cjs`),U=require(`./hinkalSolanaProxySend.cjs`),W=require(`./hinkalSolanaProxySwap.cjs`),G=require(`./hinkalSolanaProxyShield.cjs`),K=require(`./hinkalDepositAndBridge.cjs`),q=require(`./hinkalNearDepositAndBridge.cjs`),J=require(`./hinkalClaimUtxo.cjs`),Y=require(`./hinkalSolanaProoflessDeposit.cjs`),X=require(`./hinkalSolanaClaimUtxo.cjs`),Z=require(`./hinkalWithdrawStuckUtxos.cjs`),Q=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.cjs`);let $=require(`@solana/web3.js`);var te=class{ethereumProviderAdapter;solanaProviderAdapter;tronProviderAdapter;userKeys;signingMessage=`Login to Hinkal Protocol`;privateTransferSigningMessage=`Login to Hinkal's Private Transfer App`;merkleTreeHinkalByChain={};nullifiersByChain={};encryptedOutputsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};utxoUtils;lastCallState=new Map;cacheDevice;balanceFetchingMutexByChain=new Map;generateProofRemotely;disableMerkleTreeUpdates;allowParallelBalanceLocalDecryption;privateBalances=new Q.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new s.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=D.MerkleTree.create(a.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new k.MultiThreadedUtxoUtils,this.cacheDevice=g.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1,this.allowParallelBalanceLocalDecryption=e?.allowParallelBalanceLocalDecryption??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof _.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof R.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new s.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new s.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=y.generateHashFromSeedPhrases(e);this.userKeys=new s.UserKeys(t)}async initUserKeysWithEnclaveSignature(e=i.LoginMessageMode.PROTOCOL){if(!await this.getEthereumAddress())throw Error(`Connected address not found`);let t=this.getProviderAdapter().isSolanaLedger?.()??!1,n,r;if(t){let e=await this.signSolanaLedgerMessage();n=e.signature,r=e.txMessageForSolanaLedger}else n=await this.getProviderAdapter().signMessage(this.getSigningMessage(e));let a=await this.storeAndGetInitialSignature(n,t,r);return this.initUserKeysWithSignature(a??n),r}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await v.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await O.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof R.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return m.getContractWithFetcherByChainId(e,t,n)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,n){return await this.getProviderAdapter().signTypedData(e,t,n)}async signWithSubAccount(e,t,n,r){return M.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(o.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),h.reloadPage())}async monitorConnectedAddress(e){await l.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,t,n,r,i=!1,a,o=!1){return p.getShieldedBalance(this,e,t,n,r,i,this.generateProofRemotely,a,o)}async getTotalBalance(e,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await d.privateTokensDB.getPrivateTokens(e,s):await f.getErc20TokensForChainAPI(e),p=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};p.push(r)}),p}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){return(await b.fetchOnChainRootHashes(e)).hinkalRootHash}async resetMerkleTreesIfNecessary(e){let t=(await Promise.all((e??this.getSupportedChains()).map(async e=>{let t=await this.getHinkalTreeRootHash(e);return{chainId:e,needsReset:BigInt(t)!==this.merkleTreeHinkalByChain[e].getRootHash()}}))).filter(e=>e.needsReset).map(e=>e.chainId);t.length>0&&(console.log(`resetting merkle tree in resetMerkleTreesIfNecessary for chains:`,t),await this.resetMerkle(t))}async getEthereumAddress(){let e=this.ethereumProviderAdapter??this.solanaProviderAdapter??this.tronProviderAdapter;if(!e)throw Error(`No provider adapter initialized`);return e.getAddress()}getEthereumAddressByChain(e){return this.getProviderAdapter(e).getAddress()}async getRandomRelay(e,t=!1){return(await l.API.getIdleRelay(e,t)).relay}getGasPrice(e){let t=this.getProviderAdapter(e);if(!t)throw Error(`Illegal State of providerAdapter in Hinkal: no providerAdapter initialized`);return t.getGasPrice(e)}getAPI(){return l.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return j.getRecipientInfo(this)}async deposit(e,t,n=!0,r=!1){return S.hinkalDeposit(this,e,t,n,r)}async depositSolana(e,t,n=!1){return w.hinkalSolanaDeposit(this,e,t,n)}async depositForOther(e,t,n,r=!0,i=!1,a){return this.enforceRateLimit(this.depositForOther.name,[e,t,n]),S.hinkalDepositForOther(this,e,t,n,r,i,a)}async depositSolanaForOther(e,t,n,r=!1,i){return this.enforceRateLimit(this.depositSolanaForOther.name,[e,t,n]),w.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(u.validateAndGetChainId([e]))?z.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):C.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(u.validateAndGetChainId([e]))?X.hinkalSolanaClaimUtxo(this,e,t,r,i):J.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return K.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return c.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),q.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(u.validateAndGetChainId(e))?Y.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):P.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=u.validateAndGetChainId([e]);return n.isSolanaLike(o)?w.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):P.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,r]),n.isSolanaLike(u.validateAndGetChainId(e))?V.hinkalSolanaTransfer(this,e,t,r,i,a,o):I.hinkalTransfer(this,e,t,r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?B.hinkalSolanaWithdraw(this,e,t,r,a,o,s):E.hinkalWithdraw(this,e,t,r,i,a,o,s)}async withdrawStuckUtxos(e,t){return Z.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):T.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return H.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(u.validateAndGetChainId(e))?G.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):N.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),A.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,d,f){return n.isSolanaLike(u.validateAndGetChainId(e))?W.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):F.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,d,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),G.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):L.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=u.validateAndGetChainId(e);if(n.isSolanaLike(c))return U.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=x.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),d=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,d,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),ee.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=te;
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../functions/utils/serialize.utils.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../constants/protocol.constants.cjs`),i=require(`../../types/hinkal.types.cjs`),a=require(`../../crypto/poseidon.cjs`),o=require(`../../error-handling/error-codes.constants.cjs`),s=require(`../crypto-keys/keys.cjs`),c=require(`../../API/scheduled-transactions-calls.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../TokenDBs/PrivateTokensDB.cjs`),f=require(`../../functions/utils/erc20tokenFunctions.cjs`),p=require(`../../functions/web3/events/getShieldedBalance.cjs`),m=require(`../../functions/web3/getContractMetadata.cjs`),h=require(`../../functions/utils/reloadPage.cjs`),g=require(`../../functions/utils/cacheDevice.utils.cjs`),_=require(`../../providers/SolanaProviderAdapter.cjs`),v=require(`../../functions/utils/enclave-signature-storage.cjs`),y=require(`../../functions/utils/mnemonics.cjs`),b=require(`../../functions/snarkjs/fetchOnChainRootHashes.cjs`),x=require(`../../functions/private-wallet/emporium.helpers.cjs`),S=require(`./hinkalDeposit.cjs`);require(`../../functions/index.cjs`);const C=require(`./hinkalDepositAndWithdraw.cjs`),w=require(`./hinkalSolanaDeposit.cjs`),T=require(`./hinkalSwap.cjs`),E=require(`./hinkalWithdraw.cjs`),D=require(`../merkle-tree/MerkleTree.cjs`);require(`../merkle-tree/index.cjs`);const O=require(`./resetMerkleTrees.cjs`);require(`../../API/index.cjs`);const k=require(`../MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs`),A=require(`./hinkalPrivateWallet.cjs`),j=require(`./hinkalGetRecipientInfo.cjs`),M=require(`./hinkalSignSubAccount.cjs`),N=require(`./hinkalActionReceive.cjs`);require(`../TokenDBs/index.cjs`);const P=require(`./hinkalProoflessDeposit.cjs`),F=require(`./hinkalProxySwap.cjs`),ee=require(`./hinkalMultiSend.cjs`),I=require(`./hinkalTransfer.cjs`),L=require(`./hinkalProxyToPrivate.cjs`),R=require(`../../providers/TronProviderAdapter.cjs`),z=require(`./hinkalSolanaDepositAndWithdraw.cjs`),B=require(`./hinkalSolanaWithdraw.cjs`),V=require(`./hinkalSolanaTransfer.cjs`),H=require(`./hinkalSolanaSwap.cjs`),U=require(`./hinkalSolanaProxySend.cjs`),W=require(`./hinkalSolanaProxySwap.cjs`),G=require(`./hinkalSolanaProxyShield.cjs`),K=require(`./hinkalDepositAndBridge.cjs`),q=require(`./hinkalNearDepositAndBridge.cjs`),J=require(`./hinkalClaimUtxo.cjs`),Y=require(`./hinkalSolanaProoflessDeposit.cjs`),X=require(`./hinkalSolanaClaimUtxo.cjs`),Z=require(`./hinkalWithdrawStuckUtxos.cjs`),Q=require(`../private-balances/HinkalPrivateBalanceController.cjs`);require(`../private-balances/index.cjs`);let $=require(`@solana/web3.js`);var te=class{ethereumProviderAdapter;solanaProviderAdapter;tronProviderAdapter;userKeys;signingMessage=`Login to Hinkal Protocol`;privateTransferSigningMessage=`Login to Hinkal's Private Transfer App`;merkleTreeHinkalByChain={};nullifiersByChain={};encryptedOutputsByChain={};commitmentsSnapshotServiceByChain={};nullifierSnapshotServiceByChain={};utxoUtils;lastCallState=new Map;cacheDevice;balanceFetchingMutexByChain=new Map;generateProofRemotely;disableMerkleTreeUpdates;allowParallelBalanceLocalDecryption;privateBalances=new Q.HinkalPrivateBalanceController(this);constructor(e){this.userKeys=new s.UserKeys(void 0),e?.tronChainOverride&&n.setHinkalTronChainId(e.tronChainOverride),n.HINKAL_SUPPORTED_CHAINS.forEach(e=>{this.merkleTreeHinkalByChain[e]=D.MerkleTree.create(a.poseidonFunction,0n),this.nullifiersByChain[e]=new Set,this.encryptedOutputsByChain[e]=[]}),this.generateProofRemotely=e?.generateProofRemotely??!0,this.utxoUtils=new k.MultiThreadedUtxoUtils,this.cacheDevice=g.createCacheDevice(e),this.disableMerkleTreeUpdates=e?.disableMerkleTreeUpdates??!1,this.allowParallelBalanceLocalDecryption=e?.allowParallelBalanceLocalDecryption??!1}enforceRateLimit(t,n,r=1e3){let i=Date.now(),a=e.CustomJSONStringify(n),o=this.lastCallState.get(t);if(o&&o.argsKey===a&&i-o.timestamp<r)throw Error(`${t} was already called with the same arguments`);this.lastCallState.set(t,{timestamp:i,argsKey:a})}getProviderAdapter(e){let t=e;t||=this.ethereumProviderAdapter?n.chainIds.ethMainnet:this.solanaProviderAdapter?n.currentSolanaChainId:n.chainIds.tronMainnet;let r;if(r=n.isSolanaLike(t)?this.solanaProviderAdapter:n.isTronLike(t)?this.tronProviderAdapter:this.ethereumProviderAdapter,!r)throw Error(`ProviderAdapter is not initialized`);return r}async initProviderAdapter(e,t){let r=n.chainIds.ethMainnet;t instanceof _.SolanaProviderAdapter?r=n.currentSolanaChainId:t instanceof R.TronProviderAdapter&&(r=n.currentTronChainId),await this.updateProviderAdapter(r,t),t.initConnector(e);let i=await t.connectAndPatchProvider(e);await t.init(i),await this.setListeners()}getSigningMessage(e=i.LoginMessageMode.PROTOCOL){switch(e){case i.LoginMessageMode.PRIVATE_TRANSFER:return this.privateTransferSigningMessage;case i.LoginMessageMode.PROTOCOL:default:return this.signingMessage}}async signHinkalMessage(e=i.LoginMessageMode.PROTOCOL){let t=this.getSigningMessage(e);return this.getProviderAdapter().signMessage(t)}async signSolanaLedgerMessage(){let e=new $.Transaction({blockhash:r.DETERMINISTIC_SOLANA_LEDGER_BLOCKHASH,lastValidBlockHeight:r.DETERMINISTIC_SOLANA_LEDGER_LAST_VALID_BLOCK_HEIGHT,feePayer:this.getSolanaPublicKey()}),t=await this.getProviderAdapter().signTransactionWithoutBroadcast?.(e);if(!t)throw Error(`Failed to sign transaction without broadcast`);return{signature:t.signature,txMessageForSolanaLedger:t.transactionMessageB64}}async initUserKeys(e=i.LoginMessageMode.PROTOCOL){this.userKeys=new s.UserKeys(await this.signHinkalMessage(e))}initUserKeysWithSignature(e){this.userKeys=new s.UserKeys(e)}async initUserKeysFromSeedPhrases(e){let t=y.generateHashFromSeedPhrases(e);this.userKeys=new s.UserKeys(t)}async initUserKeysWithEnclaveSignature(e=i.LoginMessageMode.PROTOCOL){if(!await this.getEthereumAddress())throw Error(`Connected address not found`);let t=this.getProviderAdapter().isSolanaLedger?.()??!1,n,r;if(t){let e=await this.signSolanaLedgerMessage();n=e.signature,r=e.txMessageForSolanaLedger}else n=await this.getProviderAdapter().signMessage(this.getSigningMessage(e));let a=await this.storeAndGetInitialSignature(n,t,r);return this.initUserKeysWithSignature(a??n),r}async storeAndGetInitialSignature(e,t=!1,n){let r=await this.getEthereumAddress();if(!r)throw Error(`Connected address not found`);return await v.storeAndGetSignatureFromEnclave(r,e,t,n)}async resetMerkle(e){this.disableMerkleTreeUpdates||(e?.every(e=>this.isSelectedNetworkSupported(e))??!0)&&await O.resetMerkleTrees(this,e)}getTronWeb(){let e=this.tronProviderAdapter;if(!e)throw Error(`Tron provider adapter not initialized`);if(!(e instanceof R.TronProviderAdapter))throw Error(`Tron provider adapter is not a TronProviderAdapter`);let t=e.getTronWeb();if(!t)throw Error(`TronWeb not available`);return t}getSupportedChains(){return this.ethereumProviderAdapter&&this.solanaProviderAdapter?n.WALLET_SUPPORTED_CHAINS:this.ethereumProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>!n.isSolanaLike(e)&&!n.isTronLike(e)):this.solanaProviderAdapter?n.HINKAL_SUPPORTED_CHAINS.filter(e=>n.isSolanaLike(e)):this.tronProviderAdapter?[n.currentTronChainId]:[]}async waitForTransaction(e,t,n=1){return!!await this.getProviderAdapter(e).waitForTransaction(e,t,n)}getContract(e,t,n=void 0){return this.getProviderAdapter(e).getContract(e,t,n)}getContractWithFetcherByChainId(e,t,n=void 0){return m.getContractWithFetcherByChainId(e,t,n)}async signMessage(e){return await this.getProviderAdapter().signMessage(e)}async signTypedData(e,t,n){return await this.getProviderAdapter().signTypedData(e,t,n)}async signWithSubAccount(e,t,n,r){return M.hinkalSignSubAccount(e,t,n,r)}getContractWithSigner(e,t,n=``){return this.getProviderAdapter(e).getContractWithSigner(e,t,n)}getContractWithFetcher(e,t,n=``){return this.getProviderAdapter(e).getContractWithFetcher(e,t,n)}isSelectedNetworkSupported(e){return!!n.networkRegistry[e]}async switchNetwork(e){let t=this.getProviderAdapter(),r=t.getChainId(),i=r!==void 0&&n.isSameOnchainNetwork(e.chainId,r);if(!(e.chainId===r||i))try{await t.switchNetwork(e)}catch{throw Error(o.transactionErrorCodes.FAILED_TO_SWITCH_NETWORKS)}}isPermitterAvailable(e){return this.getProviderAdapter(e).isPermitterAvailable()}async disconnectFromConnector(){await this.ethereumProviderAdapter?.disconnectFromConnector(),await this.solanaProviderAdapter?.disconnectFromConnector(),await this.tronProviderAdapter?.disconnectFromConnector()}async resetProviderAdapters(){this.ethereumProviderAdapter?.release(),this.solanaProviderAdapter?.release(),this.tronProviderAdapter?.release(),this.ethereumProviderAdapter=void 0,this.solanaProviderAdapter=void 0,this.tronProviderAdapter=void 0}async updateProviderAdapter(e,t){try{n.isSolanaLike(e)?(this.solanaProviderAdapter&&this.solanaProviderAdapter.release(),this.solanaProviderAdapter=t):n.isTronLike(e)?(this.tronProviderAdapter&&this.tronProviderAdapter.release(),this.tronProviderAdapter=t):(this.ethereumProviderAdapter&&this.ethereumProviderAdapter.release(),this.ethereumProviderAdapter=t)}catch(e){throw console.error(e),Error(`updateProviderAdapter failed, please try again.`)}}async setListeners(){this.ethereumProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.solanaProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}}),this.tronProviderAdapter?.setChainEventListener({onAccountChanged:()=>{this.onAccountChanged()},onChainChanged:e=>{this.onChainChanged(e)}})}async onAccountChanged(){await this.ethereumProviderAdapter?.onAccountChanged(),await this.solanaProviderAdapter?.onAccountChanged(),await this.tronProviderAdapter?.onAccountChanged();let e=i.EventType.AccountChanged;typeof document<`u`?document?.dispatchEvent(new Event(e)):process?.emit(`message`,e,void 0)}async onChainChanged(e){e?await this.getProviderAdapter(e).onChainChanged(e):(await this.disconnectFromConnector(),h.reloadPage())}async monitorConnectedAddress(e){await l.API.monitor(await this.getEthereumAddressByChain(e))}async getBalances(e,t,n,r,i=!1,a,o=!1){return p.getShieldedBalance(this,e,t,n,r,i,this.generateProofRemotely,a,o)}async getTotalBalance(e,n,r,i=!1,a,o=!1){let s=r??await this.getEthereumAddressByChain(e),c=n??this.userKeys,l=await this.getBalances(e,c.getShieldedPrivateKey(),c.getShieldedPublicKey(),s,i,a,o),u=t.isExtension?await d.privateTokensDB.getPrivateTokens(e,s):await f.getErc20TokensForChainAPI(e),p=[];return u.forEach(e=>{let t=e.erc20TokenAddress.toLowerCase(),n=l.get(t),r={token:e,balance:n?.balance??0n,timestamp:n?.timestamp||`0`,nfts:n?.nfts||[]};p.push(r)}),p}async getStuckShieldedBalances(e,t,n,r=!1,i=!1){return(await this.getTotalBalance(e,t,n,r,i,!0)).filter(e=>e.balance>0n)}get privateBalancesWithUSD(){return this.privateBalances.getSnapshot()}onPrivateBalancesWithUSDChange(e){return this.privateBalances.onPrivateBalancesWithUSDChange(e)}async getHinkalTreeRootHash(e){return(await b.fetchOnChainRootHashes(e)).hinkalRootHash}async resetMerkleTreesIfNecessary(e){let t=(await Promise.all((e??this.getSupportedChains()).map(async e=>{let t=await this.getHinkalTreeRootHash(e);return{chainId:e,needsReset:BigInt(t)!==this.merkleTreeHinkalByChain[e].getRootHash()}}))).filter(e=>e.needsReset).map(e=>e.chainId);t.length>0&&(console.log(`resetting merkle tree in resetMerkleTreesIfNecessary for chains:`,t),await this.resetMerkle(t))}async getEthereumAddress(){let e=this.ethereumProviderAdapter??this.solanaProviderAdapter??this.tronProviderAdapter;if(!e)throw Error(`No provider adapter initialized`);return e.getAddress()}getEthereumAddressByChain(e){return this.getProviderAdapter(e).getAddress()}async getRandomRelay(e,t=!1){return(await l.API.getIdleRelay(e,t)).relay}getGasPrice(e){let t=this.getProviderAdapter(e);if(!t)throw Error(`Illegal State of providerAdapter in Hinkal: no providerAdapter initialized`);return t.getGasPrice(e)}getAPI(){return l.API}snapshotsClearInterval(){this.getSupportedChains().forEach(e=>{this.commitmentsSnapshotServiceByChain[e]?.intervalClear(),this.nullifierSnapshotServiceByChain[e]?.intervalClear()})}async destroy(){this.snapshotsClearInterval(),this.privateBalances.dispose(),await this.resetProviderAdapters()}getRecipientInfo(){return j.getRecipientInfo(this)}async deposit(e,t,n=!0,r=!1){return S.hinkalDeposit(this,e,t,n,r)}async depositSolana(e,t,n=!1){return w.hinkalSolanaDeposit(this,e,t,n)}async depositForOther(e,t,n,r=!0,i=!1,a){return this.enforceRateLimit(this.depositForOther.name,[e,t,n]),S.hinkalDepositForOther(this,e,t,n,r,i,a)}async depositSolanaForOther(e,t,n,r=!1,i){return this.enforceRateLimit(this.depositSolanaForOther.name,[e,t,n]),w.hinkalSolanaDepositForOther(this,e,t,n,r,i)}async depositAndWithdraw(e,t,r,i,a,o,s,c,l=!0){return n.isSolanaLike(u.validateAndGetChainId([e]))?z.hinkalSolanaDepositAndWithdraw(this,e,t,r,i,a,o,s,c):C.hinkalDepositAndWithdraw(this,e,t,r,i,a,o,s,c,l)}async claimUtxo(e,t,r,i){return n.isSolanaLike(u.validateAndGetChainId([e]))?X.hinkalSolanaClaimUtxo(this,e,t,r,i):J.hinkalClaimUtxo(this,e,t,r,i)}async depositAndBridge(e,t,n,r,i,a,o,s=!0){return K.hinkalDepositAndBridge(this,e,t,n,r,i,a,o,s)}async checkSendTransactionStatus(e){return c.getScheduledTransactionById(e)}async nearDepositAndBridge(e,t,n,r,i,a,o,s,c){return this.enforceRateLimit(this.nearDepositAndBridge.name,[e,t,n,r]),q.hinkalNearDepositAndBridge(this,e,t,n,r,i,a,o,s,c)}async prooflessDeposit(e,t,r,i,a=!1){return n.isSolanaLike(u.validateAndGetChainId(e))?Y.hinkalSolanaProoflessDeposit(this,e,t,r,i,a):P.hinkalProoflessDeposit(this,e,t,r,i,a)}async prooflessDepositWithPublicFee(e,t,r,i,a){let o=u.validateAndGetChainId([e]);return n.isSolanaLike(o)?w.hinkalSolanaProoflessDepositWithPublicFee(this,e,t,r,i,a):P.hinkalProoflessDepositWithPublicFee(this,o,e,t,r,i,a)}getSolanaProgram(e){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaProgram`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaProgram(e)}getSolanaPublicKey(){if(!this.solanaProviderAdapter)throw Error(`No provider adapter initialized`);if(!(`getSolanaPublicKey`in this.solanaProviderAdapter))throw Error(`Current provider adapter is not a Solana provider adapter`);return this.solanaProviderAdapter.getSolanaPublicKey()}async transfer(e,t,r,i,a,o){return this.enforceRateLimit(this.transfer.name,[e,t,r]),n.isSolanaLike(u.validateAndGetChainId(e))?V.hinkalSolanaTransfer(this,e,t,r,i,a,o):I.hinkalTransfer(this,e,t,r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?B.hinkalSolanaWithdraw(this,e,t,r,a,o,s):E.hinkalWithdraw(this,e,t,r,i,a,o,s)}async withdrawStuckUtxos(e,t){return Z.hinkalWithdrawStuckUtxos(this,e,t)}async swap(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?this.swapSolana(e,t,i,a,o,s):T.hinkalSwap(this,e,t,r,i,a,o,s)}async swapSolana(e,t,n,r,i,a){let o=JSON.parse(n),s=BigInt(o.swapperAccountSalt),{instructionLists:c,addressLookupTableAccount:l}=o.data;return H.hinkalSolanaSwap(this,e,t,s,c,l,r,i,a)}async actionReceive(e,t,r,i,a,o){if(!a)throw Error(`subAccount is required`);return n.isSolanaLike(u.validateAndGetChainId(e))?G.hinkalSolanaProxyShield(this,e[0],t[0],a,void 0,o):N.hinkalActionReceive(this,e,t,r,i,a,o)}async actionPrivateWallet(e,t,n,r,i,a,o,s,c,l,u=!1,d,f,p){return this.enforceRateLimit(this.actionPrivateWallet.name,[e,t,n,r,i,a,o,s,c,p]),A.hinkalPrivateWallet(this,e,t,n,r,i,a,o,s,c,l,u,d,f,p)}async proxySwap(e,t,r,i,a,o,s,c,l=!1,d,f){return n.isSolanaLike(u.validateAndGetChainId(e))?W.hinkalSolanaProxySwap(this,e,t,i,o,r,s,c,f):F.hinkalProxySwap(this,e,t,r,i,a,o,s,c,l,d,f)}async proxyToPrivate(e,t,r,i,a,o,s){return n.isSolanaLike(u.validateAndGetChainId(e))?(this.enforceRateLimit(this.proxyToPrivate.name,[e[0],t[0],r,i]),G.hinkalSolanaProxyShield(this,e[0],t[0],r,i,s)):L.hinkalProxyToPrivate(this,e,t,i,a,o,r,s)}async proxySend(e,t,r,i,a,o,s){let c=u.validateAndGetChainId(e);if(n.isSolanaLike(c))return U.hinkalSolanaProxySend(this,e[0],t[0],r,i,s);let l=x.createTransaferEmporiumOpsBatch(this,c,e.map(e=>e.erc20TokenAddress),t,i),d=e.map((e,n)=>({token:e,amount:-1n*t[n]}));return await this.actionPrivateWallet(c,[],[],[],l,d,r,a,o,void 0,void 0,void 0,s,void 0)}async multiSendPrivateRecipients(e,t,n){return this.enforceRateLimit(this.multiSendPrivateRecipients.name,[e,t,n]),ee.hinkalMultiSendPrivateRecipients(this,e,t,n)}areMerkleTreeUpdatesDisabled(){return this.disableMerkleTreeUpdates}updateMerkleTreeUpdates(e){this.disableMerkleTreeUpdates=e}};exports.Hinkal=te;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/snarkjs/common.snarkjs.cjs`),u=require(`../../functions/pre-transaction/getFeeStructure.cjs`),d=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),f=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let p=require(`ethers`);var m=async(m,h,g,_,v)=>{let y=c.validateAndGetChainId([h]),b=h.erc20TokenAddress;if(g.getTokenAddress(y)!==b)throw Error(`Off-chain UTXO token mismatch`);let x=v?new i.UserKeys(v):new i.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let S=x.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==S)throw Error(`Claimable UTXO key mismatch`);let{originalDeployer:C}=e.networkRegistry[y].contractData;if(!C)throw Error(`missing data`);let w=o.Utxo.createFrom(g,{nullifyingKey:S}),T=_??await u.getFeeStructure(y,b,[b],s.ExternalActionId.Transact,void 0,void 0,{mintTo:b,nullifierCount:1});if(T.feeToken!==b)throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let E=T.variableRate>0n?T.variableRate:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(w.amount<=T.flatFee)throw Error(n.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let D=w.amount-T.flatFee,O=D*E/10000n,k=D-O;if(k<=0n)throw Error(n.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let A=T.flatFee+O,[j,M,N,,P]=m.getRecipientInfo().split(`,`);if(!M||!N||!j||!P)throw Error(`Invalid recipient info`);let F=a.getCurrentTimeInSeconds().toString(),I=new o.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),...w.isNewStyle?{spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),L=new o.Utxo({amount:0n,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,nullifyingKey:x.getShieldedPrivateKey(),timeStamp:F,spendingPublicKey:x.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),R=new o.Utxo({amount:k,erc20TokenAddress:w.erc20TokenAddress,mintAddress:w.mintAddress,timeStamp:F,H0:[BigInt(M),BigInt(N)],stealthAddress:j,encryptionKey:P,isNewStyle:!0}),z=[w,I],B=[L,R],V=await m.getRandomRelay(y,!0);if(!V)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let H=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),x.getShieldedPrivateKey()),U={tokenNumber:1,nullifierAmount:z.length,outputAmount:B.length},W=l.calcEncryptedOutputs([B])[0].map(e=>Array.from(p.ethers.getBytes(e))),{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,commitmentValidationData:Y}=await d.constructSolanaZkProof(m.generateProofRemotely,m.merkleTreeHinkalByChain[y],x,[b],[z],[B],H,A,0n,t.solanaNativeAddress,V,U,W,y),X={recipient:V,mint:b===`11111111111111111111111111111111`?void 0:b};return f.solanaTransactCallRelayer({chainId:y,relayAddress:V,functionName:`transfer`,args:{proofAArr:G,proofBArr:K,proofCArr:q,publicInputsArr:J,encryptedOutputs:W,relayerFee:A.toString(),dimensions:U},accounts:X,commitmentValidationData:Y})};exports.hinkalSolanaClaimUtxo=m;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/solanaMint.utils.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/snarkjs/common.snarkjs.cjs`),l=require(`../../functions/pre-transaction/solana.cjs`),u=require(`../../functions/pre-transaction/constructAdminData.cjs`),d=require(`../../error-handling/retrySolanaError.cjs`),f=require(`../../API/admin-calls.cjs`),p=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`),m=require(`./hinkalProoflessDeposit.utils.cjs`);let h=require(`@solana/web3.js`),g=require(`@coral-xyz/anchor`);var _=(n,r)=>{let i=s.validateAndGetChainId([r]),o=r.erc20TokenAddress,{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[i].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let f=n.getSolanaProgram(c),p=n.getSolanaPublicKey(),{connection:m,wallet:g}=f.provider;if(!g)throw Error(`missing solana wallet`);let _=new h.PublicKey(d),v=new h.PublicKey(u),{mintPublicKey:y}=a.formatMintAddress(o),b=y.toString()===t.solanaNativeAddress;return{chainId:i,mintAddress:o,program:f,publicKey:p,connection:m,wallet:g,originalDeployer:_,mintPublicKey:y,mint:b?null:y,atasValue:b?null:void 0,storageAccount:l.getStorageAccountPublicKey(v,_),storageVault:l.getStorageVaultPublicKey(v,_),merkleAccount:l.getMerkleAccountPublicKey(v,_)}},v=(e,t,n)=>{let r=n.map(e=>l.buildAnchorStealthAddressStructure(e));return e.program.methods.multiPaymentDeposit(t.map(e=>new g.BN(e.toString())),r,!1).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}).instruction()},y=async(e,t,n,r)=>{for(let i=0;i<10;i+=1){let a=i===9;try{let{blockhash:i,lastValidBlockHeight:a}=await e.getLatestBlockhash(),o=new h.VersionedTransaction(new h.TransactionMessage({payerKey:n,recentBlockhash:i,instructions:r}).compileToV0Message()),s=await t.signTransaction(o),c=await e.sendTransaction(s);return await e.confirmTransaction({signature:c,blockhash:i,lastValidBlockHeight:a},`confirmed`),c}catch(e){if(d.shouldRetryForSolanaError(e)&&!a)continue;throw e}}return``},b=(e,t)=>{if(e.length===0)throw Error(`amounts must not be empty`);if(e.length!==t.length)throw Error(`amounts and stealthAddressStructures length mismatch`);if(e.some(e=>e<=0n))throw Error(`all amounts must be positive`);m.assertNoDuplicateStealthAddressStructures(t)},x=async(e,t,n,r,i,a=!1)=>{b(n,r);let o=_(e,t),s=u.constructAdminData(i,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),c=await v(o,n,r);if(a){let{blockhash:e}=await o.connection.getLatestBlockhash(),t=new h.Transaction().add(c);return t.recentBlockhash=e,t.feePayer=o.publicKey,Buffer.from(t.serialize({requireAllSignatures:!1})).toString(`base64`)}let l=await y(o.connection,o.wallet,o.publicKey,[c]);return await f.emitTxPublicData(s),l},S=async(e,t,n,r,i,a)=>{b(n,r);let o=_(e,t),s=await e.getRandomRelay(o.chainId,!1);if(!s)throw Error(`No relay available for chainId ${o.chainId}`);let{instructions:c}=await p.buildSolanaTransferInstructions(o.connection,o.publicKey,new h.PublicKey(s),t,i),l=await v(o,n,r),d=u.constructAdminData(a,o.chainId,Array(n.length).fill(o.mintAddress),n,await e.getEthereumAddress()),m=await y(o.connection,o.wallet,o.publicKey,[...c,l]);return await f.emitTxPublicData(d),m},C=async(e,t,n,a=!1)=>{let o=e.userKeys.getShieldedPrivateKey(),s=c.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),o),o,e.userKeys.getSpendingKeyPair().pubSpendingBJJPoint);return x(e,n,[t],[s],void 0,a)},w=async(e,t,r,i,a=!1,s)=>{if(!o.isValidPrivateAddress(i))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let c=o.constructStealthAddressStructure(i);return x(e,r,[t],[c],s,a)};exports.hinkalSolanaDeposit=C,exports.hinkalSolanaDepositForOther=w,exports.hinkalSolanaProoflessDepositWithPublicFee=S,exports.submitSolanaProoflessDeposit=x;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const l=require(`../../functions/utils/solanaMint.utils.cjs`),u=require(`../../functions/utils/addresses.cjs`),d=require(`../../functions/utils/token-check.utils.cjs`),f=require(`../../functions/snarkjs/common.snarkjs.cjs`),p=require(`../../functions/pre-transaction/solana.cjs`),m=require(`../../functions/pre-transaction/constructAdminData.cjs`),h=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),g=require(`../../functions/pre-transaction/getFeeStructure.cjs`),_=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`);require(`../../functions/pre-transaction/index.cjs`);const v=require(`../../functions/utils/getUtxosFromReceiptSolana.cjs`),y=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/web3/index.cjs`);const b=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),x=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),S=require(`../../API/deposit-and-withdraw-status-calls.cjs`);require(`../../functions/index.cjs`);let C=require(`ethers`),w=require(`@solana/web3.js`),T=require(`@coral-xyz/anchor`);var E=(n,a,o,s)=>{let{hinkalIdl:c,hinkalAddress:u,originalDeployer:d}=e.networkRegistry[a].contractData;if(!c)throw Error(`No IDL configured for Solana program on this network`);if(!d)throw Error(`missing original deployer`);let m=n.userKeys.getShieldedPrivateKey(),h=n.getSolanaProgram(c),g=n.getSolanaPublicKey(),_=new w.PublicKey(d),v=new w.PublicKey(u),{mintPublicKey:y}=l.formatMintAddress(o.erc20TokenAddress),b=y.toString(),x=p.getStorageAccountPublicKey(v,_),S=p.getStorageVaultPublicKey(v,_),C=p.getMerkleAccountPublicKey(v,_),T=s.map(()=>p.buildAnchorStealthAddressStructure(f.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),m),m,n.userKeys.getSpendingKeyPair().pubSpendingBJJPoint))),E=b===t.solanaNativeAddress;return{program:h,publicKey:g,originalDeployer:_,mint:E?null:y,atasValue:E?null:void 0,storageAccount:x,storageVault:S,merkleAccount:C,amounts:s,anchorStealthStructures:T}},D=e=>e.program.methods.multiPaymentDeposit(e.amounts.map(e=>new T.BN(e.toString())),e.anchorStealthStructures,!0).accounts({mint:e.mint,signer:e.publicKey,signerAta:e.atasValue,originalDeployer:e.originalDeployer,storageAccount:e.storageAccount,storageVault:e.storageVault,merkleAccount:e.merkleAccount,storageVaultAta:e.atasValue}),O=async(e,t,n,r,i,a,o)=>{let s=r.map(e=>e+y.calculateTotalFee(e,a)),u=E(e,t,n,s),d=(await S.updateDepositAndWithdrawStatus({chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.BEFORE_DEPOSIT})).id??void 0,f=await D(u).rpc(),p=await u.program.provider.connection.getLatestBlockhash();await u.program.provider.connection.confirmTransaction({blockhash:p.blockhash,lastValidBlockHeight:p.lastValidBlockHeight,signature:f},`finalized`);let m=await h.fetchSolanaTransaction(u.program.provider.connection,f,`finalized`);if(!m)throw Error(`Transaction missing`);await S.safeUpdateDepositAndWithdrawStatus({id:d,chainId:t,hashedEthereumAddress:o,phase:c.DepositAndWithdrawPhase.AFTER_DEPOSIT,depositTxHash:f});let{compressedAddress:g}=l.formatMintAddress(n.erc20TokenAddress),_=v.getOnChainUtxosFromReceiptSolana(m,u.program,e.userKeys,g),b=[],x=[..._];return i.forEach((e,t)=>{let n=s[t],r=x.find(e=>e.amount===n);if(!r)throw Error(`Could not find newly created UTXO with amount ${n} for recipient ${e}.`);b.push({recipientAddress:e,utxo:r}),x.splice(x.indexOf(r),1)}),{userDepositedUtxos:b,depositTxHash:f,statusId:d}},k=async(s,u,d,p,h,g,_,v,w,T,E,D,O)=>{let k=d.erc20TokenAddress;if(p.length===0)throw Error(`userDepositedUtxos must not be empty`);let{originalDeployer:A}=e.networkRegistry[u].contractData;if(!A)throw Error(`missing data`);let j=await s.getRandomRelay(u,!0);if(!j)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=a.getCurrentTimeInSeconds().toString(),N=s.generateProofRemotely?5:1,P=[];for(let e=0;e<p.length;e+=N){let n=p.slice(e,e+N),a=await Promise.all(n.map(async({recipientAddress:e,utxo:n},a)=>{let{compressedAddress:c}=l.formatMintAddress(t.solanaNativeAddress),p=new o.Utxo({amount:0n,mintAddress:k,erc20TokenAddress:c,nullifyingKey:s.userKeys.getShieldedPrivateKey(),timeStamp:M,...n.isNewStyle?{spendingPublicKey:s.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),g=[n,p],v=[p],x=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),s.userKeys.getShieldedPrivateKey()),S={tokenNumber:1,nullifierAmount:g.length,outputAmount:v.length},w=f.calcEncryptedOutputs([v])[0][0],T=Array.from(C.ethers.getBytes(w)),D=await y.calculateModifiedFeeStructure(u,d,_[a],h),A=m.constructAdminData(E,u,[k],[_[a]],await s.getEthereumAddress()),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await b.constructSolanaZkProof(s.generateProofRemotely,s.merkleTreeHinkalByChain[u],s.userKeys,[k],[g],[v],x,D.flatFee,D.variableRate,e,j,S,[T],u),R={recipient:e,mint:k===`11111111111111111111111111111111`?void 0:k};return{relayAddress:j,functionName:`transact`,chainId:u,recipientAmount:_[a].toString(),args:{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[T],relayerFee:D.flatFee.toString(),dimensions:S},accounts:R,adminData:A,commitmentValidationData:L,displayRecipient:O?.[a]}}));P.push(...a)}await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let F=await x.solanaTransactCallRelayerBatch(u,P,g,w,T,D);return await S.safeUpdateDepositAndWithdrawStatus({id:v,chainId:u,hashedEthereumAddress:g,phase:c.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:F}),F},A=async(e,t,n,r,i,a,o,c,l,f)=>{let p=d.validateAndGetChainId([t]),m=t.erc20TokenAddress,h=u.hashEthereumAddress(await e.getEthereumAddressByChain(p)),v=l?u.hashString(l):void 0,y=a??await g.getFeeStructure(p,m,[m],s.ExternalActionId.Transact,[],5n),{userDepositedUtxos:b,depositTxHash:x,statusId:S}=await O(e,p,t,n,r,y,h);return await _.waitForDepositedUtxosInMerkleTree(e,p,b),{depositTxHash:x,scheduleId:await k(e,p,t,b,y,h,n,S,i,o,c,v,f)}};exports.hinkalSolanaDepositAndWithdraw=A;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/token-check.utils.cjs`),n=require(`../../functions/pre-transaction/constructAdminData.cjs`),r=require(`../../functions/utils/create-provider.cjs`),i=require(`../AccountActions/AccountActions.cjs`),a=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),o=require(`../../API/admin-calls.cjs`),s=require(`../../functions/pre-transaction/solanaTransfer.utils.cjs`);let c=require(`@solana/web3.js`);var l=async(n,a,o,l)=>{let u=t.validateAndGetChainId([n]),d=i.AccountActions.getAddressFromSubAccount(u,o);if(!d)throw Error(`Public account address is not available`);let{fetchRpcUrl:f}=e.networkRegistry[u];if(!f)throw Error(`RPC URL not found for the specified chain ID`);let p=r.createCustomSolanaConnection(f),m=new c.PublicKey(d),{instructions:h,programId:g}=await s.buildSolanaTransferInstructions(p,m,new c.PublicKey(l),n,a);return{connection:p,chainId:u,senderAddress:d,senderPublickey:m,programId:g,instructions:h}},u=async(e,t,r,i,s,c)=>{let[{connection:u,chainId:d,senderPublickey:f,instructions:p},m]=await Promise.all([l(t,r,i,s),e.getEthereumAddress()]),h=await a.sendProxyV0Transaction({connection:u,chainId:d,subAccount:i,payerPublicKey:f,instructions:p});return o.emitTxPublicData(n.constructAdminData(c,d,[t.erc20TokenAddress],[r],m)),h};exports.hinkalSolanaProxySend=u;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/utils/solanaMint.utils.cjs`),r=require(`../../functions/utils/addresses.cjs`),i=require(`../../functions/utils/token-check.utils.cjs`),a=require(`../../functions/pre-transaction/solana.cjs`),o=require(`../../functions/pre-transaction/constructAdminData.cjs`),s=require(`../../functions/utils/create-provider.cjs`),c=require(`../AccountActions/AccountActions.cjs`),l=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),u=require(`../../API/admin-calls.cjs`);let d=require(`@solana/web3.js`),f=require(`@coral-xyz/anchor`),p=require(`@solana/spl-token`);var m=async({program:e,mintPublicKey:t,mintAddressString:n,tokenAmount:r,anchorStealthStructure:i,senderPublickey:a,originalDeployer:o,storageAccount:s,storageVault:c})=>{let l=new f.BN(r.toString()),u=n===`11111111111111111111111111111111`?null:t,d=n===`11111111111111111111111111111111`?null:void 0;return e.methods.prooflessDeposit(l,i).accounts({mint:u,signer:a,signerAta:d,originalDeployer:o,storageAccount:s,storageVault:c,storageVaultAta:d}).instruction()},h=async(i,o,l,u,f,h)=>{let g=h??i.getRecipientInfo();if(!r.isValidPrivateAddress(g))throw Error(t.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let _=c.AccountActions.getAddressFromSubAccount(o,f);if(!_)throw Error(`Public account address is not available`);let{hinkalIdl:v,hinkalAddress:y,originalDeployer:b}=e.networkRegistry[o].contractData;if(!v)throw Error(`No IDL configured for Solana program on this network`);if(!b)throw Error(`missing original deployer`);let x=i.getSolanaProgram(v),S=new d.PublicKey(b),C=new d.PublicKey(y),w=new d.PublicKey(_),{erc20TokenAddress:T}=l,{fetchRpcUrl:E}=e.networkRegistry[o];if(!E)throw Error(`RPC URL not found for the specified chain ID`);let D=s.createCustomSolanaConnection(E),{mintPublicKey:O}=n.formatMintAddress(T),k=O.toString(),A=a.getStorageAccountPublicKey(C,S),j=a.getStorageVaultPublicKey(C,S),M=await m({program:x,mintPublicKey:O,mintAddressString:k,tokenAmount:u,anchorStealthStructure:a.buildAnchorStealthAddressStructure(r.constructStealthAddressStructure(g)),senderPublickey:w,originalDeployer:S,storageAccount:A,storageVault:j}),N=l.is2022Program?p.TOKEN_2022_PROGRAM_ID:p.TOKEN_PROGRAM_ID;return{connection:D,senderAddress:_,senderPublickey:w,instructions:[M],storageAccount:A,programId:N}},g=async(e,t,n,r,a,s)=>{if(!r)throw Error(`subAccount is required`);let c=i.validateAndGetChainId([t]),[{connection:d,senderPublickey:f,instructions:p},m]=await Promise.all([h(e,c,t,n,r,a),e.getEthereumAddress()]),g=await l.sendProxyV0Transaction({connection:d,chainId:c,subAccount:r,payerPublicKey:f,instructions:p});return u.emitTxPublicData(o.constructAdminData(s,c,[t.erc20TokenAddress],[n],m)),g};exports.hinkalSolanaProxyShield=g;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../types/external-action.types.cjs`),r=require(`../../functions/utils/token-check.utils.cjs`),i=require(`../../functions/pre-transaction/constructAdminData.cjs`),a=require(`../../functions/utils/create-provider.cjs`),o=require(`../AccountActions/AccountActions.cjs`),s=require(`../../functions/pre-transaction/sendV0Transaction.cjs`),c=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../constants/index.cjs`);const l=require(`../../API/admin-calls.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(t,r,i,s)=>{let c=o.AccountActions.getAddressFromSubAccount(t,i);if(!c)throw Error(`Public account address is not available`);let{fetchRpcUrl:l}=e.networkRegistry[t];if(!l)throw Error(`RPC URL not found for the specified chain ID`);let u=a.createCustomSolanaConnection(l),m=new d.PublicKey(c),{instructions:h,lookupTableAccounts:g}=s===n.ExternalActionId.Lifi?await p(u,r):await f(u,r);return{connection:u,walletPublicKey:m,instructions:h,lookupTableAccounts:g}},h=async(e,a,o,f,p,h,g,_,v)=>{let y=r.validateAndGetChainId(a),b=h===n.ExternalActionId.Lifi,[{connection:x,walletPublicKey:S,instructions:C,lookupTableAccounts:w},T,E]=await Promise.all([m(y,f,p,h),b?Promise.resolve(null):e.getRandomRelay(y),e.getEthereumAddressByChain(y)]),D=C;if(!b){if(!T)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let e=a[1],r=o[1]*(_??await c.getFeeStructure(y,g,a.map(e=>e.erc20TokenAddress),n.ExternalActionId.Emporium)).variableRate/10000n,{instructions:i}=await u.buildSolanaTransferInstructions(x,S,new d.PublicKey(T),e,r);D=[...C,...i]}let O=await s.sendProxyV0Transaction({connection:x,chainId:y,subAccount:p,payerPublicKey:S,instructions:D,lookupTableAccounts:w});return l.emitTxPublicData(i.constructAdminData(v,y,a.map(e=>e.erc20TokenAddress),o,E,a)),O};exports.hinkalSolanaProxySwap=h;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/solana.cjs`),p=require(`../../functions/pre-transaction/constructAdminData.cjs`),ee=require(`../../functions/pre-transaction/convert-okx-instructions.cjs`),m=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),h=require(`../../functions/pre-transaction/getFeeStructure.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`),y=require(`@solana/web3.js`);var b=async(e,t,n,r)=>{let i=[...await l.addPaddingToUtxos(e,t,n,r,6)],o=a.getCurrentTimeInSeconds().toString(),s=[];for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,i[t],r[t],o);s.push([n[0]])}return{inputUtxosArray:i,outputUtxosArray:s}},x=async(a,l,u,x,te,S,C,w,T)=>{let E=c.validateAndGetChainId(l),D=new y.PublicKey(t.solanaNativeAddress),{hinkalAddress:ne,originalDeployer:O}=e.networkRegistry[E].contractData;if(!O)throw Error(`No IDL configured for Solana program on this network`);let k=new y.PublicKey(O),A=new y.PublicKey(ne),j=l.map(e=>e.erc20TokenAddress),{userKeys:M,merkleTreeHinkalByChain:N}=a,P=w??await h.getFeeStructure(E,C,j,o.ExternalActionId.Transact),F=u[1],I=Number(a.cacheDevice.get(s.StorageKeys.SLIPPAGE_PERCENTAGE)??0),L=l[1],R=r.getAmountInToken(L,F),z=Number(R)*I/100;u[1]-=r.getAmountInWei(L,z.toFixed(L.decimals));let B=F*BigInt(P.variableRate??0)/10000n+P.flatFee;if(u[1]-=B,u[1]<0)throw Error(n.transactionErrorCodes.LOW_OUTPUT_AMOUNT);let V=P.variableRate.toString(),[H,U,{inputUtxosArray:W,outputUtxosArray:G}]=await Promise.all([a.getRandomRelay(E,!0),a.getEthereumAddressByChain(E),b(a,E,j,u)]);if(!H)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let K=a.userKeys.getShieldedPrivateKey(),q=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),K),J={tokenNumber:2,nullifierAmount:W[0].length,outputAmount:1},Y=d.calcEncryptedOutputs(G).map(e=>[...v.ethers.getBytes(e[0])]),X=f.getSwapperAccountPublicKeyFromSalt(A,k,x),{remainingAccounts:Z,hinkalInstructions:Q}=ee.convertOKXToHinkalInstructions(te,X);m.ensureAmountChanges(W,G,u);let{proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,commitmentValidationData:$}=await g.constructSolanaZkProof(a.generateProofRemotely,N[E],M,j,W,G,q,P.flatFee,P.variableRate,D.toString(),H,J,Y,E,Q,Z,x),se=f.getStorageAccountPublicKey(A,k),ce=f.getStorageVaultPublicKey(A,k),le=l[0].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[0].erc20TokenAddress),ue=l[1].erc20TokenAddress===`11111111111111111111111111111111`?null:new y.PublicKey(l[1].erc20TokenAddress),de={recipient:D.toString(),storageAccount:se.toString(),storageVault:ce.toString(),swapperAccount:X.toString(),mintFrom:le?.toString()??null,mintTo:ue?.toString()??null,remainingAccounts:Z.map(e=>({pubkey:e.pubkey.toString(),isSigner:e.isSigner,isWritable:e.isWritable})),addressLookupTableAccount:S};return _.solanaTransactCallRelayer({chainId:E,relayAddress:H,functionName:`swap`,args:{encryptedOutputs:Y,proofAArr:re,proofBArr:ie,proofCArr:ae,publicInputsArr:oe,relayerFee:P.flatFee.toString(),variableRate:V,dimensions:J,hinkalInstructions:Q.map(e=>({accountIndexes:[...e.accountIndexes],data:[...e.data],programIndex:e.programIndex}))},accounts:de,commitmentValidationData:$,adminData:p.constructAdminData(T,E,j,u,U,l)})};exports.hinkalSolanaSwap=x;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const s=require(`../../functions/utils/addresses.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/snarkjs/common.snarkjs.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/ensureAmountChanges.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const h=require(`../../functions/utils/fees.utils.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);let v=require(`ethers`);var y=async(e,t,n,r,i,o)=>{let s=(await l.addPaddingToUtxos(e,t,n,r,6))[0],c=a.getCurrentTimeInSeconds().toString(),{outputUtxos:d}=u.outputUtxoProcessing(e.userKeys,s,r[0],c,!0,i,o);return{inputUtxos:s,senderUtxo:d[0],recipientUtxo:d[1]}},b=async(a,l,u,_,b,x,S)=>{if(!s.isValidPrivateAddress(_))throw Error(n.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let C=c.validateAndGetChainId(l),w=[...u],{originalDeployer:T}=e.networkRegistry[C].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=a,O=l.map(e=>e.erc20TokenAddress);if(O.length>1)throw Error(`Solana Transfer: Only one mint address is supported`);let k=x??await m.getFeeStructure(C,b,O,o.ExternalActionId.Transact,[],5n);k.variableRate||=t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;let A=h.calculateTotalFee(-w[0],k),j=-w[0];w[0]-=A;let[M,N,{inputUtxos:P,senderUtxo:F,recipientUtxo:I}]=await Promise.all([a.getRandomRelay(C,!0),a.getEthereumAddressByChain(C),y(a,C,O,w,_,j)]);if(!M)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let L=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),a.userKeys.getShieldedPrivateKey()),R={tokenNumber:O.length,nullifierAmount:P.length,outputAmount:2},z=d.calcEncryptedOutputs([[F,I]])[0].map(e=>Array.from(v.ethers.getBytes(e)));p.ensureAmountChanges([P],[[F]],w);let{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,commitmentValidationData:W}=await g.constructSolanaZkProof(a.generateProofRemotely,D[C],E,[O[0]],[P],[[F,I]],L,A,0n,t.solanaNativeAddress,M,R,z,C),G={recipient:M,mint:O[0]===`11111111111111111111111111111111`?void 0:O[0]};return{chainId:C,relay:M,args:{proofAArr:B,proofBArr:V,proofCArr:H,publicInputsArr:U,encryptedOutputs:z,relayerFee:A.toString(),dimensions:R},accounts:G,adminData:f.constructAdminData(S,C,O,w,N),commitmentValidationData:W,recipientUtxo:I}},x=async(e,t,n,r,i,a,o,s=!1)=>{if(s)throw Error(`onlyGasEstimate is not supported for Solana transfer`);let c=await b(e,t,n,r,i,a,o);return _.solanaTransactCallRelayer({chainId:c.chainId,relayAddress:c.relay,functionName:`transfer`,args:c.args,accounts:c.accounts,adminData:c.adminData,commitmentValidationData:c.commitmentValidationData})};exports.hinkalSolanaTransfer=x;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`);require(`../../types/index.cjs`);const 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`),require(`../../constants/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 a=[...await s.addPaddingToUtxos(e,t,n,r,6)][0],o=i.getCurrentTimeInSeconds().toString(),{outputUtxos:l}=c.outputUtxoProcessing(e.userKeys,a,r[0],o);return{inputUtxos:a,outputUtxos:l}},v=async(i,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}=e.networkRegistry[S].contractData;if(!T)throw Error(`missing data`);let{userKeys:E,merkleTreeHinkalByChain:D}=i,O=b??await f.getFeeStructure(S,y,C,a.ExternalActionId.Transact),k=await p.calculateModifiedFeeStructure(S,w,-c[0],O);c[0]-=k.flatFee;let[A,{inputUtxos:j,outputUtxos:M}]=await Promise.all([i.getRandomRelay(S,!0),_(i,S,C,c)]);if(!A)throw Error(t.transactionErrorCodes.RELAYER_NOT_AVAILABLE);if(C.length>1)throw Error(`Solana Withdraw: Only one mint address is supported`);let N=r.UserKeys.findCorrectRandomization(n.randomBigInt(31),i.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(i.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 i.getEthereumAddress())})};exports.hinkalSolanaWithdraw=v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/encodeTokenWithId.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/web3/events/getShieldedBalance.cjs`),f=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),p=require(`../../functions/snarkjs/common.snarkjs.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);let b=require(`ethers`);var x=6,S=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,void 0,void 0,!1,!0)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=f.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},C=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,6,void 0,!1,!0)][0],o=a.getCurrentTimeInSeconds().toString(),{outputUtxos:s}=f.outputUtxoProcessing(e.userKeys,i,r[0],o);return{inputUtxos:i,outputUtxos:s}},w=async(t,r,i,a,o)=>{let l=e.isTronLike(r),u=[i.erc20TokenAddress],d=i.erc20TokenAddress,[f,p]=await Promise.all([m.getFeeStructure(r,d,u,s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!p)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let g=c.addressToHexFormat(o),b=a-f.flatFee;if(b<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${f.flatFee}`);let x=[-b];await y.mergeWithFeeStructure(r,u,x,f);let C={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},{inputUtxosArray:w,outputUtxosArray:T}=await S(t,r,u,x),{zkCallData:E,circomData:D,dimData:O,commitmentValidationData:k}=await h.constructZkProof(t.merkleTreeHinkalByChain[r],w,T,t.userKeys,C.externalActionId,C.externalAddress,C.externalActionMetadata,t.generateProofRemotely,f,p,r),A=await c.reorderZkCallData(l,E,O,D);return v.updateHinkal(r,t,D.inputNullifiers?.flat(),D.outCommitments?.flat(),D.encryptedOutputs?.flat()),{tx:await _.transactCallRelayer(r,E,O,D,k,void 0,void 0,void 0,A),amountToRecipient:b}},T=async(t,a,o,c,l,u)=>{let d=[o.erc20TokenAddress],{originalDeployer:f}=e.networkRegistry[a].contractData;if(!f)throw Error(`missing data`);let{userKeys:h,merkleTreeHinkalByChain:y}=t,x=o.erc20TokenAddress,[S,w]=await Promise.all([m.getFeeStructure(a,x,d,s.ExternalActionId.Transact,void 0,void 0,{mintTo:d[0],recipient:l,nullifierCount:u}),t.getRandomRelay(a,!0)]);if(!w)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let T=c-S.flatFee;if(T<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${c}, Fee: ${S.flatFee}`);let E=[-T];E[0]-=S.flatFee;let{inputUtxos:D,outputUtxos:O}=await C(t,a,d,E),k=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),t.userKeys.getShieldedPrivateKey()),A={tokenNumber:d.length,nullifierAmount:D.length,outputAmount:O.length},j=p.calcEncryptedOutputs([O])[0][0],M=Array.from(b.ethers.getBytes(j)),{proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,commitmentValidationData:L}=await g.constructSolanaZkProof(t.generateProofRemotely,y[a],h,[d[0]],[D],[O],k,S.flatFee,S.variableRate,l,w,A,[M],a),R={recipient:l,mint:d[0]===`11111111111111111111111111111111`?void 0:d[0]},z={proofAArr:N,proofBArr:P,proofCArr:F,publicInputsArr:I,encryptedOutputs:[M],relayerFee:S.flatFee.toString(),dimensions:A};return v.updateHinkal(a,t,D.map(e=>e.getNullifier()),p.buildOutCommitments([O]).flat(),[j]),{tx:await _.solanaTransactCallRelayer({chainId:a,relayAddress:w,functionName:`transact`,args:z,accounts:R,commitmentValidationData:L}),amountToRecipient:T}},E=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?T(t,n,r,i,a,o):w(t,n,r,i,a),D=async(e,n,r)=>{let i=[],a=u.validateAndGetChainId([n]),s=o.encodeTokenWithId(a,{erc20TokenAddress:n.erc20TokenAddress,tokenId:0});await e.resetMerkleTreesIfNecessary([a]);let c=((await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:a,allowRemoteDecryption:e.generateProofRemotely}))?.get(s)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount));for(let o=0;o<c.length;o+=x){let s=c.slice(o,o+x),{tx:l}=await E(e,a,n,t.countTotalAmountInUtxos(s),r,s.length);i.push(l)}return i};exports.hinkalWithdrawStuckUtxos=D;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../types/ethereum-network.types.cjs`),n=require(`../../types/balances.types.cjs`),r=require(`../../types/events.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../functions/utils/map.utils.cjs`),a=require(`../../functions/utils/mutexes.utils.cjs`),o=require(`../../functions/utils/create-provider.cjs`),s=require(`../../functions/utils/getContractAddress.cjs`),c=require(`../private-balances/BalanceChangedHandler.cjs`),l=require(`../event-service/evm/ClientBlockchainEventEmitter.cjs`),u=require(`../event-service/solana/ClientSolanaBlockchainEventEmitter.cjs`);require(`../event-service/index.cjs`);const d=require(`../snapshot/SnapshotFetcherService.cjs`),f=require(`../snapshot/solana-snapshots/ClientSolanaCommitmentsSnapshotService.cjs`),p=require(`../snapshot/solana-snapshots/ClientSolanaNullifierSnapshotService.cjs`),m=require(`../snapshot/evm-snapshots/ClientCommitmentsSnapshotService.cjs`),h=require(`../snapshot/evm-snapshots/ClientNullifierSnapshotService.cjs`);require(`../snapshot/index.cjs`);let g=require(`@solana/web3.js`),_=require(`async-mutex`);var v=new Map,y=e=>i.getOrCreateMapValue(v,e,()=>new _.Mutex),b=async(i,_)=>{let v=(_??i.getSupportedChains()).map(_=>y(_).runExclusive(async()=>{i.commitmentsSnapshotServiceByChain[_]?.intervalClear(),i.nullifierSnapshotServiceByChain[_]?.intervalClear();let{maxPageSize:v,fetchRpcUrl:y,contractData:b}=e.networkRegistry[_],x;if(e.isSolanaLike(_)){let e=b.hinkalAddress;if(!y||!e)throw Error(`Fetch RPC URL or Solana program ID is not set`);x=new u.ClientSolanaBlockchainEventEmitter(_,o.createCustomSolanaConnection(y),new g.PublicKey(e),0,a.getChainBalanceFetchingMutex(_),v);let t=b.hinkalIdl;t&&x.setIdl(t);let n=new d.SnapshotFetcherService(_,e);i.commitmentsSnapshotServiceByChain[_]=new f.ClientSolanaCommitmentsSnapshotService(x,n),i.nullifierSnapshotServiceByChain[_]=new p.ClientSolanaNullifierSnapshotService(x,n)}else{let e=i.getContractWithFetcherByChainId(_,t.ContractType.HinkalContract),n=i.getContractWithFetcherByChainId(_,t.ContractType.DepositOnChainUtxos),o=a.getChainBalanceFetchingMutex(_);x=new l.ClientBlockchainEventEmitter(r.EventCategory.MainContractEvents,_,e,0,o,v,n);let c=new d.SnapshotFetcherService(_,s.getContractAddress(e));i.commitmentsSnapshotServiceByChain[_]=new m.ClientCommitmentsSnapshotService(x,c),i.nullifierSnapshotServiceByChain[_]=new h.ClientNullifierSnapshotService(x,c)}let S=i.commitmentsSnapshotServiceByChain[_],C=i.nullifierSnapshotServiceByChain[_];if(!S||!C)throw Error(`Missing snapshot service for chain ${_}`);await Promise.all([S.init(),C.init()]),await x.init(),i.merkleTreeHinkalByChain[_]=S.merkleTree,i.nullifiersByChain[_]=C.nullifiers,i.encryptedOutputsByChain[_]=S.encryptedOutputs,x.onEventsProcessed=e=>{e>0&&c.balanceChangedHandler.dispatch({updateType:n.PrivateBalanceUpdateType.FreshWithoutLoader,updateTokensListBefore:!0,chainIdToUpdate:_})}}));await Promise.allSettled(v)};exports.resetMerkleTrees=b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require(`../../error-handling/error-codes.constants.cjs`),t=require(`../../../../shims/idb-keyval.cjs`),n=require(`../../types/activities.types.cjs`),r=require(`../../types/cache.types.cjs`);require(`../../types/index.cjs`);const i=require(`../../error-handling/logger.cjs`);require(`../../error-handling/index.cjs`);const a=require(`../../constants/tx-confirmation.constants.cjs`),o=require(`../../functions/utils/tx-confirmation.utils.cjs`);require(`../../functions/index.cjs`);const s=require(`../../functions/utils/aggregateTokenAmounts.cjs`);var c=t.default,l=class{generateTxId(){return`tx_${new Date().getTime()}_${Math.random().toString(36).substring(2,15)}`}async getTransactionRecord(){return await(0,c.get)(r.StorageKeys.TX_ACTIVITY)||{}}async saveTxRequest(e){let{from:t,to:i,gasInDollar:a,extraNativeTokenFee:o,chainId:l,status:u,txHash:d,activityType:f,tokensReceive:p,tokensSpend:m,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b}=e,x=this.generateTxId(),S=m?.length?s.aggregateTokensBySymbol(m):[],C=p?.length?s.aggregateTokensBySymbol(p):[],w={id:x,from:t,to:i,gasInDollar:a?.toString(),extraNativeTokenFee:o?.toString(),chainId:l,txHash:d,activityType:f,status:u??n.ActivityStatus.PENDING,timestamp:new Date,tokensReceive:C,tokensSpend:S,tokensApprove:h,activityIcon:g,dappUrl:_,dappName:v,integrationProvider:y,knownPartialSignature:b};return await(0,c.update)(r.StorageKeys.TX_ACTIVITY,(e={})=>(e[x]=w,e)),x}async getTxRequest(e){return(await this.getTransactionRecord())[e]||null}async getAllTxRequests(e){let t=await this.getTransactionRecord();return Object.values(t).filter(t=>t.chainId===e).sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())}async updateTxHash(e,t){let n=await this.getTxRequest(e);if(!n)throw Error(`Activity not found`);let i={...n,txHash:t};await(0,c.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=i,t))}async updateTxStatusAndHash(e,t,n){let i=await this.getTxRequest(e);if(!i)throw Error(`Transaction not found`);let a={...i,status:t,txHash:n,timestamp:new Date};return await(0,c.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(t[e]=a,t)),a}async updateActivity(e,t,n){try{await this.updateTxStatusAndHash(e,t,n)}catch(e){i.Logger.error(`error in updating tx request`,e)}}async removePendingTransactions(e){try{await(0,c.update)(r.StorageKeys.TX_ACTIVITY,(t={})=>(delete t[e],t))}catch(e){i.Logger.error(`error in deleting tx requests`,e)}}async updatePendingTransactions(t,r,s,c){try{let i=await this.getTxRequest(r);if(!i)throw Error(`Transaction not found`);let{chainId:l}=i;if(!t.success){c?.(t.error),await this.updateActivity(r,n.ActivityStatus.FAILED,`erroredTx`in t?t.erroredTx:void 0);return}if(`txHash`in t){let{txHash:i}=t;try{await o.waitForTransactionConfirmation(l,i,{evmTimeoutMs:a.RELAYER_TX_CONFIRMATION_TIMEOUT})}catch(t){let a=t instanceof Error?t:Error(e.transactionErrorCodes.UNKNOWN);c?.(a),await this.updateActivity(r,n.ActivityStatus.FAILED,i);return}s?.(),await this.updateActivity(r,n.ActivityStatus.SUCCESSFUL,i)}}catch(e){i.Logger.error(`error in updating pending transactions`,e)}}},u=new l;exports.ActivityStorage=l,exports.activityStorage=u;
|