UNPKG

rubic-sdk

Version:
134 lines 6.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SDK = void 0; const teleswap_sdk_1 = require("@teleportdao/teleswap-sdk"); const chain_type_1 = require("../blockchain/models/chain-type"); const web3_private_service_1 = require("../blockchain/web3-private-service/web3-private-service"); const web3_public_service_1 = require("../blockchain/web3-public-service/web3-public-service"); const tron_web3_pure_1 = require("../blockchain/web3-pure/typed-web3-pure/tron-web3-pure/tron-web3-pure"); const default_http_client_1 = require("../http-client/default-http-client"); const injector_1 = require("../injector/injector"); const cross_chain_manager_1 = require("../../features/cross-chain/calculation-manager/cross-chain-manager"); const teleswap_network_tickers_1 = require("../../features/cross-chain/calculation-manager/providers/teleswap-provider/constants/teleswap-network-tickers"); const teleswap_ref_code_1 = require("../../features/cross-chain/calculation-manager/providers/teleswap-provider/constants/teleswap-ref-code"); const cross_chain_status_manager_1 = require("../../features/cross-chain/status-manager/cross-chain-status-manager"); const cross_chain_symbiosis_manager_1 = require("../../features/cross-chain/symbiosis-manager/cross-chain-symbiosis-manager"); const deflation_token_manager_1 = require("../../features/deflation-token-manager/deflation-token-manager"); const on_chain_manager_1 = require("../../features/on-chain/calculation-manager/on-chain-manager"); const on_chain_status_manager_1 = require("../../features/on-chain/status-manager/on-chain-status-manager"); const web3_1 = __importDefault(require("web3")); const blockchain_name_1 = require("../blockchain/models/blockchain-name"); /** * Base class to work with sdk. */ class SDK { /** * Can be used to get `Web3Public` instance by blockchain name to get public information from blockchain. */ get web3PublicService() { return injector_1.Injector.web3PublicService; } /** * Can be used to send transactions and execute smart contracts methods. */ get web3PrivateService() { return injector_1.Injector.web3PrivateService; } /** * Use it to get gas price information. */ get gasPriceApi() { return injector_1.Injector.gasPriceApi; } /** * Use it to get coingecko price information. */ get coingeckoApi() { return injector_1.Injector.coingeckoApi; } /** * Creates new sdk instance. Changes dependencies of all sdk entities according * to new configuration (even for entities created with other previous sdk instances). */ static async createSDK(configuration) { const [web3PublicService, web3PrivateService, httpClient, teleswapSdk] = await Promise.all([ SDK.createWeb3PublicService(configuration), SDK.createWeb3PrivateService(configuration), SDK.createHttpClient(configuration), SDK.createTeleSwapSdkInstance(configuration) ]); injector_1.Injector.createInjector(web3PublicService, web3PrivateService, httpClient, teleswapSdk); const { providerAddress } = configuration; return new SDK({ [chain_type_1.CHAIN_TYPE.EVM]: providerAddress?.[chain_type_1.CHAIN_TYPE.EVM] || undefined, [chain_type_1.CHAIN_TYPE.TRON]: providerAddress?.[chain_type_1.CHAIN_TYPE.TRON] || { crossChain: tron_web3_pure_1.TronWeb3Pure.EMPTY_ADDRESS, onChain: tron_web3_pure_1.TronWeb3Pure.EMPTY_ADDRESS } }); } static createWeb3PrivateService(configuration) { return new web3_private_service_1.Web3PrivateService(configuration.walletProvider || {}); } static createWeb3PublicService(configuration) { return new web3_public_service_1.Web3PublicService(configuration.rpcProviders); } static async createHttpClient(configuration) { if (!configuration.httpClient) { return default_http_client_1.DefaultHttpClient.getInstance(); } return configuration.httpClient; } static async createTeleSwapSdkInstance(configuration) { const teleSwapSdk = new teleswap_sdk_1.TeleswapSDK(); const rpcUrl = configuration.rpcProviders[blockchain_name_1.BLOCKCHAIN_NAME.POLYGON]?.rpcList[0]; try { //Optional step, may remove teleSwapSdk.setDefaultNetwork({ networkName: teleswap_network_tickers_1.teleSwapNetworkTickers[blockchain_name_1.BLOCKCHAIN_NAME.POLYGON], web3: { url: rpcUrl }, web3Eth: new web3_1.default(rpcUrl).eth }); await teleSwapSdk.initNetworksConnection(); } catch { } teleSwapSdk.setThirdPartyId(teleswap_ref_code_1.TELESWAP_REF_CODE); return teleSwapSdk; } constructor(providerAddress) { this.onChainManager = new on_chain_manager_1.OnChainManager(providerAddress); this.crossChainManager = new cross_chain_manager_1.CrossChainManager(providerAddress); this.deflationTokenManager = new deflation_token_manager_1.DeflationTokenManager(); this.onChainStatusManager = new on_chain_status_manager_1.OnChainStatusManager(); this.crossChainStatusManager = new cross_chain_status_manager_1.CrossChainStatusManager(); this.crossChainSymbiosisManager = new cross_chain_symbiosis_manager_1.CrossChainSymbiosisManager(); } /** * Updates sdk configuration and sdk entities dependencies. */ async updateConfiguration(configuration) { const [web3PublicService, web3PrivateService, httpClient, teleSwapSdk] = await Promise.all([ SDK.createWeb3PublicService(configuration), SDK.createWeb3PrivateService(configuration), SDK.createHttpClient(configuration), SDK.createTeleSwapSdkInstance(configuration) ]); injector_1.Injector.createInjector(web3PublicService, web3PrivateService, httpClient, teleSwapSdk); } updateWalletProvider(walletProvider) { injector_1.Injector.web3PrivateService.updateWeb3PrivateStorage(walletProvider); } updateWalletProviderCore(chainType, walletProviderCore) { injector_1.Injector.web3PrivateService.updateWeb3Private(chainType, walletProviderCore); } updateWalletAddress(chainType, address) { injector_1.Injector.web3PrivateService.updateWeb3PrivateAddress(chainType, address); } } exports.SDK = SDK; //# sourceMappingURL=sdk.js.map