@bithive/bitcoin-sdk
Version:
BitHive SDK
71 lines • 2.55 kB
JavaScript
;
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