ufomarketplace-sdk
Version:
SDK to interact with set ufo marketplace contracts
176 lines • 8.9 kB
JavaScript
"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