@gurge/sdk 0.3.45 → 0.3.47
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/common/src/data-structures/Hinkal/Hinkal.d.ts +1 -0
- package/common/src/data-structures/Hinkal/IHinkal.d.ts +1 -0
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.cjs +1 -1
- package/dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.mjs +3 -3
- package/index.cjs +1 -1
- package/index.d.ts +0 -1
- package/index.mjs +2 -7
- package/internal/swapApi.cjs +1 -0
- package/internal/swapApi.d.ts +3 -0
- package/internal/swapApi.mjs +32 -0
- package/libs/shared/common/src/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/libs/shared/common/src/data-structures/Hinkal/Hinkal.mjs +10 -0
- package/libs/shared/common/src/functions/utils/process.utils.cjs +1 -1
- package/libs/shared/common/src/functions/utils/process.utils.mjs +10 -6
- package/package.json +1 -1
- package/providers/prepareEthersHinkal.cjs +1 -1
- package/providers/prepareEthersHinkal.d.ts +2 -0
- package/providers/prepareEthersHinkal.mjs +5 -5
- package/providers/prepareSolanaHinkal.cjs +1 -1
- package/providers/prepareSolanaHinkal.d.ts +2 -0
- package/providers/prepareSolanaHinkal.mjs +5 -5
- package/providers/prepareTronHinkal.cjs +1 -1
- package/providers/prepareTronHinkal.d.ts +2 -0
- package/providers/prepareTronHinkal.mjs +5 -5
- package/providers/prepareWagmiHinkal.cjs +1 -1
- package/providers/prepareWagmiHinkal.d.ts +3 -1
- package/providers/prepareWagmiHinkal.mjs +5 -5
- package/services/Hinkal.cjs +1 -1
- package/services/Hinkal.d.ts +8 -2
- package/services/Hinkal.mjs +39 -10
- package/types/IHinkal.d.ts +9 -2
- package/types/index.d.ts +1 -0
- package/types/swap.types.d.ts +25 -0
- package/functions/index.cjs +0 -1
- package/functions/index.d.ts +0 -2
- package/functions/index.mjs +0 -6
- package/functions/integrations/index.cjs +0 -1
- package/functions/integrations/index.d.ts +0 -1
- package/functions/integrations/index.mjs +0 -1
- package/functions/integrations/swapApi.cjs +0 -1
- package/functions/integrations/swapApi.d.ts +0 -23
- package/functions/integrations/swapApi.mjs +0 -32
- package/functions/utils/getFeeStructure.cjs +0 -1
- package/functions/utils/getFeeStructure.d.ts +0 -1
- package/functions/utils/getFeeStructure.mjs +0 -1
- package/functions/utils/index.cjs +0 -1
- package/functions/utils/index.d.ts +0 -3
- package/functions/utils/index.mjs +0 -5
- package/functions/utils/preProcessing.cjs +0 -1
- package/functions/utils/preProcessing.d.ts +0 -1
- package/functions/utils/preProcessing.mjs +0 -1
- package/functions/utils/refreshBalance.cjs +0 -1
- package/functions/utils/refreshBalance.d.ts +0 -2
- package/functions/utils/refreshBalance.mjs +0 -7
|
@@ -58,6 +58,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal {
|
|
|
58
58
|
initUserKeys(mode?: LoginMessageMode): Promise<void>;
|
|
59
59
|
initUserKeysWithSignature(signature: string): void;
|
|
60
60
|
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
61
|
+
initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
|
|
61
62
|
storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
|
|
62
63
|
resetMerkle(chains?: number[]): Promise<void>;
|
|
63
64
|
getTronWeb(): import('tronweb').TronWeb;
|
|
@@ -83,6 +83,7 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
83
83
|
initUserKeys(mode?: LoginMessageMode): Promise<void>;
|
|
84
84
|
initUserKeysWithSignature(signature: string): void;
|
|
85
85
|
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
86
|
+
initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
|
|
86
87
|
storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
|
|
87
88
|
initProviderAdapter(connector: ConnectorType, providerAdapter: IProviderAdapter<ConnectorType>): Promise<void>;
|
|
88
89
|
disconnectFromConnector(): Promise<void>;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
const domain = 'https://storage.googleapis.com/hinkal-workers-staging';
|
|
3
3
|
|
|
4
4
|
const WORKER_CDN_URLS = {
|
|
5
|
-
ZKProof: domain + '/0.3.
|
|
6
|
-
SnarkJS: domain + '/0.3.
|
|
7
|
-
UTXO: domain + '/0.3.
|
|
5
|
+
ZKProof: domain + '/0.3.47/' + 'zkProofWorkerLauncher.js',
|
|
6
|
+
SnarkJS: domain + '/0.3.47/' + 'snarkjsWorkerLauncher.js',
|
|
7
|
+
UTXO: domain + '/0.3.47/' + 'utxoWorkerLauncher.js',
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
// Returns a blob:// URL which points
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
const domain = 'https://storage.googleapis.com/hinkal-workers-staging';
|
|
3
3
|
|
|
4
4
|
const WORKER_CDN_URLS = {
|
|
5
|
-
ZKProof: domain + '/0.3.
|
|
6
|
-
SnarkJS: domain + '/0.3.
|
|
7
|
-
UTXO: domain + '/0.3.
|
|
5
|
+
ZKProof: domain + '/0.3.47/' + 'zkProofWorkerLauncher.js',
|
|
6
|
+
SnarkJS: domain + '/0.3.47/' + 'snarkjsWorkerLauncher.js',
|
|
7
|
+
UTXO: domain + '/0.3.47/' + 'utxoWorkerLauncher.js',
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
// Returns a blob:// URL which points
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`https://storage.googleapis.com/hinkal-workers-staging`,t={ZKProof:e+`/0.3.
|
|
1
|
+
var e=`https://storage.googleapis.com/hinkal-workers-staging`,t={ZKProof:e+`/0.3.47/zkProofWorkerLauncher.js`,SnarkJS:e+`/0.3.47/snarkjsWorkerLauncher.js`,UTXO:e+`/0.3.47/utxoWorkerLauncher.js`};exports.WORKER_CDN_URLS=t;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//#region dist/libs/shared/workers-prebuild/viteWorkerURL.constant.es.js
|
|
2
2
|
var e = "https://storage.googleapis.com/hinkal-workers-staging", t = {
|
|
3
|
-
ZKProof: e + "/0.3.
|
|
4
|
-
SnarkJS: e + "/0.3.
|
|
5
|
-
UTXO: e + "/0.3.
|
|
3
|
+
ZKProof: e + "/0.3.47/zkProofWorkerLauncher.js",
|
|
4
|
+
SnarkJS: e + "/0.3.47/snarkjsWorkerLauncher.js",
|
|
5
|
+
UTXO: e + "/0.3.47/utxoWorkerLauncher.js"
|
|
6
6
|
};
|
|
7
7
|
//#endregion
|
|
8
8
|
export { t as WORKER_CDN_URLS };
|
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./libs/shared/common/src/types/external-action.types.cjs`),t=require(`./libs/shared/common/src/types/balances.types.cjs`),n=require(`./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./libs/shared/common/src/types/external-action.types.cjs`),t=require(`./libs/shared/common/src/types/balances.types.cjs`),n=require(`./services/Hinkal.cjs`);require(`./services/index.cjs`),require(`./types/index.cjs`),exports.ExternalActionId=e.ExternalActionId,exports.Hinkal=n.Hinkal,exports.PrivateBalanceUpdateType=t.PrivateBalanceUpdateType;
|
package/index.d.ts
CHANGED
package/index.mjs
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { ExternalActionId as e } from "./libs/shared/common/src/types/external-action.types.mjs";
|
|
2
2
|
import { PrivateBalanceUpdateType as t } from "./libs/shared/common/src/types/balances.types.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { preProcessing as r } from "./libs/shared/common/src/crypto/preProcessing.mjs";
|
|
5
|
-
import { Hinkal as i } from "./services/Hinkal.mjs";
|
|
3
|
+
import { Hinkal as n } from "./services/Hinkal.mjs";
|
|
6
4
|
import "./services/index.mjs";
|
|
7
|
-
import { refreshBalance as a } from "./functions/utils/refreshBalance.mjs";
|
|
8
|
-
import { getEvmSwapPrices as o, getSolanaSwapPrices as s } from "./functions/integrations/swapApi.mjs";
|
|
9
|
-
import "./functions/index.mjs";
|
|
10
5
|
import "./types/index.mjs";
|
|
11
|
-
export { e as ExternalActionId,
|
|
6
|
+
export { e as ExternalActionId, n as Hinkal, t as PrivateBalanceUpdateType };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../libs/shared/common/src/functions/utils/process.utils.cjs`),n=require(`../libs/shared/common/src/functions/web3/uniswapAPI.cjs`),r=require(`../libs/shared/common/src/functions/web3/odosAPI.cjs`),i=require(`../libs/shared/common/src/functions/web3/oneInchAPI.cjs`),a=require(`../libs/shared/common/src/functions/web3/okxAPI.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{let[u,d]=await e.resolveErc20Tokens(a,[c,l]),[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{let[s,c]=await e.resolveErc20Tokens(n,[i,o]);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch{return{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { EvmSwapPrices, IHinkal, SolanaSwapPrices } from '../types';
|
|
2
|
+
export declare const getEvmSwapPrices: (hinkal: IHinkal, chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<EvmSwapPrices>;
|
|
3
|
+
export declare const getSolanaSwapPrices: (chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<SolanaSwapPrices>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { resolveErc20Tokens as e } from "../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
|
|
2
|
+
import { withTimeout as t } from "../libs/shared/common/src/functions/utils/process.utils.mjs";
|
|
3
|
+
import { getUniswapPrice as n } from "../libs/shared/common/src/functions/web3/uniswapAPI.mjs";
|
|
4
|
+
import { getOdosPrice as r } from "../libs/shared/common/src/functions/web3/odosAPI.mjs";
|
|
5
|
+
import { getOneInchPrice as i } from "../libs/shared/common/src/functions/web3/oneInchAPI.mjs";
|
|
6
|
+
import { getOKXPrice as a } from "../libs/shared/common/src/functions/web3/okxAPI.mjs";
|
|
7
|
+
import "../libs/shared/common/src/functions/index.mjs";
|
|
8
|
+
//#region libs/shared/sdk/src/internal/swapApi.ts
|
|
9
|
+
var o = async (t, r, i, a, o) => {
|
|
10
|
+
let s = t.hinkalCommon, [c, l] = await e(r, [a, o]);
|
|
11
|
+
return n(s, r, i, c, l);
|
|
12
|
+
}, s = async (n, a, s, c, l) => {
|
|
13
|
+
let [u, d] = await e(a, [c, l]), [f, p, m] = await Promise.allSettled([
|
|
14
|
+
t(o(n, a, s, c, l)),
|
|
15
|
+
t(r(a, u, d, s)),
|
|
16
|
+
t(i(a, u, d, s))
|
|
17
|
+
]);
|
|
18
|
+
return {
|
|
19
|
+
uniswap: f.status === "fulfilled" ? f.value : null,
|
|
20
|
+
odos: p.status === "fulfilled" ? p.value : null,
|
|
21
|
+
oneInch: m.status === "fulfilled" ? m.value : null
|
|
22
|
+
};
|
|
23
|
+
}, c = async (n, r, i, o) => {
|
|
24
|
+
let [s, c] = await e(n, [i, o]);
|
|
25
|
+
try {
|
|
26
|
+
return { okx: await t(a(n, s, c, r)) };
|
|
27
|
+
} catch {
|
|
28
|
+
return { okx: null };
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
export { s as getEvmSwapPrices, c as getSolanaSwapPrices };
|
|
@@ -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 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;
|
|
@@ -138,6 +138,16 @@ var ge = class {
|
|
|
138
138
|
let t = O(e);
|
|
139
139
|
this.userKeys = new _(t);
|
|
140
140
|
}
|
|
141
|
+
async initUserKeysWithEnclaveSignature(e = h.PROTOCOL) {
|
|
142
|
+
if (!await this.getEthereumAddress()) throw Error("Connected address not found");
|
|
143
|
+
let t = this.getProviderAdapter().isSolanaLedger?.() ?? !1, n, r;
|
|
144
|
+
if (t) {
|
|
145
|
+
let e = await this.signSolanaLedgerMessage();
|
|
146
|
+
n = e.signature, r = e.txMessageForSolanaLedger;
|
|
147
|
+
} else n = await this.getProviderAdapter().signMessage(this.getSigningMessage(e));
|
|
148
|
+
let i = await this.storeAndGetInitialSignature(n, t, r);
|
|
149
|
+
return this.initUserKeysWithSignature(i ?? n), r;
|
|
150
|
+
}
|
|
141
151
|
async storeAndGetInitialSignature(e, t = !1, n) {
|
|
142
152
|
let r = await this.getEthereumAddress();
|
|
143
153
|
if (!r) throw Error("Connected address not found");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=e=>new Promise(t=>{setTimeout(t,e)}),t=async(e,t=1e4)=>
|
|
1
|
+
var e=e=>new Promise(t=>{setTimeout(t,e)}),t=async(e,t=1e4)=>{let n,r=new Promise((e,r)=>{n=setTimeout(()=>r(Error(`Timeout after ${t}ms`)),t)});try{return await Promise.race([e,r])}finally{clearTimeout(n)}},n=async(t,n={})=>{let r=n.intervalMs??5e3,i=n.timeoutMs??6e4,a=Math.floor(i/r)+1;for(let n=0;n<a;n+=1){try{let e=await t();if(e!=null)return e}catch{}n<a-1&&await e(r)}};exports.pollForValue=n,exports.wait=e,exports.withTimeout=t;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
//#region libs/shared/common/src/functions/utils/process.utils.ts
|
|
2
2
|
var e = (e) => new Promise((t) => {
|
|
3
3
|
setTimeout(t, e);
|
|
4
|
-
}), t = async (e, t = 1e4) =>
|
|
5
|
-
let
|
|
6
|
-
r(/* @__PURE__ */ Error(`Timeout after ${t}ms`));
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
}), t = async (e, t = 1e4) => {
|
|
5
|
+
let n, r = new Promise((e, r) => {
|
|
6
|
+
n = setTimeout(() => r(/* @__PURE__ */ Error(`Timeout after ${t}ms`)), t);
|
|
7
|
+
});
|
|
8
|
+
try {
|
|
9
|
+
return await Promise.race([e, r]);
|
|
10
|
+
} finally {
|
|
11
|
+
clearTimeout(n);
|
|
12
|
+
}
|
|
13
|
+
}, n = async (t, n = {}) => {
|
|
10
14
|
let r = n.intervalMs ?? 5e3, i = n.timeoutMs ?? 6e4, a = Math.floor(i / r) + 1;
|
|
11
15
|
for (let n = 0; n < a; n += 1) {
|
|
12
16
|
try {
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../libs/shared/common/src/providers/EthersProviderAdapter.cjs`),n=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var r=async(r,i)=>{await e.preProcessing();let
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../libs/shared/common/src/providers/EthersProviderAdapter.cjs`),n=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var r=async(r,i,a)=>{await e.preProcessing();let o=new n.Hinkal(a),s=t.default();return s.initSigner?.(r),await o.initProviderAdapter(void 0,s),await i(o),await o.resetMerkle(),o},i=async(e,t)=>r(e,e=>e.initUserKeys(),t),a=async(e,t)=>r(e,e=>e.initUserKeysWithEnclaveSignature(),t),o=async(e,t,n)=>r(e,e=>e.initUserKeysWithSignature(t),n);exports.prepareEthersHinkal=i,exports.prepareEthersHinkalFromSignature=o,exports.prepareEthersHinkalWithEnclaveSignIn=a;
|
|
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
|
|
|
2
2
|
import { Signer } from 'ethers';
|
|
3
3
|
import { Hinkal } from '../services';
|
|
4
4
|
export declare const prepareEthersHinkal: (signer: Signer, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
5
|
+
export declare const prepareEthersHinkalWithEnclaveSignIn: (signer: Signer, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
6
|
+
export declare const prepareEthersHinkalFromSignature: (signer: Signer, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
@@ -3,10 +3,10 @@ import t from "../libs/shared/common/src/providers/EthersProviderAdapter.mjs";
|
|
|
3
3
|
import { Hinkal as n } from "../services/Hinkal.mjs";
|
|
4
4
|
import "../services/index.mjs";
|
|
5
5
|
//#region libs/shared/sdk/src/providers/prepareEthersHinkal.ts
|
|
6
|
-
var r = async (r, i) => {
|
|
6
|
+
var r = async (r, i, a) => {
|
|
7
7
|
await e();
|
|
8
|
-
let
|
|
9
|
-
return
|
|
10
|
-
};
|
|
8
|
+
let o = new n(a), s = t();
|
|
9
|
+
return s.initSigner?.(r), await o.initProviderAdapter(void 0, s), await i(o), await o.resetMerkle(), o;
|
|
10
|
+
}, i = async (e, t) => r(e, (e) => e.initUserKeys(), t), a = async (e, t) => r(e, (e) => e.initUserKeysWithEnclaveSignature(), t), o = async (e, t, n) => r(e, (e) => e.initUserKeysWithSignature(t), n);
|
|
11
11
|
//#endregion
|
|
12
|
-
export {
|
|
12
|
+
export { i as prepareEthersHinkal, o as prepareEthersHinkalFromSignature, a as prepareEthersHinkalWithEnclaveSignIn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/SolanaProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/SolanaProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o,s)=>{await t.preProcessing();let c=new r.Hinkal(s),l=n.default(e.currentSolanaChainId,o);return await c.initProviderAdapter(i,l),await a(c),await c.resetMerkle(),c},a=async(e,t,n)=>i(e,e=>e.initUserKeys(),t,n),o=async(e,t,n)=>i(e,e=>e.initUserKeysWithEnclaveSignature(),t,n),s=async(e,t,n,r)=>i(e,e=>e.initUserKeysWithSignature(t),n,r);exports.prepareSolanaHinkal=a,exports.prepareSolanaHinkalFromSignature=s,exports.prepareSolanaHinkalWithEnclaveSignIn=o;
|
|
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
|
|
|
2
2
|
import { SolanaWallet } from '../common/src/types/solana.types';
|
|
3
3
|
import { Hinkal } from '../services';
|
|
4
4
|
export declare const prepareSolanaHinkal: (connector: SolanaWallet, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
5
|
+
export declare const prepareSolanaHinkalWithEnclaveSignIn: (connector: SolanaWallet, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
6
|
+
export declare const prepareSolanaHinkalFromSignature: (connector: SolanaWallet, signature: string, ethereumAddress?: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
@@ -4,10 +4,10 @@ import n from "../libs/shared/common/src/providers/SolanaProviderAdapter.mjs";
|
|
|
4
4
|
import { Hinkal as r } from "../services/Hinkal.mjs";
|
|
5
5
|
import "../services/index.mjs";
|
|
6
6
|
//#region libs/shared/sdk/src/providers/prepareSolanaHinkal.ts
|
|
7
|
-
var i = async (i, a, o) => {
|
|
7
|
+
var i = async (i, a, o, s) => {
|
|
8
8
|
await t();
|
|
9
|
-
let
|
|
10
|
-
return await
|
|
11
|
-
};
|
|
9
|
+
let c = new r(s), l = n(e, o);
|
|
10
|
+
return await c.initProviderAdapter(i, l), await a(c), await c.resetMerkle(), c;
|
|
11
|
+
}, a = async (e, t, n) => i(e, (e) => e.initUserKeys(), t, n), o = async (e, t, n) => i(e, (e) => e.initUserKeysWithEnclaveSignature(), t, n), s = async (e, t, n, r) => i(e, (e) => e.initUserKeysWithSignature(t), n, r);
|
|
12
12
|
//#endregion
|
|
13
|
-
export {
|
|
13
|
+
export { a as prepareSolanaHinkal, s as prepareSolanaHinkalFromSignature, o as prepareSolanaHinkalWithEnclaveSignIn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/TronProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a)=>{await t.preProcessing();let
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),n=require(`../libs/shared/common/src/providers/TronProviderAdapter.cjs`),r=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let s=new r.Hinkal(o),c=n.default(e.currentTronChainId);return await s.initProviderAdapter(i,c),await a(s),await s.resetMerkle(),s},a=async(e,t)=>i(e,e=>e.initUserKeys(),t),o=async(e,t)=>i(e,e=>e.initUserKeysWithEnclaveSignature(),t),s=async(e,t,n)=>i(e,e=>e.initUserKeysWithSignature(t),n);exports.prepareTronHinkal=a,exports.prepareTronHinkalFromSignature=s,exports.prepareTronHinkalWithEnclaveSignIn=o;
|
|
@@ -2,3 +2,5 @@ import { HinkalConfig } from '../common/src/types/hinkal.types';
|
|
|
2
2
|
import { TronWeb } from 'tronweb';
|
|
3
3
|
import { Hinkal } from '../services';
|
|
4
4
|
export declare const prepareTronHinkal: (connector: TronWeb, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
5
|
+
export declare const prepareTronHinkalWithEnclaveSignIn: (connector: TronWeb, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
6
|
+
export declare const prepareTronHinkalFromSignature: (connector: TronWeb, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
@@ -4,10 +4,10 @@ import n from "../libs/shared/common/src/providers/TronProviderAdapter.mjs";
|
|
|
4
4
|
import { Hinkal as r } from "../services/Hinkal.mjs";
|
|
5
5
|
import "../services/index.mjs";
|
|
6
6
|
//#region libs/shared/sdk/src/providers/prepareTronHinkal.ts
|
|
7
|
-
var i = async (i, a) => {
|
|
7
|
+
var i = async (i, a, o) => {
|
|
8
8
|
await t();
|
|
9
|
-
let
|
|
10
|
-
return await
|
|
11
|
-
};
|
|
9
|
+
let s = new r(o), c = n(e);
|
|
10
|
+
return await s.initProviderAdapter(i, c), await a(s), await s.resetMerkle(), s;
|
|
11
|
+
}, a = async (e, t) => i(e, (e) => e.initUserKeys(), t), o = async (e, t) => i(e, (e) => e.initUserKeysWithEnclaveSignature(), t), s = async (e, t, n) => i(e, (e) => e.initUserKeysWithSignature(t), n);
|
|
12
12
|
//#endregion
|
|
13
|
-
export {
|
|
13
|
+
export { a as prepareTronHinkal, s as prepareTronHinkalFromSignature, o as prepareTronHinkalWithEnclaveSignIn };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);const n=require(`../libs/shared/common/src/providers/WagmiProviderAdapter.cjs`);var r=async(r,i,a)=>{await e.preProcessing();let
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../libs/shared/common/src/crypto/preProcessing.cjs`),t=require(`../services/Hinkal.cjs`);require(`../services/index.cjs`);const n=require(`../libs/shared/common/src/providers/WagmiProviderAdapter.cjs`);var r=async(r,i,a,o)=>{await e.preProcessing();let s=new t.Hinkal(o),c=n.default();return c.initConfig?.(i),await s.initProviderAdapter(r,c),await a(s),await s.resetMerkle(),s},i=async(e,t,n)=>r(e,t,e=>e.initUserKeys(),n),a=async(e,t,n)=>r(e,t,e=>e.initUserKeysWithEnclaveSignature(),n),o=async(e,t,n,i)=>r(e,t,e=>e.initUserKeysWithSignature(n),i);exports.prepareWagmiHinkal=i,exports.prepareWagmiHinkalFromSignature=o,exports.prepareWagmiHinkalWithEnclaveSignIn=a;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { HinkalConfig } from '../common/src/types/hinkal.types';
|
|
1
2
|
import { Config, Connector } from 'wagmi';
|
|
2
3
|
import { Hinkal } from '../services';
|
|
3
|
-
import { HinkalConfig } from '../common/src/types/hinkal.types';
|
|
4
4
|
export declare const prepareWagmiHinkal: (connector: Connector, config: Config, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
5
|
+
export declare const prepareWagmiHinkalWithEnclaveSignIn: (connector: Connector, config: Config, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
6
|
+
export declare const prepareWagmiHinkalFromSignature: (connector: Connector, config: Config, signature: string, hinkalConfig?: HinkalConfig) => Promise<Hinkal<unknown>>;
|
|
@@ -3,10 +3,10 @@ import { Hinkal as t } from "../services/Hinkal.mjs";
|
|
|
3
3
|
import "../services/index.mjs";
|
|
4
4
|
import n from "../libs/shared/common/src/providers/WagmiProviderAdapter.mjs";
|
|
5
5
|
//#region libs/shared/sdk/src/providers/prepareWagmiHinkal.ts
|
|
6
|
-
var r = async (r, i, a) => {
|
|
6
|
+
var r = async (r, i, a, o) => {
|
|
7
7
|
await e();
|
|
8
|
-
let
|
|
9
|
-
return
|
|
10
|
-
};
|
|
8
|
+
let s = new t(o), c = n();
|
|
9
|
+
return c.initConfig?.(i), await s.initProviderAdapter(r, c), await a(s), await s.resetMerkle(), s;
|
|
10
|
+
}, i = async (e, t, n) => r(e, t, (e) => e.initUserKeys(), n), a = async (e, t, n) => r(e, t, (e) => e.initUserKeysWithEnclaveSignature(), n), o = async (e, t, n, i) => r(e, t, (e) => e.initUserKeysWithSignature(n), i);
|
|
11
11
|
//#endregion
|
|
12
|
-
export {
|
|
12
|
+
export { i as prepareWagmiHinkal, o as prepareWagmiHinkalFromSignature, a as prepareWagmiHinkalWithEnclaveSignIn };
|
package/services/Hinkal.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/types/hinkal.types.cjs`);require(`../libs/shared/common/src/types/index.cjs`);const n=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);const
|
|
1
|
+
const e=require(`../libs/shared/common/src/constants/chains.constants.cjs`),t=require(`../libs/shared/common/src/types/hinkal.types.cjs`);require(`../libs/shared/common/src/types/index.cjs`);const n=require(`../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),r=require(`../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),i=require(`../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.cjs`),a=require(`../libs/shared/common/src/functions/private-wallet/emporium.helpers.cjs`);require(`../libs/shared/common/src/functions/index.cjs`);const o=require(`../libs/shared/common/src/data-structures/Hinkal/Hinkal.cjs`),s=require(`../internal/token.utils.cjs`),c=require(`../internal/swapApi.cjs`);var l=class{hinkalCommon;mappedPrivateBalancesSource;mappedPrivateBalances={};constructor(e){this.hinkalCommon=new o.Hinkal(e)}getProviderAdapter(e){return this.hinkalCommon.getProviderAdapter(e)}initProviderAdapter(e,t){return this.hinkalCommon.initProviderAdapter(e,t)}initUserKeys(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeys(e)}initUserKeysWithSignature(e){return this.hinkalCommon.initUserKeysWithSignature(e)}initUserKeysFromSeedPhrases(e){return this.hinkalCommon.initUserKeysFromSeedPhrases(e)}initUserKeysWithEnclaveSignature(e=t.LoginMessageMode.PROTOCOL){return this.hinkalCommon.initUserKeysWithEnclaveSignature(e)}storeAndGetInitialSignature(e,t=!1,n){return this.hinkalCommon.storeAndGetInitialSignature(e,t,n)}resetProviderAdapters(){return this.hinkalCommon.resetProviderAdapters()}disconnectFromConnector(){return this.hinkalCommon.disconnectFromConnector()}destroy(){return this.hinkalCommon.destroy()}signMessage(e){return this.hinkalCommon.signMessage(e)}signTypedData(e,t,n){return this.hinkalCommon.signTypedData(e,t,n)}getSupportedChains(){return this.hinkalCommon.getSupportedChains()}isSelectedNetworkSupported(e){return this.hinkalCommon.isSelectedNetworkSupported(e)}switchNetwork(t){let n=e.networkRegistry[t];if(!n)throw Error(`Network with chainId ${t} not supported`);return this.hinkalCommon.switchNetwork(n)}resetMerkle(e){return this.hinkalCommon.resetMerkle(e)}resetMerkleTreesIfNecessary(e){return this.hinkalCommon.resetMerkleTreesIfNecessary(e)}getMappedPrivateBalances(e){return e===this.mappedPrivateBalancesSource?this.mappedPrivateBalances:(this.mappedPrivateBalancesSource=e,this.mappedPrivateBalances=s.mapPrivateBalances(e),this.mappedPrivateBalances)}get privateBalancesWithUSD(){return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD)}onPrivateBalancesWithUSDChange(e){return this.hinkalCommon.onPrivateBalancesWithUSDChange(t=>e(this.getMappedPrivateBalances(t)))}refreshBalance(e){i.balanceChangedHandler.dispatch(e)}async getTotalBalance(e,t=!1,n=!1){return(await this.hinkalCommon.getTotalBalance(e,void 0,void 0,t,n)).map(s.mapTokenBalance)}async getStuckShieldedBalances(e,t=!1,n=!1){return(await this.hinkalCommon.getStuckShieldedBalances(e,void 0,void 0,t,n)).map(s.mapTokenBalance)}monitorConnectedAddress(e){return this.hinkalCommon.monitorConnectedAddress(e)}waitForTransaction(e,t,n){return this.hinkalCommon.waitForTransaction(e,t,n)}getFeeStructure(e,t,n,i,a=[],o=0n,s){return r.getFeeStructure(e,t,n,i,a,o,s)}getEvmSwapPrices(e,t,n,r){return c.getEvmSwapPrices(this,e,t,n,r)}getSolanaSwapPrices(e,t,n,r){return c.getSolanaSwapPrices(e,t,n,r)}getSolanaPublicKey(){return this.hinkalCommon.getSolanaPublicKey()}getEthereumAddress(){return this.hinkalCommon.getEthereumAddress()}getEthereumAddressByChain(e){return this.hinkalCommon.getEthereumAddressByChain(e)}getRecipientInfo(){return this.hinkalCommon.getRecipientInfo()}getShieldedPublicKey(){return this.hinkalCommon.userKeys.getShieldedPublicKey()}async prooflessDeposit(e,t,r,i){return this.hinkalCommon.prooflessDeposit(await n.resolveErc20Tokens(e,t),r,i)}async prooflessDepositWithPublicFee(e,t,r,i,a){return this.hinkalCommon.prooflessDepositWithPublicFee(await n.resolveErc20Token(e,t),r,i,a)}async deposit(e,t,r,i,a){return this.hinkalCommon.deposit(await n.resolveErc20Tokens(e,t),r,i,a)}async depositSolana(e,t,r){return this.hinkalCommon.depositSolana(r,await n.resolveErc20Token(e,t))}async depositForOther(e,t,r,i,a,o){return this.hinkalCommon.depositForOther(await n.resolveErc20Tokens(e,t),r,i,a,o)}async depositSolanaForOther(e,t,r,i){return this.hinkalCommon.depositSolanaForOther(r,await n.resolveErc20Token(e,t),i)}async depositAndWithdraw(e,t,r,i,a,o,s){return this.hinkalCommon.depositAndWithdraw(await n.resolveErc20Token(e,t),r,i,a,o,void 0,void 0,void 0,s)}async depositAndBridge(e,t,r,i,a,o){return this.hinkalCommon.depositAndBridge(await n.resolveErc20Token(e,t),r,i,a,void 0,void 0,void 0,o)}async checkSendTransactionStatus(e){return this.hinkalCommon.checkSendTransactionStatus(e)}async nearDepositAndBridge(e,t,r,i,a,o,s){return this.hinkalCommon.nearDepositAndBridge(await n.resolveErc20Token(e,t),r,i,a,o,s)}async claimUtxo(e,t,r,i,a){return this.hinkalCommon.claimUtxo(await n.resolveErc20Token(e,t),r,i,a)}async transfer(e,t,r,i,a,o){return this.hinkalCommon.transfer(await n.resolveErc20Tokens(e,t),r,i,a,o)}async withdraw(e,t,r,i,a,o,s){return this.hinkalCommon.withdraw(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async withdrawStuckUtxos(e,t,r){return this.hinkalCommon.withdrawStuckUtxos(await n.resolveErc20Token(e,t),r)}async swap(e,t,r,i,a,o,s){return this.hinkalCommon.swap(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}emporiumOp(e,t,n,r,i,o){return a.emporiumOp({contract:e,func:t,args:n,callDataString:r,invokeWallet:i,value:o})}async actionPrivateWallet(e,t,r,i,a,o,c,l,u){return this.hinkalCommon.actionPrivateWallet(e,await n.resolveErc20Tokens(e,t),r,i,a,await s.resolveCommonTokenChanges(e,o),c,l,u)}async proxySwap(e,t,r,i,a,o,s,c,l){return this.hinkalCommon.proxySwap(await n.resolveErc20Tokens(e,t),r,i,a,o,s,c,l)}async proxyToPrivate(e,t,r,i,a,o,s){return this.hinkalCommon.proxyToPrivate(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}async proxySend(e,t,r,i,a,o,s){return this.hinkalCommon.proxySend(await n.resolveErc20Tokens(e,t),r,i,a,o,s)}};exports.Hinkal=l;
|
package/services/Hinkal.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BridgeRecipient, ExternalActionId, FeeStructure, HinkalConfig, LoginMessageMode, NearBridgeParams, NearBridgeResult, StealthAddressStructure, SubAccount, DepositAndSendExtendedResult } from '../common/src/types';
|
|
1
|
+
import { BridgeRecipient, CallInfo, ExternalActionId, FeeStructure, HinkalConfig, LoginMessageMode, NearBridgeParams, NearBridgeResult, SolanaTransactionParams, StealthAddressStructure, SubAccount, DepositAndSendExtendedResult } from '../common/src/types';
|
|
2
2
|
import { ethers, TypedDataDomain, TypedDataField } from 'ethers';
|
|
3
3
|
import { Types as TronWebTypes } from 'tronweb';
|
|
4
4
|
import { Utxo } from '../common/src/data-structures/utxo/Utxo';
|
|
5
5
|
import { PublicKey } from '@solana/web3.js';
|
|
6
|
-
import { IHinkal, IProviderAdapter, PrivateBalancesState, TokenBalance, TokenChanges } from '../types';
|
|
6
|
+
import { EvmSwapPrices, IHinkal, IProviderAdapter, PrivateBalancesState, PrivateBalanceUpdateEventType, SolanaSwapPrices, TokenBalance, TokenChanges } from '../types';
|
|
7
7
|
import { ScheduledTransactionByIdResponse } from '../common/src/API';
|
|
8
8
|
export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
|
|
9
9
|
private readonly hinkalCommon;
|
|
@@ -15,6 +15,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
|
|
|
15
15
|
initUserKeys(mode?: LoginMessageMode): Promise<void>;
|
|
16
16
|
initUserKeysWithSignature(signature: string): void;
|
|
17
17
|
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
18
|
+
initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
|
|
18
19
|
storeAndGetInitialSignature(authSignature: string, isSolanaLedger?: boolean, txMessageForSolanaLedger?: string): Promise<string>;
|
|
19
20
|
resetProviderAdapters(): Promise<void>;
|
|
20
21
|
disconnectFromConnector(): Promise<void>;
|
|
@@ -29,10 +30,14 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
|
|
|
29
30
|
private getMappedPrivateBalances;
|
|
30
31
|
get privateBalancesWithUSD(): PrivateBalancesState;
|
|
31
32
|
onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
|
|
33
|
+
refreshBalance(detail: PrivateBalanceUpdateEventType): void;
|
|
32
34
|
getTotalBalance(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
|
|
33
35
|
getStuckShieldedBalances(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
|
|
34
36
|
monitorConnectedAddress(chainId: number): Promise<void>;
|
|
35
37
|
waitForTransaction(chainId: number, transactionHash: string, confirmations?: number): Promise<boolean>;
|
|
38
|
+
getFeeStructure(chainId: number, feeTokenAddress: string | undefined, erc20Addresses: string[], externalActionId: ExternalActionId, calls?: CallInfo[], variableRate?: bigint, solanaTransactionParams?: SolanaTransactionParams): Promise<FeeStructure>;
|
|
39
|
+
getEvmSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<EvmSwapPrices>;
|
|
40
|
+
getSolanaSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<SolanaSwapPrices>;
|
|
36
41
|
getSolanaPublicKey(): PublicKey;
|
|
37
42
|
getEthereumAddress(): Promise<string>;
|
|
38
43
|
getEthereumAddressByChain(chainId: number): Promise<string>;
|
|
@@ -53,6 +58,7 @@ export declare class Hinkal<ConnectorType> implements IHinkal<ConnectorType> {
|
|
|
53
58
|
withdraw(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<ethers.TransactionResponse | string>;
|
|
54
59
|
withdrawStuckUtxos(chainId: number, erc20Address: string, recipientAddress: string): Promise<string[]>;
|
|
55
60
|
swap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
61
|
+
emporiumOp(contract: ethers.Contract | string, func?: string, args?: unknown[], callDataString?: string, invokeWallet?: boolean, value?: bigint): string;
|
|
56
62
|
actionPrivateWallet(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
57
63
|
proxySwap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
58
64
|
proxyToPrivate(chainId: number, erc20Addresses: string[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
package/services/Hinkal.mjs
CHANGED
|
@@ -2,16 +2,20 @@ import { networkRegistry as e } from "../libs/shared/common/src/constants/chains
|
|
|
2
2
|
import { LoginMessageMode as t } from "../libs/shared/common/src/types/hinkal.types.mjs";
|
|
3
3
|
import "../libs/shared/common/src/types/index.mjs";
|
|
4
4
|
import { resolveErc20Token as n, resolveErc20Tokens as r } from "../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
|
|
5
|
+
import { getFeeStructure as i } from "../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
|
|
6
|
+
import { balanceChangedHandler as a } from "../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.mjs";
|
|
7
|
+
import { emporiumOp as o } from "../libs/shared/common/src/functions/private-wallet/emporium.helpers.mjs";
|
|
5
8
|
import "../libs/shared/common/src/functions/index.mjs";
|
|
6
|
-
import { Hinkal as
|
|
7
|
-
import { mapPrivateBalances as
|
|
9
|
+
import { Hinkal as s } from "../libs/shared/common/src/data-structures/Hinkal/Hinkal.mjs";
|
|
10
|
+
import { mapPrivateBalances as c, mapTokenBalance as l, resolveCommonTokenChanges as u } from "../internal/token.utils.mjs";
|
|
11
|
+
import { getEvmSwapPrices as d, getSolanaSwapPrices as f } from "../internal/swapApi.mjs";
|
|
8
12
|
//#region libs/shared/sdk/src/services/Hinkal.ts
|
|
9
|
-
var
|
|
13
|
+
var p = class {
|
|
10
14
|
hinkalCommon;
|
|
11
15
|
mappedPrivateBalancesSource;
|
|
12
16
|
mappedPrivateBalances = {};
|
|
13
17
|
constructor(e) {
|
|
14
|
-
this.hinkalCommon = new
|
|
18
|
+
this.hinkalCommon = new s(e);
|
|
15
19
|
}
|
|
16
20
|
getProviderAdapter(e) {
|
|
17
21
|
return this.hinkalCommon.getProviderAdapter(e);
|
|
@@ -28,6 +32,9 @@ var c = class {
|
|
|
28
32
|
initUserKeysFromSeedPhrases(e) {
|
|
29
33
|
return this.hinkalCommon.initUserKeysFromSeedPhrases(e);
|
|
30
34
|
}
|
|
35
|
+
initUserKeysWithEnclaveSignature(e = t.PROTOCOL) {
|
|
36
|
+
return this.hinkalCommon.initUserKeysWithEnclaveSignature(e);
|
|
37
|
+
}
|
|
31
38
|
storeAndGetInitialSignature(e, t = !1, n) {
|
|
32
39
|
return this.hinkalCommon.storeAndGetInitialSignature(e, t, n);
|
|
33
40
|
}
|
|
@@ -64,7 +71,7 @@ var c = class {
|
|
|
64
71
|
return this.hinkalCommon.resetMerkleTreesIfNecessary(e);
|
|
65
72
|
}
|
|
66
73
|
getMappedPrivateBalances(e) {
|
|
67
|
-
return e === this.mappedPrivateBalancesSource ? this.mappedPrivateBalances : (this.mappedPrivateBalancesSource = e, this.mappedPrivateBalances =
|
|
74
|
+
return e === this.mappedPrivateBalancesSource ? this.mappedPrivateBalances : (this.mappedPrivateBalancesSource = e, this.mappedPrivateBalances = c(e), this.mappedPrivateBalances);
|
|
68
75
|
}
|
|
69
76
|
get privateBalancesWithUSD() {
|
|
70
77
|
return this.getMappedPrivateBalances(this.hinkalCommon.privateBalancesWithUSD);
|
|
@@ -72,11 +79,14 @@ var c = class {
|
|
|
72
79
|
onPrivateBalancesWithUSDChange(e) {
|
|
73
80
|
return this.hinkalCommon.onPrivateBalancesWithUSDChange((t) => e(this.getMappedPrivateBalances(t)));
|
|
74
81
|
}
|
|
82
|
+
refreshBalance(e) {
|
|
83
|
+
a.dispatch(e);
|
|
84
|
+
}
|
|
75
85
|
async getTotalBalance(e, t = !1, n = !1) {
|
|
76
|
-
return (await this.hinkalCommon.getTotalBalance(e, void 0, void 0, t, n)).map(
|
|
86
|
+
return (await this.hinkalCommon.getTotalBalance(e, void 0, void 0, t, n)).map(l);
|
|
77
87
|
}
|
|
78
88
|
async getStuckShieldedBalances(e, t = !1, n = !1) {
|
|
79
|
-
return (await this.hinkalCommon.getStuckShieldedBalances(e, void 0, void 0, t, n)).map(
|
|
89
|
+
return (await this.hinkalCommon.getStuckShieldedBalances(e, void 0, void 0, t, n)).map(l);
|
|
80
90
|
}
|
|
81
91
|
monitorConnectedAddress(e) {
|
|
82
92
|
return this.hinkalCommon.monitorConnectedAddress(e);
|
|
@@ -84,6 +94,15 @@ var c = class {
|
|
|
84
94
|
waitForTransaction(e, t, n) {
|
|
85
95
|
return this.hinkalCommon.waitForTransaction(e, t, n);
|
|
86
96
|
}
|
|
97
|
+
getFeeStructure(e, t, n, r, a = [], o = 0n, s) {
|
|
98
|
+
return i(e, t, n, r, a, o, s);
|
|
99
|
+
}
|
|
100
|
+
getEvmSwapPrices(e, t, n, r) {
|
|
101
|
+
return d(this, e, t, n, r);
|
|
102
|
+
}
|
|
103
|
+
getSolanaSwapPrices(e, t, n, r) {
|
|
104
|
+
return f(e, t, n, r);
|
|
105
|
+
}
|
|
87
106
|
getSolanaPublicKey() {
|
|
88
107
|
return this.hinkalCommon.getSolanaPublicKey();
|
|
89
108
|
}
|
|
@@ -144,8 +163,18 @@ var c = class {
|
|
|
144
163
|
async swap(e, t, n, i, a, o, s) {
|
|
145
164
|
return this.hinkalCommon.swap(await r(e, t), n, i, a, o, s);
|
|
146
165
|
}
|
|
147
|
-
|
|
148
|
-
return
|
|
166
|
+
emporiumOp(e, t, n, r, i, a) {
|
|
167
|
+
return o({
|
|
168
|
+
contract: e,
|
|
169
|
+
func: t,
|
|
170
|
+
args: n,
|
|
171
|
+
callDataString: r,
|
|
172
|
+
invokeWallet: i,
|
|
173
|
+
value: a
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
async actionPrivateWallet(e, t, n, i, a, o, s, c, l) {
|
|
177
|
+
return this.hinkalCommon.actionPrivateWallet(e, await r(e, t), n, i, a, await u(e, o), s, c, l);
|
|
149
178
|
}
|
|
150
179
|
async proxySwap(e, t, n, i, a, o, s, c, l) {
|
|
151
180
|
return this.hinkalCommon.proxySwap(await r(e, t), n, i, a, o, s, c, l);
|
|
@@ -158,4 +187,4 @@ var c = class {
|
|
|
158
187
|
}
|
|
159
188
|
};
|
|
160
189
|
//#endregion
|
|
161
|
-
export {
|
|
190
|
+
export { p as Hinkal };
|
package/types/IHinkal.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { BridgeRecipient, DepositAndSendExtendedResult, ExternalActionId, FeeStructure, LoginMessageMode, NearBridgeParams, NearBridgeResult, StealthAddressStructure, SubAccount } from '../common/src/types';
|
|
1
|
+
import { BridgeRecipient, CallInfo, DepositAndSendExtendedResult, ExternalActionId, FeeStructure, LoginMessageMode, NearBridgeParams, NearBridgeResult, SolanaTransactionParams, StealthAddressStructure, SubAccount } from '../common/src/types';
|
|
2
2
|
import { ethers, TypedDataDomain, TypedDataField } from 'ethers';
|
|
3
3
|
import { Types as TronWebTypes } from 'tronweb';
|
|
4
4
|
import { Utxo } from '../common/src/data-structures/utxo/Utxo';
|
|
5
5
|
import { PublicKey } from '@solana/web3.js';
|
|
6
6
|
import { IProviderAdapter } from './IProviderAdapter';
|
|
7
|
-
import { PrivateBalancesState, TokenBalance } from './balances.types';
|
|
7
|
+
import { PrivateBalancesState, PrivateBalanceUpdateEventType, TokenBalance } from './balances.types';
|
|
8
8
|
import { TokenChanges } from './token.types';
|
|
9
|
+
import { EvmSwapPrices, SolanaSwapPrices } from './swap.types';
|
|
9
10
|
import { ScheduledTransactionByIdResponse } from '../common/src/API';
|
|
10
11
|
export interface IHinkal<ConnectorType = unknown> {
|
|
11
12
|
getProviderAdapter(chainId?: number): IProviderAdapter;
|
|
@@ -13,6 +14,7 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
13
14
|
initUserKeys(mode?: LoginMessageMode): Promise<void>;
|
|
14
15
|
initUserKeysWithSignature(signature: string): void;
|
|
15
16
|
initUserKeysFromSeedPhrases(seedPhrases: string[]): Promise<void>;
|
|
17
|
+
initUserKeysWithEnclaveSignature(signInMode?: LoginMessageMode): Promise<string | undefined>;
|
|
16
18
|
storeAndGetInitialSignature(authSignature: string, isSolanaLedger: boolean, txMessageForSolanaLedger?: string): Promise<string>;
|
|
17
19
|
resetProviderAdapters(): Promise<void>;
|
|
18
20
|
disconnectFromConnector(): Promise<void>;
|
|
@@ -27,10 +29,14 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
27
29
|
privateBalancesWithUSD: PrivateBalancesState;
|
|
28
30
|
/** Returns unsubscribe. Multiple listeners supported. */
|
|
29
31
|
onPrivateBalancesWithUSDChange(callback: (state: PrivateBalancesState) => void): () => void;
|
|
32
|
+
refreshBalance(detail: PrivateBalanceUpdateEventType): void;
|
|
30
33
|
getTotalBalance(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
|
|
31
34
|
getStuckShieldedBalances(chainId: number, resetCacheBefore?: boolean, updateTokensListBefore?: boolean): Promise<TokenBalance[]>;
|
|
32
35
|
monitorConnectedAddress(chainId: number): Promise<void>;
|
|
33
36
|
waitForTransaction(chainId: number, transactionHash: string, confirmations?: number): Promise<boolean>;
|
|
37
|
+
getFeeStructure(chainId: number, feeTokenAddress: string | undefined, erc20Addresses: string[], externalActionId: ExternalActionId, calls?: CallInfo[], variableRate?: bigint, solanaTransactionParams?: SolanaTransactionParams): Promise<FeeStructure>;
|
|
38
|
+
getEvmSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<EvmSwapPrices>;
|
|
39
|
+
getSolanaSwapPrices(chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string): Promise<SolanaSwapPrices>;
|
|
34
40
|
getSolanaPublicKey(): PublicKey;
|
|
35
41
|
getEthereumAddress(): Promise<string>;
|
|
36
42
|
getEthereumAddressByChain(chainId: number): Promise<string>;
|
|
@@ -51,6 +57,7 @@ export interface IHinkal<ConnectorType = unknown> {
|
|
|
51
57
|
withdraw(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], recipientAddress: string, isRelayerOff: boolean, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<ethers.TransactionResponse | string>;
|
|
52
58
|
withdrawStuckUtxos(chainId: number, erc20Address: string, recipientAddress: string): Promise<string[]>;
|
|
53
59
|
swap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
60
|
+
emporiumOp: (contract: ethers.Contract | string, func?: string, args?: unknown[], callDataString?: string, invokeWallet?: boolean, value?: bigint) => string;
|
|
54
61
|
actionPrivateWallet(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], onChainCreation: boolean[], ops: string[], emporiumTokenChanges: TokenChanges<bigint>[], subAccount?: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
55
62
|
proxySwap(chainId: number, erc20Addresses: string[], deltaAmounts: bigint[], externalActionId: ExternalActionId, swapData: string, isTheSameChainSwap: boolean, subAccount: SubAccount, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
|
56
63
|
proxyToPrivate(chainId: number, erc20Addresses: string[], deltaAmountsBase: bigint[], subAccount: SubAccount, recipientInfo: string, feeToken?: string, feeStructureOverride?: FeeStructure): Promise<string>;
|
package/types/index.d.ts
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type UniswapSwapPrice = {
|
|
2
|
+
tokenPrice: bigint;
|
|
3
|
+
poolFee: string;
|
|
4
|
+
};
|
|
5
|
+
type OdosSwapPrice = {
|
|
6
|
+
outSwapAmountValue: bigint;
|
|
7
|
+
odosDataValue: string;
|
|
8
|
+
};
|
|
9
|
+
type OneInchSwapPrice = {
|
|
10
|
+
outSwapAmountValue: bigint;
|
|
11
|
+
oneInchDataValue: string;
|
|
12
|
+
};
|
|
13
|
+
type OkxSwapPrice = {
|
|
14
|
+
outSwapAmountValue: bigint;
|
|
15
|
+
okxDataValue: string;
|
|
16
|
+
};
|
|
17
|
+
export type EvmSwapPrices = {
|
|
18
|
+
uniswap: UniswapSwapPrice | null;
|
|
19
|
+
odos: OdosSwapPrice | null;
|
|
20
|
+
oneInch: OneInchSwapPrice | null;
|
|
21
|
+
};
|
|
22
|
+
export type SolanaSwapPrices = {
|
|
23
|
+
okx: OkxSwapPrice | null;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
package/functions/index.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),require(`../libs/shared/common/src/crypto/preProcessing.cjs`),require(`./utils/refreshBalance.cjs`),require(`./utils/index.cjs`),require(`./integrations/swapApi.cjs`),require(`./integrations/index.cjs`);
|
package/functions/index.d.ts
DELETED
package/functions/index.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import "../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
|
|
2
|
-
import "../libs/shared/common/src/crypto/preProcessing.mjs";
|
|
3
|
-
import "./utils/refreshBalance.mjs";
|
|
4
|
-
import "./utils/index.mjs";
|
|
5
|
-
import "./integrations/swapApi.mjs";
|
|
6
|
-
import "./integrations/index.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./swapApi.cjs`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './swapApi';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "./swapApi.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`../../libs/shared/common/src/functions/utils/erc20tokenFunctions.cjs`),t=require(`../../libs/shared/common/src/functions/utils/process.utils.cjs`),n=require(`../../libs/shared/common/src/functions/web3/uniswapAPI.cjs`),r=require(`../../libs/shared/common/src/functions/web3/odosAPI.cjs`),i=require(`../../libs/shared/common/src/functions/web3/oneInchAPI.cjs`),a=require(`../../libs/shared/common/src/functions/web3/okxAPI.cjs`);require(`../../libs/shared/common/src/functions/index.cjs`);var o=async(t,r,i,a,o)=>{let s=t.hinkalCommon,[c,l]=await e.resolveErc20Tokens(r,[a,o]);return n.getUniswapPrice(s,r,i,c,l)},s=async(n,a,s,c,l)=>{let[u,d]=await e.resolveErc20Tokens(a,[c,l]),[f,p,m]=await Promise.allSettled([t.withTimeout(o(n,a,s,c,l)),t.withTimeout(r.getOdosPrice(a,u,d,s)),t.withTimeout(i.getOneInchPrice(a,u,d,s))]);return{uniswap:f.status===`fulfilled`?f.value:null,odos:p.status===`fulfilled`?p.value:null,oneInch:m.status===`fulfilled`?m.value:null}},c=async(n,r,i,o)=>{let[s,c]=await e.resolveErc20Tokens(n,[i,o]);try{return{okx:await t.withTimeout(a.getOKXPrice(n,s,c,r))}}catch{return{okx:null}}};exports.getEvmSwapPrices=s,exports.getSolanaSwapPrices=c;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { IHinkal } from '../../types';
|
|
2
|
-
export declare const getEvmSwapPrices: (hinkal: IHinkal, chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<{
|
|
3
|
-
uniswap: {
|
|
4
|
-
tokenPrice: bigint;
|
|
5
|
-
poolFee: string;
|
|
6
|
-
} | null;
|
|
7
|
-
odos: {
|
|
8
|
-
outSwapAmountValue: bigint;
|
|
9
|
-
odosDataValue: string;
|
|
10
|
-
} | null;
|
|
11
|
-
oneInch: {
|
|
12
|
-
outSwapAmountValue: bigint;
|
|
13
|
-
oneInchDataValue: string;
|
|
14
|
-
} | null;
|
|
15
|
-
}>;
|
|
16
|
-
export declare const getSolanaSwapPrices: (chainId: number, inSwapAmount: string, inSwapTokenAddress: string, outSwapTokenAddress: string) => Promise<{
|
|
17
|
-
okx: {
|
|
18
|
-
outSwapAmountValue: bigint;
|
|
19
|
-
okxDataValue: string;
|
|
20
|
-
};
|
|
21
|
-
} | {
|
|
22
|
-
okx: null;
|
|
23
|
-
}>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { resolveErc20Tokens as e } from "../../libs/shared/common/src/functions/utils/erc20tokenFunctions.mjs";
|
|
2
|
-
import { withTimeout as t } from "../../libs/shared/common/src/functions/utils/process.utils.mjs";
|
|
3
|
-
import { getUniswapPrice as n } from "../../libs/shared/common/src/functions/web3/uniswapAPI.mjs";
|
|
4
|
-
import { getOdosPrice as r } from "../../libs/shared/common/src/functions/web3/odosAPI.mjs";
|
|
5
|
-
import { getOneInchPrice as i } from "../../libs/shared/common/src/functions/web3/oneInchAPI.mjs";
|
|
6
|
-
import { getOKXPrice as a } from "../../libs/shared/common/src/functions/web3/okxAPI.mjs";
|
|
7
|
-
import "../../libs/shared/common/src/functions/index.mjs";
|
|
8
|
-
//#region libs/shared/sdk/src/functions/integrations/swapApi.ts
|
|
9
|
-
var o = async (t, r, i, a, o) => {
|
|
10
|
-
let s = t.hinkalCommon, [c, l] = await e(r, [a, o]);
|
|
11
|
-
return n(s, r, i, c, l);
|
|
12
|
-
}, s = async (n, a, s, c, l) => {
|
|
13
|
-
let [u, d] = await e(a, [c, l]), [f, p, m] = await Promise.allSettled([
|
|
14
|
-
t(o(n, a, s, c, l)),
|
|
15
|
-
t(r(a, u, d, s)),
|
|
16
|
-
t(i(a, u, d, s))
|
|
17
|
-
]);
|
|
18
|
-
return {
|
|
19
|
-
uniswap: f.status === "fulfilled" ? f.value : null,
|
|
20
|
-
odos: p.status === "fulfilled" ? p.value : null,
|
|
21
|
-
oneInch: m.status === "fulfilled" ? m.value : null
|
|
22
|
-
};
|
|
23
|
-
}, c = async (n, r, i, o) => {
|
|
24
|
-
let [s, c] = await e(n, [i, o]);
|
|
25
|
-
try {
|
|
26
|
-
return { okx: await t(a(n, s, c, r)) };
|
|
27
|
-
} catch {
|
|
28
|
-
return { okx: null };
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
//#endregion
|
|
32
|
-
export { s as getEvmSwapPrices, c as getSolanaSwapPrices };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { getFeeStructure } from '../../common/src/functions/pre-transaction/getFeeStructure';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`../../libs/shared/common/src/functions/pre-transaction/getFeeStructure.cjs`),require(`../../libs/shared/common/src/crypto/preProcessing.cjs`),require(`./getFeeStructure.cjs`),require(`./refreshBalance.cjs`),require(`./preProcessing.cjs`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`../../libs/shared/common/src/crypto/preProcessing.cjs`);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { preProcessing } from '../../common/src/crypto/preProcessing';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "../../libs/shared/common/src/crypto/preProcessing.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`../../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.cjs`);var t=t=>{e.balanceChangedHandler.dispatch(t)};exports.refreshBalance=t;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { balanceChangedHandler as e } from "../../libs/shared/common/src/data-structures/private-balances/BalanceChangedHandler.mjs";
|
|
2
|
-
//#region libs/shared/sdk/src/functions/utils/refreshBalance.ts
|
|
3
|
-
var t = (t) => {
|
|
4
|
-
e.dispatch(t);
|
|
5
|
-
};
|
|
6
|
-
//#endregion
|
|
7
|
-
export { t as refreshBalance };
|