From 2533eb814d820880137e667c1da134c5ef777e9c Mon Sep 17 00:00:00 2001 From: Bhargava Sai Macha Date: Mon, 19 Aug 2024 22:59:23 +0530 Subject: [PATCH] update sdk (#83) * update sdk * fix tests --- .../src/asset-controller/instructions.ts | 55 ++++++++----------- clients/rwa-token-sdk/tests/e2e.test.ts | 14 ++++- .../rwa-token-sdk/tests/extensions.test.ts | 16 +++++- clients/rwa-token-sdk/tests/tracker.test.ts | 1 + 4 files changed, 49 insertions(+), 37 deletions(-) diff --git a/clients/rwa-token-sdk/src/asset-controller/instructions.ts b/clients/rwa-token-sdk/src/asset-controller/instructions.ts index 652c4db..1859e22 100644 --- a/clients/rwa-token-sdk/src/asset-controller/instructions.ts +++ b/clients/rwa-token-sdk/src/asset-controller/instructions.ts @@ -28,6 +28,7 @@ import { import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID, + createAssociatedTokenAccountInstruction, createTransferCheckedInstruction, getAccount, getAssociatedTokenAddressSync, @@ -197,6 +198,7 @@ export type TransferTokensArgs = { amount: number; decimals: number; message?: string; + createTa?: boolean; } & CommonArgs; /** @@ -265,37 +267,42 @@ export async function getTransferTokensIxs( const ta = await getAccount(provider.connection, getAssociatedTokenAddressSync( new PublicKey(args.assetMint), new PublicKey(args.to), - false, + true, TOKEN_2022_PROGRAM_ID - )); - if(ta) { - const isMemoTransfer = getMemoTransfer(ta); - if (isMemoTransfer) { - if(!args.message) { - throw new Error("Memo is required for memo transfer"); - } - ixs.push(new TransactionInstruction({ - keys: [{ pubkey: new PublicKey(args.from), isSigner: true, isWritable: true }], - data: Buffer.from(args.message, "utf-8"), - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - })); + ), undefined, TOKEN_2022_PROGRAM_ID); + const isMemoTransfer = getMemoTransfer(ta); + if (isMemoTransfer) { + if(!args.message) { + throw new Error("Memo is required for memo transfer"); } + ixs.push(new TransactionInstruction({ + keys: [{ pubkey: new PublicKey(args.from), isSigner: true, isWritable: true }], + data: Buffer.from(args.message, "utf-8"), + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + })); } } catch (error) { - // do nothing + if (args.createTa) { + ixs.push(createAssociatedTokenAccountInstruction(new PublicKey(args.payer), getAssociatedTokenAddressSync( + new PublicKey(args.assetMint), + new PublicKey(args.to), + true, + TOKEN_2022_PROGRAM_ID + ), new PublicKey(args.to), new PublicKey(args.assetMint), TOKEN_2022_PROGRAM_ID)); + } } const ix = createTransferCheckedInstruction( getAssociatedTokenAddressSync( new PublicKey(args.assetMint), new PublicKey(args.from), - false, + true, TOKEN_2022_PROGRAM_ID ), new PublicKey(args.assetMint), getAssociatedTokenAddressSync( new PublicKey(args.assetMint), new PublicKey(args.to), - false, + true, TOKEN_2022_PROGRAM_ID ), new PublicKey(args.from), @@ -356,7 +363,6 @@ export type SetupAssetControllerArgs = { uri: string; symbol: string; interestRate?: number; - memoTransfer?: boolean; }; /** @@ -393,27 +399,12 @@ export async function getSetupAssetControllerIxs( provider ); - // Setup user ixs - const setupUserIxs = await getSetupUserIxs( - { - payer: args.payer, - owner: args.authority, - signer: args.authority, - assetMint: mint.toString(), - level: 255, - memoTransfer: args.memoTransfer, - }, - provider - ); - - return { ixs: [ assetControllerCreateIx, policyEngineCreateIx, dataRegistryCreateIx, identityRegistryCreateIx, - ...setupUserIxs.ixs, ], signers: [mintKp], }; diff --git a/clients/rwa-token-sdk/tests/e2e.test.ts b/clients/rwa-token-sdk/tests/e2e.test.ts index e8f0316..84ffe32 100644 --- a/clients/rwa-token-sdk/tests/e2e.test.ts +++ b/clients/rwa-token-sdk/tests/e2e.test.ts @@ -5,6 +5,7 @@ import { DeleteDataAccountArgs, getDataAccountsWithFilter, getPolicyAccount, + getSetupUserIxs, getTrackerAccount, type IssueTokenArgs, type TransferTokensArgs, @@ -62,12 +63,19 @@ describe("e2e tests", async () => { const setupIx = await rwaClient.assetController.setupNewRegistry( setupAssetControllerArgs ); + mint = setupIx.signers[0].publicKey.toString(); + const setupUserIxs = await getSetupUserIxs({ + assetMint: mint, + payer: setup.payer.toString(), + owner: setup.authority.toString(), + signer: setup.authority.toString(), + level: 255 + }, rwaClient.provider); const txnId = await sendAndConfirmTransaction( rwaClient.provider.connection, - new Transaction().add(...setupIx.ixs), - [setup.payerKp, ...setupIx.signers] + new Transaction().add(...setupIx.ixs).add(...setupUserIxs.ixs), + [setup.payerKp, ...setupIx.signers, ...setupUserIxs.signers] ); - mint = setupIx.signers[0].publicKey.toString(); expect(txnId).toBeTruthy(); const trackerAccount = await getTrackerAccount( mint, diff --git a/clients/rwa-token-sdk/tests/extensions.test.ts b/clients/rwa-token-sdk/tests/extensions.test.ts index 6c5a923..67a2d55 100644 --- a/clients/rwa-token-sdk/tests/extensions.test.ts +++ b/clients/rwa-token-sdk/tests/extensions.test.ts @@ -2,6 +2,7 @@ import { Wallet } from "@coral-xyz/anchor"; import { getCloseMintIx, getDisableMemoTransferIx, + getSetupUserIxs, getUpdateInterestBearingMintRateIx, } from "../src"; import { setupTests } from "./setup"; @@ -58,10 +59,21 @@ describe("extension tests", async () => { const setupIx = await rwaClient.assetController.setupNewRegistry( setupAssetControllerArgs ); + const setupUser = await getSetupUserIxs( + { + assetMint: setupIx.signers[0].publicKey.toString(), + payer: setup.payer.toString(), + owner: setup.authority.toString(), + signer: setup.authority.toString(), + level: 255, + memoTransfer: true, + }, + rwaClient.provider + ); const txnId = await sendAndConfirmTransaction( rwaClient.provider.connection, - new Transaction().add(...setupIx.ixs), - [setup.payerKp, ...setupIx.signers] + new Transaction().add(...setupIx.ixs).add(...setupUser.ixs), + [setup.payerKp, ...setupIx.signers, ...setupUser.signers] ); mint = setupIx.signers[0].publicKey.toString(); expect(txnId).toBeTruthy(); diff --git a/clients/rwa-token-sdk/tests/tracker.test.ts b/clients/rwa-token-sdk/tests/tracker.test.ts index c5bd9a2..c243339 100644 --- a/clients/rwa-token-sdk/tests/tracker.test.ts +++ b/clients/rwa-token-sdk/tests/tracker.test.ts @@ -139,6 +139,7 @@ describe("test suite to test tracker account is being updated correctly on trans assetMint: mint, amount: 100, decimals, + createTa: true, }; const transferIxs = await rwaClient.assetController.transfer(transferArgs);