web3-plugin-superfluid
Version:
Superfluid Web3.js Plugin
118 lines (117 loc) • 4.8 kB
JavaScript
;
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;