UNPKG

@hiero-ledger/sdk

Version:
181 lines (163 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _Key = _interopRequireDefault(require("./Key.cjs")); var _Cache = _interopRequireDefault(require("./Cache.cjs")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // SPDX-License-Identifier: Apache-2.0 /** * @namespace proto * @typedef {import("@hashgraph/proto").proto.IKey} HieroProto.proto.IKey * @typedef {import("@hashgraph/proto").proto.IKeyList} HieroProto.proto.IKeyList * @typedef {import("@hashgraph/proto").proto.IThresholdKey} HieroProto.proto.IThresholdKey */ /** * A list of Keys (`Key`) with an optional threshold. */ class KeyList extends _Key.default { /** * @param {?Key[]} [keys] * @param {?number} [threshold] */ constructor(keys, threshold) { super(); /** * @private * @type {Key[]} */ // @ts-ignore if (keys == null) this._keys = []; //checks if the value for `keys` is passed as a single key //rather than a list that contains just one key else if (keys instanceof _Key.default) this._keys = [keys];else this._keys = keys; /** * @type {?number} */ this._threshold = threshold == null ? null : threshold; } /** * @param {Key[]} keys * @returns {KeyList} */ static of(...keys) { return new KeyList(keys, null); } /** * @template T * @param {ArrayLike<Key>} arrayLike * @param {((key: Key) => Key)} [mapFn] * @param {T} [thisArg] * @returns {KeyList} */ static from(arrayLike, mapFn, thisArg) { if (mapFn == null) { return new KeyList(Array.from(arrayLike)); } return new KeyList(Array.from(arrayLike, mapFn, thisArg)); } /** * @returns {?number} */ get threshold() { return this._threshold; } /** * @param {number} threshold * @returns {this} */ setThreshold(threshold) { this._threshold = threshold; return this; } /** * @param {Key[]} keys * @returns {number} */ push(...keys) { return this._keys.push(...keys); } /** * @param {number} start * @param {number} deleteCount * @param {Key[]} items * @returns {KeyList} */ splice(start, deleteCount, ...items) { return new KeyList(this._keys.splice(start, deleteCount, ...items), this.threshold); } /** * @param {number=} start * @param {number=} end * @returns {KeyList} */ slice(start, end) { return new KeyList(this._keys.slice(start, end), this.threshold); } /** * @returns {Iterator<Key>} */ [Symbol.iterator]() { return this._keys[Symbol.iterator](); } /** * @returns {Key[]} */ toArray() { // eslint-disable-next-line @typescript-eslint/no-unsafe-return return this._keys.slice(); } /** * @returns {string} */ toString() { return JSON.stringify({ threshold: this._threshold, keys: this._keys.toString() }); } /** * @returns {HieroProto.proto.IKey} */ _toProtobufKey() { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return const keys = this._keys.map(key => key._toProtobufKey()); if (this.threshold == null) { return { keyList: { keys } }; } else { return { thresholdKey: { threshold: this.threshold, keys: { keys } } }; } } /** * @param {HieroProto.proto.IKeyList} key * @returns {KeyList} */ static __fromProtobufKeyList(key) { const keys = (key.keys != null ? key.keys : []).map(key => _Key.default._fromProtobufKey(key)); return new KeyList(keys); } /** * @param {HieroProto.proto.IThresholdKey} key * @returns {KeyList} */ static __fromProtobufThresoldKey(key) { const list = KeyList.__fromProtobufKeyList(key.keys != null ? key.keys : {}); list.setThreshold(key.threshold != null ? key.threshold : 0); return list; } } exports.default = KeyList; _Cache.default.setKeyList(key => KeyList.__fromProtobufKeyList(key)); _Cache.default.setThresholdKey(key => KeyList.__fromProtobufThresoldKey(key));