UNPKG

ufomarketplace-sdk

Version:

SDK to interact with set ufo marketplace contracts

176 lines 8.9 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ufoMarketplaceSDK = void 0; const ethers_1 = require("ethers"); const wrapper_1 = require("./wrapper"); const bignumber_js_1 = require("bignumber.js"); const constants_1 = require("./constants/constants"); const exponent = new bignumber_js_1.BigNumber('10').pow(18); const MAX_INT = ethers_1.BigNumber.from('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'); class ufoMarketplaceSDK { constructor(_signer, _config, _netID) { this.signer = _signer; this.config = _config; this.galaticFactory = new wrapper_1.SuperGalaticFactory__factory(_signer).attach(_config.ufoSuperGalaticFactory); switch (_netID) { case constants_1.NETWORK_ID.ETHEREUM: case constants_1.NETWORK_ID.GOERLI: if (_config.ufoConfig.plasmaTokenOnEth != null && _config.ufoConfig.plasmaTokenOnEth != undefined) { this.plasma = new wrapper_1.ERC20Upgradeable__factory(this.signer).attach(_config.ufoConfig.plasmaTokenOnEth); } this.wETHToken = new wrapper_1.ERC20__factory(this.signer).attach(_config.ufoConfig.WETHOnEth); break; case constants_1.NETWORK_ID.MUMBAI: case constants_1.NETWORK_ID.POLYGON: if (_config.ufoConfig.plasmaTokenOnMatic != null && _config.ufoConfig.plasmaTokenOnMatic != undefined) { this.plasma = new wrapper_1.ERC20Upgradeable__factory(this.signer).attach(_config.ufoConfig.plasmaTokenOnMatic); } this.wETHToken = new wrapper_1.ERC20__factory(this.signer).attach(_config.ufoConfig.WETHOnMatic); break; } } nftHasApprovalToMarketplace(contractAddr, nftId) { return __awaiter(this, void 0, void 0, function* () { let nftContract = new wrapper_1.ERC721Upgradeable__factory(this.signer).attach(contractAddr); const _temp = new bignumber_js_1.BigNumber(nftId); if (_temp.isNegative()) { throw new Error(`${nftId} is a negative amount`); } return (yield nftContract.getApproved(nftId)) == this.config.ufoMarketplace; }); } approveNftToMarketplace(contractAddr, nftId) { return __awaiter(this, void 0, void 0, function* () { let nftContract = new wrapper_1.ERC721Upgradeable__factory(this.signer).attach(contractAddr); const _temp = new bignumber_js_1.BigNumber(nftId); if (_temp.isNegative()) { throw new Error(`${nftId} is a negative amount`); } return nftContract.approve(this.config.ufoMarketplace, nftId); }); } wETHAllowance(amount) { return __awaiter(this, void 0, void 0, function* () { const addr = yield this.signer.getAddress(); const allowance = yield this.wETHToken.allowance(addr, this.config.ufoMarketplace); const _temp = new bignumber_js_1.BigNumber(amount); return new bignumber_js_1.BigNumber(allowance.toString()).gt(_temp); }); } wETHBalance() { return __awaiter(this, void 0, void 0, function* () { const addr = yield this.signer.getAddress(); let balance = yield this.wETHToken.balanceOf(addr); const balStr = ethers_1.ethers.utils.formatEther(balance); return balStr; }); } mintGalaticNFT(categoryId) { return __awaiter(this, void 0, void 0, function* () { return this.galaticFactory.mintSuperGalatic(ethers_1.BigNumber.from(categoryId)); }); } plasmaAmountPerNFT() { return __awaiter(this, void 0, void 0, function* () { let plasmaAmount = yield this.galaticFactory.plasmaAmountPerNFT(); return new bignumber_js_1.BigNumber(plasmaAmount.toString()).div(exponent).toString(); }); } //wETH getWETHAllowanceOfNFTFactory() { return __awaiter(this, void 0, void 0, function* () { if (this.wETHToken == null || this.wETHToken == undefined) throw new Error('check the wETHToken contract of correct network'); let allowance = yield this.wETHToken.allowance(yield this.signer.getAddress(), this.galaticFactory.address); let ret = new bignumber_js_1.BigNumber(allowance.toString()).div(exponent).toString(); return ret; }); } getWETHAllowanceOfMarketplace() { return __awaiter(this, void 0, void 0, function* () { if (this.wETHToken == null || this.wETHToken == undefined) throw new Error('check the wETHToken contract of correct network'); let allowance = yield this.wETHToken.allowance(yield this.signer.getAddress(), this.config.ufoMarketplace); let ret = new bignumber_js_1.BigNumber(allowance.toString()).div(exponent).toString(); return ret; }); } approveWETHToMarketplace() { return __awaiter(this, void 0, void 0, function* () { return this.wETHToken.approve(this.config.ufoMarketplace, MAX_INT); }); } hasWETHApprovalOfMarketplace(amount) { return __awaiter(this, void 0, void 0, function* () { const _temp = new bignumber_js_1.BigNumber(amount); if (_temp.isNegative()) { throw new Error(`${amount} is a negative amount`); } let allowance = yield this.getWETHAllowanceOfMarketplace(); return new bignumber_js_1.BigNumber(allowance).gt(_temp); }); } //plasma function hasPlasmaApprovalOfNFTFactory(amount) { return __awaiter(this, void 0, void 0, function* () { const _temp = new bignumber_js_1.BigNumber(amount); if (_temp.isNegative()) { throw new Error(`${amount} is a negative amount`); } let allowance = yield this.getPlasmaAllowanceOfNFTFactory(); return new bignumber_js_1.BigNumber(allowance).gt(_temp); }); } approvePlasmaToNFTFactory() { return __awaiter(this, void 0, void 0, function* () { return this.plasma.approve(this.galaticFactory.address, MAX_INT); }); } approvePlasmaToMarketplace() { return __awaiter(this, void 0, void 0, function* () { return this.plasma.approve(this.galaticFactory.address, MAX_INT); }); } getPlasmaAllowanceOfNFTFactory() { return __awaiter(this, void 0, void 0, function* () { if (this.plasma == null || this.plasma == undefined) throw new Error('check the Plasma contract of correct network'); let allowance = yield this.plasma.allowance(yield this.signer.getAddress(), this.galaticFactory.address); let ret = new bignumber_js_1.BigNumber(allowance.toString()).div(exponent).toString(); return ret; }); } getNftAddresses() { return __awaiter(this, void 0, void 0, function* () { let res = []; for (let i = 0; i < 10; i++) { let addr = yield this.galaticFactory.nftContracts(i); res.push(addr); } return res; }); } buyNFT(v, r, s, data) { return __awaiter(this, void 0, void 0, function* () { const marketplaceContract = new wrapper_1.UfoMarketplace__factory(this.signer).attach(this.config.ufoMarketplace); return marketplaceContract.buySellItem(v, r, s, data); }); } claimUAP(v, r, s, data) { return __awaiter(this, void 0, void 0, function* () { const marketplaceContract = new wrapper_1.UfoMarketplace__factory(this.signer).attach(this.config.ufoMarketplace); return marketplaceContract.claimUAP(v, r, s, data); }); } } exports.ufoMarketplaceSDK = ufoMarketplaceSDK; //# sourceMappingURL=ufoMarketplaceSDK.js.map