UNPKG

koinos-rpc

Version:

Typescript library to communicate with Koinos API via RPC

116 lines 8.85 kB
"use strict"; 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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