From e8d91e268418d48af8a24a5bf3eb9691508b023a Mon Sep 17 00:00:00 2001 From: leantOnSol Date: Mon, 23 Dec 2024 16:24:30 +0100 Subject: [PATCH 1/2] add accountinfo <> encodedaccount compat helpers --- compat-helpers/src/accounts.ts | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 compat-helpers/src/accounts.ts diff --git a/compat-helpers/src/accounts.ts b/compat-helpers/src/accounts.ts new file mode 100644 index 0000000..8101411 --- /dev/null +++ b/compat-helpers/src/accounts.ts @@ -0,0 +1,38 @@ +import { AccountInfo, PublicKey } from '@solana/web3.js'; +import { + type EncodedAccount, + type Address, + lamports, + Lamports, +} from '@solana/web3.js-next'; + +export function fromAccountInfoToEncodedAccount< + TAddress extends string = string, +>(address: PublicKey, account: AccountInfo): EncodedAccount { + return { + address: address.toString() as Address, + data: new Uint8Array(account.data), + executable: account.executable, + lamports: lamports(BigInt(account.lamports)), + programAddress: account.owner.toString() as Address, + }; +} + +export function fromEncodedAccountToAccountInfo< + TAddress extends string = string, +>(account: EncodedAccount): AccountInfo { + return { + executable: account.executable, + owner: new PublicKey(account.programAddress), + lamports: lamportsToNumber(account.lamports), + data: Buffer.from(account.data), + }; +} + +function lamportsToNumber(lamportsValue: Lamports): number { + const num = Number(lamportsValue); + if (!Number.isSafeInteger(num)) { + throw new Error('Lamports value too large to convert to number safely'); + } + return num; +} From 320eaae4418356d233e8d57cce8bb2015188fa13 Mon Sep 17 00:00:00 2001 From: leantOnSol Date: Mon, 23 Dec 2024 16:32:52 +0100 Subject: [PATCH 2/2] bump v --- compat-helpers/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compat-helpers/package.json b/compat-helpers/package.json index 11a116d..c510d94 100644 --- a/compat-helpers/package.json +++ b/compat-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@tensor-foundation/compat-helpers", - "version": "1.0.0-beta.1", + "version": "1.0.0-beta.2", "description": "Helper functions to make old web3.js programs compatible with web3.js-next modules", "sideEffects": false, "module": "./dist/src/index.mjs",