sdk/js: Refactor WrappedMeta class constructor to include

lastUpdatedSequence
This commit is contained in:
Kevin Peters 2023-11-21 11:54:34 -06:00 committed by kev1n-peters
parent 62e7801cfa
commit f0bbb82de4
2 changed files with 30 additions and 4 deletions

View File

@ -1,5 +1,17 @@
# Changelog # Changelog
## 0.10.6
### Added
Celestia support
Scroll testnet support
### Changes
Solana WrappedMeta deserialization fix
## 0.10.5 ## 0.10.5
### Changes ### Changes

View File

@ -68,20 +68,34 @@ export class WrappedMeta {
chain: number; chain: number;
tokenAddress: Buffer; tokenAddress: Buffer;
originalDecimals: number; originalDecimals: number;
lastUpdatedSequence?: bigint;
constructor(chain: number, tokenAddress: Buffer, originalDecimals: number) { constructor(
chain: number,
tokenAddress: Buffer,
originalDecimals: number,
lastUpdatedSequence?: bigint
) {
this.chain = chain; this.chain = chain;
this.tokenAddress = tokenAddress; this.tokenAddress = tokenAddress;
this.originalDecimals = originalDecimals; this.originalDecimals = originalDecimals;
this.lastUpdatedSequence = lastUpdatedSequence;
} }
static deserialize(data: Buffer): WrappedMeta { static deserialize(data: Buffer): WrappedMeta {
if (data.length != 35) { if (data.length !== 35 && data.length !== 43) {
throw new Error("data.length != 35"); throw new Error(`invalid wrapped meta length: ${data.length}`);
} }
const chain = data.readUInt16LE(0); const chain = data.readUInt16LE(0);
const tokenAddress = data.subarray(2, 34); const tokenAddress = data.subarray(2, 34);
const originalDecimals = data.readUInt8(34); const originalDecimals = data.readUInt8(34);
return new WrappedMeta(chain, tokenAddress, originalDecimals); const lastUpdatedSequence =
data.length === 43 ? data.readBigUInt64LE(35) : undefined;
return new WrappedMeta(
chain,
tokenAddress,
originalDecimals,
lastUpdatedSequence
);
} }
} }