koinos-rpc
Version:
Typescript library to communicate with Koinos API via RPC
116 lines • 8.85 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Token = void 0;
const protobufjs_1 = require("protobufjs");
const bs58 = __importStar(require("bs58"));
const base64url_1 = __importDefault(require("base64url"));
const proto_1 = require("./proto");
const entryPoints = {
balance: 0x5c721497,
precision: 0xee80fd2f,
symbol: 0xb76a7ca1
};
const root = protobufjs_1.Root.fromJSON(proto_1.tokenProto);
class Token {
constructor(client, contractId, precision, symbol) {
this.client = client;
this.contractId = contractId;
this.precision = precision;
this.symbol = symbol;
}
static create(client, contractId) {
return __awaiter(this, void 0, void 0, function* () {
const precision = yield Token.getPrecision(client, contractId);
const symbol = yield Token.getSymbol(client, contractId);
return new Token(client, contractId, precision, symbol);
});
}
static encodeArgs(args, argumentType) {
const type = root.lookupType(argumentType);
const message = type.create(args);
const buffer = Buffer.from(type.encode(message).finish());
return base64url_1.default.encode(buffer);
}
static call(client, contractId, entry_point, argument_type, result_tyoe, args) {
return __awaiter(this, void 0, void 0, function* () {
const { result } = yield client.call('chain', 'read_contract', {
args: Token.encodeArgs(args, argument_type),
contract_id: contractId,
entry_point
});
const buffer = base64url_1.default.toBuffer(result);
const decoded = root.lookupType(result_tyoe).decode(buffer).toJSON();
return decoded.value;
});
}
static getPrecision(client, contractId) {
return __awaiter(this, void 0, void 0, function* () {
return Token.call(client, contractId, entryPoints.precision, 'koinos.contracts.token.decimals_arguments', 'koinos.contracts.token.decimals_result', {});
});
}
static getSymbol(client, contractId) {
return __awaiter(this, void 0, void 0, function* () {
return Token.call(client, contractId, entryPoints.symbol, 'koinos.contracts.token.symbol_arguments', 'koinos.contracts.token.symbol_result', {});
});
}
static getBalance(client, contractId, address) {
return __awaiter(this, void 0, void 0, function* () {
return Token.call(client, contractId, entryPoints.balance, 'koinos.contracts.token.balance_of_arguments', 'koinos.contracts.token.balance_of_result', {
owner: bs58.decode(address)
});
});
}
getPrecision() {
return __awaiter(this, void 0, void 0, function* () {
return Token.getPrecision(this.client, this.contractId);
});
}
getSymbol() {
return __awaiter(this, void 0, void 0, function* () {
return Token.getSymbol(this.client, this.contractId);
});
}
getBalance(address, raw = false) {
return __awaiter(this, void 0, void 0, function* () {
const balance = yield Token.getBalance(this.client, this.contractId, address);
return raw ? balance : `${Number(balance) / 10 ** this.precision} ${this.symbol}`;
});
}
}
exports.Token = Token;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJoZWxwZXJzL3Rva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlDO0FBQ3pDLDJDQUE2QjtBQUM3QiwwREFBa0M7QUFFbEMsbUNBQXFDO0FBTXJDLE1BQU0sV0FBVyxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLE1BQU0sRUFBRSxVQUFVO0NBQ3BCLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxpQkFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBVSxDQUFDLENBQUM7QUFFdkMsTUFBYSxLQUFLO0lBQ2YsWUFBNkIsTUFBYyxFQUFtQixVQUFrQixFQUFtQixTQUFpQixFQUFtQixNQUFjO1FBQXhILFdBQU0sR0FBTixNQUFNLENBQVE7UUFBbUIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFtQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQW1CLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRXpKLE1BQU0sQ0FBTyxNQUFNLENBQUMsTUFBYyxFQUFFLFVBQWtCOztZQUNuRCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDekQsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxDQUFDO0tBQUE7SUFFTyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQXlCLEVBQUUsWUFBb0I7UUFDdEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztR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