UNPKG

web3-plugin-superfluid

Version:
118 lines (117 loc) 4.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SuperfluidPlugin = void 0; const web3_1 = require("web3"); const metadata_1 = __importDefault(require("@superfluid-finance/metadata")); const cfav1Forwarder_1 = __importDefault(require("./abis/cfav1Forwarder")); const host_1 = __importDefault(require("./abis/host")); const cfav1_1 = __importDefault(require("./abis/cfav1")); const idav1_1 = __importDefault(require("./abis/idav1")); class SuperfluidPlugin extends web3_1.Web3PluginBase { constructor() { super(...arguments); this.pluginNamespace = "superfluid"; } /** * This method creates Superfluid's CFAV1Forwarder Contract instance of connected chain * @param address - CFAV1Forwarder Contract Address of connected chain * @returns CFAV1Forwarder Contract instance * @throws Error if address is not a valid address * @example * ```ts * const web3 = new Web3("http://127.0.0.1:8545"); * web3.registerPlugin(new SuperfluidPlugin()); * const cfav1Forwarder = web3.superfluid.cfav1Forwarder(cfav1ForwarderAddress); * ``` */ cfav1Forwarder(address) { if (!web3_1.validator.isAddress(address)) throw new Error("Superfluid Plugin: Invalid CFA Forwarder Address"); const cfav1ForwarderContract = new web3_1.Contract(cfav1Forwarder_1.default, address); cfav1ForwarderContract.link(this); return cfav1ForwarderContract; } /** * This method creates Superfluid's CFAV1 Contract instance of connected chain * @param address - CFAV1 Contract Address of connected chain * @returns CFAV1 Contract instance * @throws Error if address is not a valid address * @example * ```ts * const web3 = new Web3("http://127.0.0.1:8545"); * web3.registerPlugin(new SuperfluidPlugin()); * const cfav1 = web3.superfluid.cfav1(cfav1Address); * ``` */ cfav1(address) { if (!web3_1.validator.isAddress(address)) throw new Error("Superfluid Plugin: Invalid CFA Address"); const cfav1Contract = new web3_1.Contract(cfav1_1.default, address); cfav1Contract.link(this); return cfav1Contract; } /** * This method creates Superfluid's IDAV1 Contract instance of connected chain * @param address - IDAV1 Contract Address of connected chain * @returns IDAV1 Contract instance * @throws Error if address is not a valid address * @example * ```ts * const web3 = new Web3("http://127.0.0.1:8545"); * web3.registerPlugin(new SuperfluidPlugin()); * const idav1 = web3.superfluid.idav1(idav1Address); * ``` */ idav1(address) { if (!web3_1.validator.isAddress(address)) throw new Error("Superfluid Plugin: Invalid IDA Address"); const idav1Contract = new web3_1.Contract(idav1_1.default, address); idav1Contract.link(this); return idav1Contract; } /** * This method creates Superfluid's Host Contract instance of connected chain * @param address - Host Contract Address of connected chain * @throws Error if address is not a valid address * @returns Host Contract instance * @example * ```ts * const web3 = new Web3("http://127.0.0.1:8545"); * web3.registerPlugin(new SuperfluidPlugin()); * const host = web3.superfluid.host(hostAddress); * ``` */ host(address) { if (!web3_1.validator.isAddress(address)) throw new Error("Superfluid Plugin: Invalid Host Address"); const hostContract = new web3_1.Contract(host_1.default, address); hostContract.link(this); return hostContract; } /** * This method returns Superfluid protocol contract addresses of given chainId * @param chainId - ChainId of the network to get contract addresses of * @throws Error if chainId is not supported * @returns Protocol contract addresses object * @example * ```ts * const web3 = new Web3("https://rpc-mumbai.maticvigil.com"); * web3.registerPlugin(new SuperfluidPlugin()); * const addresses = web3.superfluid.contractAddresses(80001); * ``` */ contractAddresses(chainId) { const networkMetadata = metadata_1.default.networks.find((network) => network.chainId === chainId); if (!networkMetadata) throw new Error("Superfluid Plugin: Unsupported ChainId"); return networkMetadata.contractsV1; } // example static method static example() { return "example"; } } exports.SuperfluidPlugin = SuperfluidPlugin;