diff --git a/sdk/js/CHANGELOG.md b/sdk/js/CHANGELOG.md index 3108c84d9..70c441c0f 100644 --- a/sdk/js/CHANGELOG.md +++ b/sdk/js/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 0.10.6 + +### Added + +Celestia support + +Scroll testnet support + +### Changes + +Solana WrappedMeta deserialization fix + ## 0.10.5 ### Changes diff --git a/sdk/js/src/solana/tokenBridge/accounts/wrapped.ts b/sdk/js/src/solana/tokenBridge/accounts/wrapped.ts index 8cfd46ab0..cd052ef29 100644 --- a/sdk/js/src/solana/tokenBridge/accounts/wrapped.ts +++ b/sdk/js/src/solana/tokenBridge/accounts/wrapped.ts @@ -68,20 +68,34 @@ export class WrappedMeta { chain: number; tokenAddress: Buffer; originalDecimals: number; + lastUpdatedSequence?: bigint; - constructor(chain: number, tokenAddress: Buffer, originalDecimals: number) { + constructor( + chain: number, + tokenAddress: Buffer, + originalDecimals: number, + lastUpdatedSequence?: bigint + ) { this.chain = chain; this.tokenAddress = tokenAddress; this.originalDecimals = originalDecimals; + this.lastUpdatedSequence = lastUpdatedSequence; } static deserialize(data: Buffer): WrappedMeta { - if (data.length != 35) { - throw new Error("data.length != 35"); + if (data.length !== 35 && data.length !== 43) { + throw new Error(`invalid wrapped meta length: ${data.length}`); } const chain = data.readUInt16LE(0); const tokenAddress = data.subarray(2, 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 + ); } }