UNPKG

@coolwallet/sol

Version:
89 lines (86 loc) 14.9 kB
"use strict"; var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.authorized = exports.SignatureLayout = void 0; exports.encodeData = encodeData; exports.rustString = exports.publicKey = exports.lockup = void 0; var BufferLayout = _interopRequireWildcard(require("@solana/buffer-layout")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } /** * Layout for a PublicKey type */ var publicKey = exports.publicKey = function publicKey() { var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'publicKey'; return BufferLayout.blob(32, property); }; /** * Layout for an Authorized object */ var authorized = exports.authorized = function authorized() { var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'authorized'; return BufferLayout.struct([publicKey('staker'), publicKey('withdrawer')], property); }; /** * Layout for a Lockup object */ var lockup = exports.lockup = function lockup() { var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'lockup'; return BufferLayout.struct([BufferLayout.ns64('unixTimestamp'), BufferLayout.ns64('epoch'), publicKey('custodian')], property); }; /** * Layout for a Rust String type */ var rustString = exports.rustString = function rustString() { var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'string'; var rsl = BufferLayout.struct([BufferLayout.u32('length'), // 4 BufferLayout.u32('lengthPadding'), // 4 BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars') // data length ], property); var _decode = rsl.decode.bind(rsl); var _encode = rsl.encode.bind(rsl); var rslShim = rsl; rslShim.decode = function (b, offset) { var data = _decode(b, offset); return data['chars'].toString(); }; rslShim.encode = function (str, b, offset) { var data = { chars: Buffer.from(str, 'utf8') }; return _encode(data, b, offset); }; rslShim.alloc = function (str) { return BufferLayout.u32().span + BufferLayout.u32().span + Buffer.from(str, 'utf8').length; }; return rslShim; }; function getAlloc(type, fields) { var alloc = 0; type.layout.fields.forEach(function (item) { if (item.span >= 0) { alloc += item.span; } else if (typeof item.alloc === 'function') { alloc += item.alloc(fields[item.property]); } }); return alloc; } function encodeData(layoutType, fields) { var allocLength = layoutType.layout.span >= 0 ? layoutType.layout.span : getAlloc(layoutType, fields); var data = Buffer.alloc(allocLength); var layoutFields = Object.assign({ instruction: layoutType.index }, fields); layoutType.layout.encode(layoutFields, data); return data; } var signature = exports.SignatureLayout = function signature() { var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'signature'; return BufferLayout.blob(64, property); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWZmZXJMYXlvdXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJwdWJsaWNLZXkiLCJleHBvcnRzIiwicHJvcGVydHkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJibG9iIiwiYXV0aG9yaXplZCIsInN0cnVjdCIsImxvY2t1cCIsIm5zNjQiLCJydXN0U3RyaW5nIiwicnNsIiwidTMyIiwib2Zmc2V0IiwiX2RlY29kZSIsImRlY29kZSIsImJpbmQiLCJfZW5jb2RlIiwiZW5jb2RlIiwicnNsU2hpbSIsImIiLCJkYXRhIiwidG9TdHJpbmciLCJzdHIiLCJjaGFycyIsIkJ1ZmZlciIsImZyb20iLCJhbGxvYyIsInNwYW4iLCJnZXRBbGxvYyIsInR5cGUiLCJmaWVsZHMiLCJsYXlvdXQiLCJmb3JFYWNoIiwiaXRlbSIsImVuY29kZURhdGEiLCJsYXlvdXRUeXBlIiwiYWxsb2NMZW5ndGgiLCJsYXlvdXRGaWVsZHMiLCJhc3NpZ24iLCJpbnN0cnVjdGlvbiIsImluZGV4Iiwic2lnbmF0dXJlIiwiU2lnbmF0dXJlTGF5b3V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbW1vbkxheW91dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBCdWZmZXJMYXlvdXQgZnJvbSAnQHNvbGFuYS9idWZmZXItbGF5b3V0JztcbmltcG9ydCB7IEluc3RydWN0aW9uSW5wdXREYXRhLCBJbnN0cnVjdGlvbkxheW91dFR5cGUgfSBmcm9tICcuL3Byb2dyYW1MYXlvdXQnO1xuXG4vKipcbiAqIExheW91dCBmb3IgYSBQdWJsaWNLZXkgdHlwZVxuICovXG5jb25zdCBwdWJsaWNLZXkgPSAocHJvcGVydHkgPSAncHVibGljS2V5JykgPT4ge1xuICByZXR1cm4gQnVmZmVyTGF5b3V0LmJsb2IoMzIsIHByb3BlcnR5KTtcbn07XG5cbi8qKlxuICogTGF5b3V0IGZvciBhbiBBdXRob3JpemVkIG9iamVjdFxuICovXG5jb25zdCBhdXRob3JpemVkID0gKHByb3BlcnR5ID0gJ2F1dGhvcml6ZWQnKSA9PiB7XG4gIHJldHVybiBCdWZmZXJMYXlvdXQuc3RydWN0PFxuICAgIFJlYWRvbmx5PHtcbiAgICAgIHN0YWtlcjogVWludDhBcnJheTtcbiAgICAgIHdpdGhkcmF3ZXI6IFVpbnQ4QXJyYXk7XG4gICAgfT5cbiAgPihbcHVibGljS2V5KCdzdGFrZXInKSwgcHVibGljS2V5KCd3aXRoZHJhd2VyJyldLCBwcm9wZXJ0eSk7XG59O1xuXG4vKipcbiAqIExheW91dCBmb3IgYSBMb2NrdXAgb2JqZWN0XG4gKi9cbmNvbnN0IGxvY2t1cCA9IChwcm9wZXJ0eSA9ICdsb2NrdXAnKSA9PiB7XG4gIHJldHVybiBCdWZmZXJMYXlvdXQuc3RydWN0PFxuICAgIFJlYWRvbmx5PHtcbiAgICAgIGN1c3RvZGlhbjogVWludDhBcnJheTtcbiAgICAgIGVwb2NoOiBudW1iZXI7XG4gICAgICB1bml4VGltZXN0YW1wOiBudW1iZXI7XG4gICAgfT5cbiAgPihbQnVmZmVyTGF5b3V0Lm5zNjQoJ3VuaXhUaW1lc3RhbXAnKSwgQnVmZmVyTGF5b3V0Lm5zNjQoJ2Vwb2NoJyksIHB1YmxpY0tleSgnY3VzdG9kaWFuJyldLCBwcm9wZXJ0eSk7XG59O1xuXG5pbnRlcmZhY2UgSVJ1c3RTdHJpbmdTaGltXG4gIGV4dGVuZHMgT21pdDxcbiAgICBCdWZmZXJMYXlvdXQuU3RydWN0dXJlPFxuICAgICAgUmVhZG9ubHk8e1xuICAgICAgICBsZW5ndGg6IG51bWJlcjtcbiAgICAgICAgbGVuZ3RoUGFkZGluZzogbnVtYmVyO1xuICAgICAgICBjaGFyczogVWludDhBcnJheTtcbiAgICAgIH0+XG4gICAgPixcbiAgICAnZGVjb2RlJyB8ICdlbmNvZGUnIHwgJ3JlcGxpY2F0ZSdcbiAgPiB7XG4gIGFsbG9jOiAoc3RyOiBzdHJpbmcpID0+IG51bWJlcjtcbiAgZGVjb2RlOiAoYjogVWludDhBcnJheSwgb2Zmc2V0PzogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIGVuY29kZTogKHN0cjogc3RyaW5nLCBiOiBVaW50OEFycmF5LCBvZmZzZXQ/OiBudW1iZXIpID0+IG51bWJlcjtcbiAgcmVwbGljYXRlOiAocHJvcGVydHk6IHN0cmluZykgPT4gdGhpcztcbn1cblxuLyoqXG4gKiBMYXlvdXQgZm9yIGEgUnVzdCBTdHJpbmcgdHlwZVxuICovXG5jb25zdCBydXN0U3RyaW5nID0gKHByb3BlcnR5ID0gJ3N0cmluZycpOiBCdWZmZXJMYXlvdXQuTGF5b3V0PHN0cmluZz4gPT4ge1xuICBjb25zdCByc2wgPSBCdWZmZXJMYXlvdXQuc3RydWN0PFxuICAgIFJlYWRvbmx5PHtcbiAgICAgIGxlbmd0aD86IG51bWJlcjtcbiAgICAgIGxlbmd0aFBhZGRpbmc/OiBudW1iZXI7XG4gICAgICBjaGFyczogVWludDhBcnJheTtcbiAgICB9PlxuICA+KFxuICAgIFtcbiAgICAgIEJ1ZmZlckxheW91dC51MzIoJ2xlbmd0aCcpLCAvLyA0XG4gICAgICBCdWZmZXJMYXlvdXQudTMyKCdsZW5ndGhQYWRkaW5nJyksIC8vIDRcbiAgICAgIEJ1ZmZlckxheW91dC5ibG9iKEJ1ZmZlckxheW91dC5vZmZzZXQoQnVmZmVyTGF5b3V0LnUzMigpLCAtOCksICdjaGFycycpLCAvLyBkYXRhIGxlbmd0aFxuICAgIF0sXG4gICAgcHJvcGVydHlcbiAgKTtcbiAgY29uc3QgX2RlY29kZSA9IHJzbC5kZWNvZGUuYmluZChyc2wpO1xuICBjb25zdCBfZW5jb2RlID0gcnNsLmVuY29kZS5iaW5kKHJzbCk7XG5cbiAgY29uc3QgcnNsU2hpbSA9IHJzbCBhcyB1bmtub3duIGFzIElSdXN0U3RyaW5nU2hpbTtcblxuICByc2xTaGltLmRlY29kZSA9IChiOiBVaW50OEFycmF5LCBvZmZzZXQ/OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBkYXRhID0gX2RlY29kZShiLCBvZmZzZXQpO1xuICAgIHJldHVybiBkYXRhWydjaGFycyddLnRvU3RyaW5nKCk7XG4gIH07XG5cbiAgcnNsU2hpbS5lbmNvZGUgPSAoc3RyOiBzdHJpbmcsIGI6IFVpbnQ4QXJyYXksIG9mZnNldD86IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBjaGFyczogQnVmZmVyLmZyb20oc3RyLCAndXRmOCcpLFxuICAgIH07XG4gICAgcmV0dXJuIF9lbmNvZGUoZGF0YSwgYiwgb2Zmc2V0KTtcbiAgfTtcblxuICByc2xTaGltLmFsbG9jID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIEJ1ZmZlckxheW91dC51MzIoKS5zcGFuICsgQnVmZmVyTGF5b3V0LnUzMigpLnNwYW4gKyBCdWZmZXIuZnJvbShzdHIsICd1dGY4JykubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiByc2xTaGltO1xufTtcblxuZnVuY3Rpb24gZ2V0QWxsb2ModHlwZTogYW55LCBmaWVsZHM6IGFueSk6IG51bWJlciB7XG4gIGxldCBhbGxvYyA9IDA7XG4gIHR5cGUubGF5b3V0LmZpZWxkcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICBpZiAoaXRlbS5zcGFuID49IDApIHtcbiAgICAgIGFsbG9jICs9IGl0ZW0uc3BhbjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtLmFsbG9jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhbGxvYyArPSBpdGVtLmFsbG9jKGZpZWxkc1tpdGVtLnByb3BlcnR5XSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGFsbG9jO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVEYXRhPFQgZXh0ZW5kcyBJbnN0cnVjdGlvbklucHV0RGF0YT4obGF5b3V0VHlwZTogSW5zdHJ1Y3Rpb25MYXlvdXRUeXBlPFQ+LCBmaWVsZHM/OiBhbnkpOiBCdWZmZXIge1xuICBjb25zdCBhbGxvY0xlbmd0aCA9IGxheW91dFR5cGUubGF5b3V0LnNwYW4gPj0gMCA/IGxheW91dFR5cGUubGF5b3V0LnNwYW4gOiBnZXRBbGxvYyhsYXlvdXRUeXBlLCBmaWVsZHMpO1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGFsbG9jTGVuZ3RoKTtcbiAgY29uc3QgbGF5b3V0RmllbGRzID0gT2JqZWN0LmFzc2lnbih7IGluc3RydWN0aW9uOiBsYXlvdXRUeXBlLmluZGV4IH0sIGZpZWxkcyk7XG4gIGxheW91dFR5cGUubGF5b3V0LmVuY29kZShsYXlvdXRGaWVsZHMsIGRhdGEpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuY29uc3Qgc2lnbmF0dXJlID0gKHByb3BlcnR5OiBzdHJpbmcgPSAnc2lnbmF0dXJlJykgPT4ge1xuICByZXR1cm4gQnVmZmVyTGF5b3V0LmJsb2IoNjQsIHByb3BlcnR5KTtcbn07XG5cbmV4cG9ydCB7IHB1YmxpY0tleSwgYXV0aG9yaXplZCwgbG9ja3VwLCBydXN0U3RyaW5nLCBlbmNvZGVEYXRhLCBzaWduYXR1cmUgYXMgU2lnbmF0dXJlTGF5b3V0IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUFzRCxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBC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