UNPKG

rubic-sdk

Version:
105 lines 4.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Web3PrivateService = void 0; const errors_1 = require("../../../common/errors"); const chain_type_1 = require("../models/chain-type"); const blockchains_info_1 = require("../utils/blockchains-info/blockchains-info"); const web_private_supported_chain_type_1 = require("./models/web-private-supported-chain-type"); const bitcoin_web3_private_1 = require("./web3-private/bitcoin-web3-private/bitcoin-web3-private"); const empty_web3_private_1 = require("./web3-private/empty-web3-private"); const evm_web3_private_1 = require("./web3-private/evm-web3-private/evm-web3-private"); const solana_web3_private_1 = require("./web3-private/solana-web3-private/solana-web3-private"); const sui_web3_private_1 = require("./web3-private/sui-web3-private/sui-web3-private"); const tron_web3_private_1 = require("./web3-private/tron-web3-private/tron-web3-private"); const web3_1 = __importDefault(require("web3")); const ton_web3_private_1 = require("./web3-private/ton-web3-private/ton-web3-private"); class Web3PrivateService { static isSupportedChainType(chainType) { return web_private_supported_chain_type_1.web3PrivateSupportedChainTypes.some(supportedChainType => supportedChainType === chainType); } constructor(walletProvider) { this.createWeb3Private = { [chain_type_1.CHAIN_TYPE.EVM]: this.createEvmWeb3Private.bind(this), [chain_type_1.CHAIN_TYPE.TRON]: this.createTronWeb3Private.bind(this), [chain_type_1.CHAIN_TYPE.SOLANA]: this.createSolanaWeb3Private.bind(this), [chain_type_1.CHAIN_TYPE.TON]: this.createTonWeb3Private.bind(this), [chain_type_1.CHAIN_TYPE.BITCOIN]: this.createBitcoinWeb3Private.bind(this), [chain_type_1.CHAIN_TYPE.SUI]: this.createSuiWeb3Private.bind(this) }; this.web3PrivateStorage = this.createWeb3PrivateStorage(walletProvider); } getWeb3Private(chainType) { if (!Web3PrivateService.isSupportedChainType(chainType)) { throw new errors_1.RubicSdkError(`Chain type ${chainType} is not supported in web3 private`); } const web3Private = this.web3PrivateStorage[chainType]; if (!web3Private) { return new empty_web3_private_1.EmptyWeb3Private(); } return web3Private; } getWeb3PrivateByBlockchain(blockchain) { return this.getWeb3Private(blockchains_info_1.BlockchainsInfo.getChainType(blockchain)); } createWeb3PrivateStorage(walletProvider) { return web_private_supported_chain_type_1.web3PrivateSupportedChainTypes.reduce((acc, chainType) => { const walletProviderCore = walletProvider?.[chainType]; if (!walletProviderCore) { return acc; } const createWeb3 = this.createWeb3Private[chainType]; return { ...acc, [chainType]: createWeb3(walletProviderCore) }; }, {}); } createEvmWeb3Private(evmWalletProviderCore) { let { core } = evmWalletProviderCore; if (!(core instanceof web3_1.default)) { core = new web3_1.default(core); } const web3 = core; if (!web3) { throw new errors_1.RubicSdkError('Web3 is not initialized'); } const address = web3.utils.toChecksumAddress(evmWalletProviderCore.address); return new evm_web3_private_1.EvmWeb3Private({ core: web3, address }); } createTronWeb3Private(tronWalletProviderCore) { return new tron_web3_private_1.TronWeb3Private(tronWalletProviderCore); } updateWeb3PrivateAddress(chainType, address) { this.web3PrivateStorage[chainType]?.setAddress(address); } createSolanaWeb3Private(solanaWallet) { let { core } = solanaWallet; return new solana_web3_private_1.SolanaWeb3Private(core); } createSuiWeb3Private(solanaWallet) { return new sui_web3_private_1.SuiWeb3Private(solanaWallet); } createTonWeb3Private(tonProviderCore) { return new ton_web3_private_1.TonWeb3Private(tonProviderCore); } createBitcoinWeb3Private(providerCore) { return new bitcoin_web3_private_1.BitcoinWeb3Private(providerCore); } updateWeb3PrivateStorage(walletProvider) { this.web3PrivateStorage = this.createWeb3PrivateStorage(walletProvider); } updateWeb3Private(chainType, walletProviderCore) { this.web3PrivateStorage = { ...this.web3PrivateStorage, [chainType]: this.createWeb3Private[chainType](walletProviderCore) }; } } exports.Web3PrivateService = Web3PrivateService; //# sourceMappingURL=web3-private-service.js.map