Files
memecoin-botV2/.pnpm-store/v10/files/5a/20c19549c2bcb822e18e1555b7cb8c1f7ad1e600411b70b1d770e174fde4751aee43fe68add37d594c83ce22dbb9b027b8397049b7cd48ea8171ff81f2abc7

37 lines
1.1 KiB
Plaintext

import {VERSION_PREFIX_MASK} from '../transaction/constants';
import {Message} from './legacy';
import {MessageV0} from './v0';
export type VersionedMessage = Message | MessageV0;
// eslint-disable-next-line no-redeclare
export const VersionedMessage = {
deserializeMessageVersion(serializedMessage: Uint8Array): 'legacy' | number {
const prefix = serializedMessage[0];
const maskedPrefix = prefix & VERSION_PREFIX_MASK;
// if the highest bit of the prefix is not set, the message is not versioned
if (maskedPrefix === prefix) {
return 'legacy';
}
// the lower 7 bits of the prefix indicate the message version
return maskedPrefix;
},
deserialize: (serializedMessage: Uint8Array): VersionedMessage => {
const version =
VersionedMessage.deserializeMessageVersion(serializedMessage);
if (version === 'legacy') {
return Message.from(serializedMessage);
}
if (version === 0) {
return MessageV0.deserialize(serializedMessage);
} else {
throw new Error(
`Transaction message version ${version} deserialization is not supported`,
);
}
},
};