UNPKG

@bithive/bitcoin-sdk

Version:

BitHive SDK

71 lines 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.encodeDepositMessageVersioned = encodeDepositMessageVersioned; exports.encodeDepositMessageV1 = encodeDepositMessageV1; exports.decodeDepositMessageVersioned = decodeDepositMessageVersioned; exports.decodeDepositMessageV1 = decodeDepositMessageV1; const types_1 = require("../types"); const borsher_1 = require("borsher"); const utils_1 = require("../utils"); const buffer_1 = require("buffer"); const schema = borsher_1.BorshSchema.Enum({ V1: borsher_1.BorshSchema.Struct({ vout: borsher_1.BorshSchema.u64, publicKey: borsher_1.BorshSchema.Array(borsher_1.BorshSchema.u8, 33), soloWithdrawSequenceHeight: borsher_1.BorshSchema.u16, }), }); function encodeDepositMessageVersioned(message) { const messageRaw = formatDepositMessageVersioned(message); return buffer_1.Buffer.concat([ buffer_1.Buffer.from(utils_1.DEPOSIT_MESSAGE_MAGIC_HEADER), (0, borsher_1.borshSerialize)(schema, messageRaw), ]); } function encodeDepositMessageV1(message) { return encodeDepositMessageVersioned({ V1: message, }); } function decodeDepositMessageVersioned(buffer) { const messageRaw = (0, borsher_1.borshDeserialize)(schema, buffer.subarray(utils_1.DEPOSIT_MESSAGE_MAGIC_HEADER.length)); return parseDepositMessageVersioned(messageRaw); } function decodeDepositMessageV1(buffer) { const message = decodeDepositMessageVersioned(buffer); if ('V1' in message) { return message.V1; } else { throw Error('Invalid version of deposit message'); } } function parseDepositMessageVersioned(message) { if ('V1' in message) { return { V1: { vout: Number(message.V1.vout), publicKey: types_1.PublicKey.fromBuffer(buffer_1.Buffer.from(message.V1.publicKey)), soloWithdrawSequenceHeight: message.V1.soloWithdrawSequenceHeight, }, }; } else { throw Error('Unexpected version of deposit message'); } } function formatDepositMessageVersioned(message) { if ('V1' in message) { return { V1: { vout: BigInt(message.V1.vout), publicKey: Array.from(message.V1.publicKey.toBuffer()), soloWithdrawSequenceHeight: message.V1.soloWithdrawSequenceHeight, }, }; } else { throw Error('Unexpected version of deposit message'); } } //# sourceMappingURL=message.js.map