Skip to content

Commit

Permalink
update sdk (#83)
Browse files Browse the repository at this point in the history
* update sdk

* fix tests
  • Loading branch information
Bhargavamacha authored Aug 19, 2024
1 parent 5ecf2ab commit 2533eb8
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 37 deletions.
55 changes: 23 additions & 32 deletions clients/rwa-token-sdk/src/asset-controller/instructions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import {
import {
ASSOCIATED_TOKEN_PROGRAM_ID,
TOKEN_2022_PROGRAM_ID,
createAssociatedTokenAccountInstruction,
createTransferCheckedInstruction,
getAccount,
getAssociatedTokenAddressSync,
Expand Down Expand Up @@ -197,6 +198,7 @@ export type TransferTokensArgs = {
amount: number;
decimals: number;
message?: string;
createTa?: boolean;
} & CommonArgs;

/**
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -356,7 +363,6 @@ export type SetupAssetControllerArgs = {
uri: string;
symbol: string;
interestRate?: number;
memoTransfer?: boolean;
};

/**
Expand Down Expand Up @@ -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],
};
Expand Down
14 changes: 11 additions & 3 deletions clients/rwa-token-sdk/tests/e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
DeleteDataAccountArgs,
getDataAccountsWithFilter,
getPolicyAccount,
getSetupUserIxs,
getTrackerAccount,
type IssueTokenArgs,
type TransferTokensArgs,
Expand Down Expand Up @@ -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,
Expand Down
16 changes: 14 additions & 2 deletions clients/rwa-token-sdk/tests/extensions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Wallet } from "@coral-xyz/anchor";
import {
getCloseMintIx,
getDisableMemoTransferIx,
getSetupUserIxs,
getUpdateInterestBearingMintRateIx,
} from "../src";
import { setupTests } from "./setup";
Expand Down Expand Up @@ -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();
Expand Down
1 change: 1 addition & 0 deletions clients/rwa-token-sdk/tests/tracker.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 2533eb8

Please sign in to comment.