UNPKG

raiden-ts

Version:

Raiden Light Client Typescript/Javascript SDK

136 lines 5.97 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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServicesValidityMap = exports.SuggestedPartners = exports.SuggestedPartner = exports.LastIOUResults = exports.IOU = exports.PFS = exports.PfsError = exports.PfsResult = exports.InputPaths = exports.Paths = exports.Fee = exports.RoutesExtra = exports.AddressMetadataMap = exports.AddressMetadata = exports.Path = exports.PfsModeC = exports.PfsMode = exports.ServiceDeviceId = exports.ServiceC = exports.Service = void 0; const Either_1 = require("fp-ts/lib/Either"); const t = __importStar(require("io-ts")); const invert_1 = __importDefault(require("lodash/invert")); const types_1 = require("../utils/types"); // it's like an enum, but with literals exports.Service = { PFS: 'path_finding', MS: 'monitoring', }; exports.ServiceC = t.keyof((0, invert_1.default)(exports.Service)); exports.ServiceDeviceId = { [exports.Service.PFS]: 'PATH_FINDING', [exports.Service.MS]: 'MONITORING', }; exports.PfsMode = { disabled: 'disabled', auto: 'auto', onlyAdditional: 'onlyAdditional', }; exports.PfsModeC = t.keyof((0, invert_1.default)(exports.PfsMode)); exports.Path = t.readonlyArray(types_1.Address); const _AddressMetadata = t.readonly(t.type({ user_id: t.string, displayname: t.string, capabilities: t.string, })); /** metadata/presence information of an address */ exports.AddressMetadata = _AddressMetadata; const _AddressMetadataMap = t.readonly(t.record(t.string, exports.AddressMetadata)); const addressMetadataMapPredicate = (u) => t.array(types_1.Address).is(Object.keys(u)); /** an address_metadata map which decodes to checksummed addresses as keys */ exports.AddressMetadataMap = new t.RefinementType('AddressMetadataMap', (u) => _AddressMetadataMap.is(u) && addressMetadataMapPredicate(u), (i, c) => { const e = _AddressMetadataMap.validate(i, c); if ((0, Either_1.isLeft)(e)) return e; const a = e.right; const res = {}; // for each key of address_metadata's record, validate/decode it as Address for (const [addr, meta] of Object.entries(a)) { const ev = types_1.Address.validate(addr, c); if ((0, Either_1.isLeft)(ev)) return ev; res[ev.right] = meta; } return t.success(res); }, _AddressMetadataMap.encode, _AddressMetadataMap, addressMetadataMapPredicate); exports.RoutesExtra = t.partial({ address_metadata: exports.AddressMetadataMap }); exports.Fee = (0, types_1.Int)(32); /** Codec for raiden-ts internal representation of a PFS result/routes */ exports.Paths = t.readonlyArray(t.readonly(t.intersection([t.type({ path: exports.Path, fee: exports.Fee }), exports.RoutesExtra]))); /** * A broader codec representing paths received as input: * - paths array can come on a `route` or `path` member * - `fee` represents the final fee to be used, `estimated_fee` is what comes from PFS and can be * increased of fee margins * - rest is kept (currently, `address_metadata` map) * Paths is a specific subset of InputPaths */ exports.InputPaths = t.readonlyArray(t.readonly(t.intersection([ t.union([t.type({ route: exports.Path }), t.type({ path: exports.Path })]), t.union([t.type({ fee: exports.Fee }), t.type({ estimated_fee: exports.Fee })]), exports.RoutesExtra, ]))); /** Codec for result from PFS path request */ exports.PfsResult = t.readonly(t.type({ result: exports.InputPaths })); /** Codec for PFS API returned error */ exports.PfsError = t.readonly(t.intersection([ t.type({ error_code: t.number, errors: t.string, }), t.partial({ error_details: t.record(t.string, t.unknown) }), ])); /** * A PFS server/service instance info */ exports.PFS = t.readonly(t.type({ address: types_1.Address, url: t.string, matrixServer: t.string, rtt: t.number, price: (0, types_1.UInt)(32), token: types_1.Address, validTill: t.number, })); /** * An IOU used to pay the services */ exports.IOU = t.readonly(t.type({ sender: types_1.Address, receiver: types_1.Address, amount: (0, types_1.UInt)(32), claimable_until: (0, types_1.UInt)(32), one_to_n_address: types_1.Address, chain_id: (0, types_1.UInt)(32), })); exports.LastIOUResults = t.readonly(t.type({ last_iou: (0, types_1.Signed)(exports.IOU) })); exports.SuggestedPartner = t.readonly(t.type({ address: types_1.Address, capacity: (0, types_1.UInt)(32), centrality: t.union([t.number, t.string]), score: t.union([t.number, t.string]), uptime: t.union([t.number, t.string]), }), 'SuggestedPartner'); exports.SuggestedPartners = t.array(exports.SuggestedPartner, 'SuggestedPartners'); exports.ServicesValidityMap = t.readonly(t.record(t.string, t.number), 'ServicesValidityMap'); //# sourceMappingURL=types.js.map