1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00
squid-js/src/keeper/market.ts
2018-09-25 09:14:01 +02:00

62 lines
2.1 KiB
TypeScript

import BigNumber from "bignumber.js";
import Config from "../utils/config";
import Logger from "../utils/logger";
import Web3Helper from "../utils/Web3Helper";
import ContractLoader from "./contractLoader";
import KeeperBase from "./keeper-base";
export default class OceanMarket extends KeeperBase {
public static async getInstance(config: Config, web3Helper: Web3Helper) {
const market = new OceanMarket(config, web3Helper);
market.contract = await ContractLoader.load("OceanMarket", market.web3Helper);
return market;
}
private constructor(config: Config, web3Helper: Web3Helper) {
super(config, web3Helper);
}
// call functions (costs no gas)
public checkAsset(assetId: string) {
return this.contract.checkAsset(assetId);
}
public verifyOrderPayment(orderId: string): boolean {
return this.contract.verifyPaymentReceived(orderId);
}
public getAssetPrice(assetId: string) {
return this.contract.getAssetPrice(assetId)
.then((price: BigNumber) => price.toNumber());
}
// Transactions with gas cost
public requestTokens(amount: number, address: string) {
return this.contract.requestTokens(amount, {from: address});
}
public async registerAsset(name: string, description: string, price: number, publisherAddress: string) {
const assetId = await this.contract.generateId(name + description);
const result = await this.contract.register(
assetId,
price, {
from: publisherAddress,
gas: this.config.defaultGas,
},
);
Logger.log("registered: ", result);
return assetId;
}
public async payAsset(assetId: string, order: any, publisherAddress: string, senderAddress: string) {
const assetPrice = await this.contract.getAssetPrice(assetId)
.then((price: BigNumber) => price.toNumber());
this.contract.sendPayment(order.id, publisherAddress, assetPrice, order.timeout, {
from: senderAddress,
gas: 2000000,
});
}
}