UNPKG

@syncswap/sdk

Version:

SyncSwap TypeScript SDK for building DeFi applications

75 lines 3.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const caseInsensitiveMap_1 = require("../utils/caseInsensitiveMap"); const contractLoader_1 = __importDefault(require("./contractLoader")); const statestore_1 = require("../statestore/statestore"); class ContractRegistry { static resetContracts() { //console.log('[ContractRegistry] reset contracts'); this.contractByAddress = caseInsensitiveMap_1.CaseInsensitiveMap.create(); this.contractByName = caseInsensitiveMap_1.CaseInsensitiveMap.create(); this.addressByName = caseInsensitiveMap_1.CaseInsensitiveMap.create(); } static async register(network, type, name, address) { //console.log(`[ContractRegistry] Register contract ${name} to type ${type.name}.`); address = address.toLowerCase(); if (this.contractByAddress.has(address)) { //console.warn('[ContractRegistry] Found duplicate contract', type, name, address); return; } this.addressByName.set(name, address); this.addressByName.set(name.toLowerCase(), address); const contract = await contractLoader_1.default.loadContract(type, address); this.contractByAddress.set(address, { network: network, contract: contract, }); this.contractByName.set(name, { network: network, contract: contract, }); this.contractByName.set(name.toLowerCase(), { network: network, contract: contract, }); this.contractByName.set(type.name, { network: network, contract: contract, }); } static getAddressByName(name) { const address = this.addressByName.get(name.toLowerCase()); //if (!address) { // throw Error(`Contract ${name} not exists on getting address by name.`); //} // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return address; } static getContractByName(name) { const contract = this.contractByName.get(name.toLowerCase()); if (!contract || !(0, statestore_1.stateStore)().providerOrSigner) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion return undefined; //throw Error(`Contract ${name} not exists on getting contract by name.`); } return contract.contract.connect((0, statestore_1.stateStore)().providerOrSigner); } static hasContract(name) { return this.contractByName.get(name) !== undefined; } static getContractByAddress(signerOrProvider, address) { const contract = this.contractByAddress.get(address); if (!contract) { throw Error(`Contract ${address} not exists on getting contract by address.`); } return contract.contract.connect(signerOrProvider); } } ContractRegistry.contractByAddress = caseInsensitiveMap_1.CaseInsensitiveMap.create(); ContractRegistry.contractByName = caseInsensitiveMap_1.CaseInsensitiveMap.create(); ContractRegistry.addressByName = caseInsensitiveMap_1.CaseInsensitiveMap.create(); exports.default = ContractRegistry; //# sourceMappingURL=contractRegistry.js.map