Skip to content

Commit 412694a

Browse files
committed
chore: parse transaction using the rawtx
Ticket: WIN-5679
1 parent ec308b9 commit 412694a

File tree

9 files changed

+110
-16
lines changed

9 files changed

+110
-16
lines changed

modules/sdk-coin-sol/src/lib/ataInitializationBuilder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export class AtaInitializationBuilder extends TransactionBuilder {
4242
this._tokenAssociateRecipients.push({
4343
ownerAddress: ataInitInstruction.params.ownerAddress,
4444
tokenName: ataInitInstruction.params.tokenName,
45+
tokenAddress: ataInitInstruction.params.mintAddress,
46+
programId: ataInitInstruction.params.programId,
4547
});
4648
}
4749
}

modules/sdk-coin-sol/src/lib/instructionParamsFactory.ts

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,22 @@ export function instructionParamsFactory(
5353
type: TransactionType,
5454
instructions: TransactionInstruction[],
5555
coinName?: string,
56-
instructionMetadata?: InstructionParams[]
56+
instructionMetadata?: InstructionParams[],
57+
_useTokenAddressTokenName?: boolean
5758
): InstructionParams[] {
5859
switch (type) {
5960
case TransactionType.WalletInitialization:
6061
return parseWalletInitInstructions(instructions);
6162
case TransactionType.Send:
62-
return parseSendInstructions(instructions, instructionMetadata);
63+
return parseSendInstructions(instructions, instructionMetadata, _useTokenAddressTokenName);
6364
case TransactionType.StakingActivate:
6465
return parseStakingActivateInstructions(instructions);
6566
case TransactionType.StakingDeactivate:
6667
return parseStakingDeactivateInstructions(instructions, coinName);
6768
case TransactionType.StakingWithdraw:
6869
return parseStakingWithdrawInstructions(instructions);
6970
case TransactionType.AssociatedTokenAccountInitialization:
70-
return parseAtaInitInstructions(instructions, instructionMetadata);
71+
return parseAtaInitInstructions(instructions, instructionMetadata, _useTokenAddressTokenName);
7172
case TransactionType.CloseAssociatedTokenAccount:
7273
return parseAtaCloseInstructions(instructions);
7374
case TransactionType.StakingAuthorize:
@@ -122,7 +123,8 @@ function parseWalletInitInstructions(instructions: TransactionInstruction[]): Ar
122123
*/
123124
function parseSendInstructions(
124125
instructions: TransactionInstruction[],
125-
instructionMetadata?: InstructionParams[]
126+
instructionMetadata?: InstructionParams[],
127+
_useTokenAddressTokenName?: boolean
126128
): Array<Nonce | Memo | Transfer | TokenTransfer | AtaInit | AtaClose | SetPriorityFee> {
127129
const instructionData: Array<Nonce | Memo | Transfer | TokenTransfer | AtaInit | AtaClose | SetPriorityFee> = [];
128130
for (const instruction of instructions) {
@@ -162,7 +164,12 @@ function parseSendInstructions(
162164
} else {
163165
tokenTransferInstruction = decodeTransferCheckedInstruction(instruction, TOKEN_2022_PROGRAM_ID);
164166
}
165-
const tokenName = findTokenName(tokenTransferInstruction.keys.mint.pubkey.toString(), instructionMetadata);
167+
const tokenAddress = tokenTransferInstruction.keys.mint.pubkey.toString();
168+
const tokenName = findTokenName(tokenAddress, instructionMetadata, _useTokenAddressTokenName);
169+
let programIDForTokenTransfer: string | undefined;
170+
if (instruction.programId) {
171+
programIDForTokenTransfer = instruction.programId.toString();
172+
}
166173
const tokenTransfer: TokenTransfer = {
167174
type: InstructionBuilderTypes.TokenTransfer,
168175
params: {
@@ -171,13 +178,20 @@ function parseSendInstructions(
171178
amount: tokenTransferInstruction.data.amount.toString(),
172179
tokenName,
173180
sourceAddress: tokenTransferInstruction.keys.source.pubkey.toString(),
181+
tokenAddress: tokenAddress,
182+
programId: programIDForTokenTransfer,
183+
decimalPlaces: tokenTransferInstruction.data.decimals,
174184
},
175185
};
176186
instructionData.push(tokenTransfer);
177187
break;
178188
case ValidInstructionTypesEnum.InitializeAssociatedTokenAccount:
179189
const mintAddress = instruction.keys[ataInitInstructionKeysIndexes.MintAddress].pubkey.toString();
180-
const mintTokenName = findTokenName(mintAddress, instructionMetadata);
190+
const mintTokenName = findTokenName(mintAddress, instructionMetadata, _useTokenAddressTokenName);
191+
let programID: string | undefined;
192+
if (instruction.programId) {
193+
programID = instruction.programId.toString();
194+
}
181195

182196
const ataInit: AtaInit = {
183197
type: InstructionBuilderTypes.CreateAssociatedTokenAccount,
@@ -187,6 +201,7 @@ function parseSendInstructions(
187201
ownerAddress: instruction.keys[ataInitInstructionKeysIndexes.OwnerAddress].pubkey.toString(),
188202
payerAddress: instruction.keys[ataInitInstructionKeysIndexes.PayerAddress].pubkey.toString(),
189203
tokenName: mintTokenName,
204+
programId: programID,
190205
},
191206
};
192207
instructionData.push(ataInit);
@@ -656,7 +671,8 @@ const closeAtaInstructionKeysIndexes = {
656671
*/
657672
function parseAtaInitInstructions(
658673
instructions: TransactionInstruction[],
659-
instructionMetadata?: InstructionParams[]
674+
instructionMetadata?: InstructionParams[],
675+
_useTokenAddressTokenName?: boolean
660676
): Array<AtaInit | Memo | Nonce> {
661677
const instructionData: Array<AtaInit | Memo | Nonce> = [];
662678
let memo: Memo | undefined;
@@ -680,8 +696,11 @@ function parseAtaInitInstructions(
680696
break;
681697
case ValidInstructionTypesEnum.InitializeAssociatedTokenAccount:
682698
const mintAddress = instruction.keys[ataInitInstructionKeysIndexes.MintAddress].pubkey.toString();
683-
const tokenName = findTokenName(mintAddress, instructionMetadata);
684-
699+
const tokenName = findTokenName(mintAddress, instructionMetadata, _useTokenAddressTokenName);
700+
let programID: string | undefined;
701+
if (instruction.programId) {
702+
programID = instruction.programId.toString();
703+
}
685704
const ataInit: AtaInit = {
686705
type: InstructionBuilderTypes.CreateAssociatedTokenAccount,
687706
params: {
@@ -690,6 +709,7 @@ function parseAtaInitInstructions(
690709
ownerAddress: instruction.keys[ataInitInstructionKeysIndexes.OwnerAddress].pubkey.toString(),
691710
payerAddress: instruction.keys[ataInitInstructionKeysIndexes.PayerAddress].pubkey.toString(),
692711
tokenName,
712+
programId: programID,
693713
},
694714
};
695715
instructionData.push(ataInit);
@@ -836,7 +856,11 @@ function parseStakingAuthorizeRawInstructions(instructions: TransactionInstructi
836856
return instructionData;
837857
}
838858

839-
function findTokenName(mintAddress: string, instructionMetadata?: InstructionParams[]): string {
859+
function findTokenName(
860+
mintAddress: string,
861+
instructionMetadata?: InstructionParams[],
862+
_useTokenAddressTokenName?: boolean
863+
): string {
840864
let token: string | undefined;
841865

842866
coins.forEach((value, key) => {
@@ -860,6 +884,11 @@ function findTokenName(mintAddress: string, instructionMetadata?: InstructionPar
860884
}
861885
});
862886
}
887+
888+
if (!token && _useTokenAddressTokenName) {
889+
token = mintAddress;
890+
}
891+
863892
assert(token);
864893

865894
return token;

modules/sdk-coin-sol/src/lib/transaction.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export class Transaction extends BaseTransaction {
4747
private _tokenAccountRentExemptAmount: string | undefined;
4848
protected _type: TransactionType;
4949
protected _instructionsData: InstructionParams[] = [];
50+
private _useTokenAddressTokenName = false;
5051

5152
constructor(_coinConfig: Readonly<CoinConfig>) {
5253
super(_coinConfig);
@@ -132,6 +133,13 @@ export class Transaction extends BaseTransaction {
132133
this._instructionsData = instructionData;
133134
}
134135

136+
get useTokenAddressTokenName(): boolean {
137+
return this._useTokenAddressTokenName;
138+
}
139+
140+
setUseTokenAddressTokenName(value: boolean): void {
141+
this._useTokenAddressTokenName = value;
142+
}
135143
/** @inheritdoc */
136144
canSign(): boolean {
137145
return true;
@@ -254,7 +262,8 @@ export class Transaction extends BaseTransaction {
254262
this._type,
255263
this._solTransaction.instructions,
256264
this._coinConfig.name,
257-
this._instructionsData
265+
this._instructionsData,
266+
this._useTokenAddressTokenName
258267
);
259268
if (this._type) {
260269
if (
@@ -304,7 +313,8 @@ export class Transaction extends BaseTransaction {
304313
this.type,
305314
this._solTransaction.instructions,
306315
this._coinConfig.name,
307-
this._instructionsData
316+
this._instructionsData,
317+
this._useTokenAddressTokenName
308318
);
309319

310320
for (const instruction of instructionParams) {
@@ -403,7 +413,8 @@ export class Transaction extends BaseTransaction {
403413
this._type,
404414
this._solTransaction.instructions,
405415
this._coinConfig.name,
406-
this._instructionsData
416+
this._instructionsData,
417+
this._useTokenAddressTokenName
407418
);
408419

409420
let memo: string | undefined = undefined;

modules/sdk-coin-sol/src/lib/transactionBuilder.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ export abstract class TransactionBuilder extends BaseTransactionBuilder {
7979
tx.type,
8080
tx.solTransaction.instructions,
8181
this._coinConfig.name,
82-
txData.instructionsData
82+
txData.instructionsData,
83+
tx.useTokenAddressTokenName
8384
);
8485
// Parse priority fee instruction data
8586
const filteredPriorityFeeInstructionsData = txData.instructionsData.filter(

modules/sdk-coin-sol/src/lib/transactionBuilderFactory.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
196196
*/
197197
private parseTransaction(rawTransaction: string): Transaction {
198198
const tx = new Transaction(this._coinConfig);
199+
tx.setUseTokenAddressTokenName(true);
199200
tx.fromRawTransaction(rawTransaction);
200201
return tx;
201202
}

modules/sdk-coin-sol/test/resources/sol.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ export const MULTI_ATA_INIT_UNSIGNED_TX_WITH_MEMO =
336336
'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAgLAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6eImk2vqjKE29ijPQC3J9+Ee5BReHzJbOcx1YEXe4c2FpE+dbI3yHPEpVDhMMsjfD0H71uNeW9xUSUv+xjQgMG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3mYzL8tBFi2FcvMaxo2fEdJ6f73MGYi4bG1iRASC8moyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZxvp6877brTo9ZfNqq8l0MbG75MLS9uDkfKYCA0UvXWH1yLDLP/nDfjGmtl3nMb6jHN0TI27DiXm5NUnFXDMJ2gVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAG3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqeMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAwUHAAIABgMKCQAFBwABBwQDCgkACAAXdGVzdCBtZW1vIHBsZWFzZSBpZ25vcmU=';
337337
export const MULTI_ATA_INIT_UNSIGNED_TX_WITH_MEMO_OPTIONAL_PARAM =
338338
'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAkMAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6eImk2vqjKE29ijPQC3J9+Ee5BReHzJbOcx1YEXe4c2FpE+dbI3yHPEpVDhMMsjfD0H71uNeW9xUSUv+xjQgMG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3mYzL8tBFi2FcvMaxo2fEdJ6f73MGYi4bG1iRASC8moyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZxvp6877brTo9ZfNqq8l0MbG75MLS9uDkfKYCA0UvXWHRA4n79yB28NXK/dUr5LGy7FQUTnzHLhyV3TEs7bTaXvXIsMs/+cN+Maa2XecxvqMc3RMjbsOJebk1ScVcMwnaBUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI0Gp9UXGSxcUSGMyUw9SvF/WNruCJuh/UTj29mKAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEEBQcAAgAGAwsKAAUHAAEIBAMLCgAFBwABCAcDCwoACQAXdGVzdCBtZW1vIHBsZWFzZSBpZ25vcmU=';
339+
export const MULTI_ATA_INIT_SIGNED_TX_WITH_MEMO_OPTIONAL_PARAM1 =
340+
'AR74iUV4ga2JgbT4PYKPRArz2oMjorKsu2FMcWJq73awu9SgWQE/nW83dOf1PXId998IcmafO5UAKmyarOmawQwBAAkNAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6dzF+Mz0BGjJZdQeF7uPrCgtXbWr7ogQmMqLvC6kyyYVIiaTa+qMoTb2KM9ALcn34R7kFF4fMls5zHVgRd7hzYWkT51sjfIc8SlUOEwyyN8PQfvW415b3FRJS/7GNCAwbYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADeZjMvy0EWLYVy8xrGjZ8R0np/vcwZiLhsbWJEBILyajJclj04kifG7PRApFI4NgwtaE5na/xCEBI572Nvp+FnG+nrzvtutOj1l82qryXQxsbvkwtL24OR8pgIDRS9dYdEDifv3IHbw1cr91SvksbLsVBROfMcuHJXdMSzttNpe9ciwyz/5w34xprZd5zG+oxzdEyNuw4l5uTVJxVwzCdoFSlNamSkhBk0k6HFg2jh8fDW13bySu4HkH6hAQQVEjQan1RcZLFxRIYzJTD1K8X9Y2u4Im6H9ROPb2YoAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKnjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQQGBwADAAcEDAsABgcAAgkFBAwLAAYHAAEJCAQMCwAKABd0ZXN0IG1lbW8gcGxlYXNlIGlnbm9yZQ==';
339341
export const MULTI_ATA_INIT_SIGNED_TX =
340342
'AYe8/ryCIppTrWN5VS+nzpI5jRQNEYrkrijw2BbA9fZTDCxAg1mm5fuaYSdSLlIWdMk6ucsCYEzw0n7xATMMYwsBAAcKAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6eImk2vqjKE29ijPQC3J9+Ee5BReHzJbOcx1YEXe4c2FpE+dbI3yHPEpVDhMMsjfD0H71uNeW9xUSUv+xjQgMG2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3mYzL8tBFi2FcvMaxo2fEdJ6f73MGYi4bG1iRASC8moyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZxvp6877brTo9ZfNqq8l0MbG75MLS9uDkfKYCA0UvXWH1yLDLP/nDfjGmtl3nMb6jHN0TI27DiXm5NUnFXDMJ2gan1RcZLFxRIYzJTD1K8X9Y2u4Im6H9ROPb2YoAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKnjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQIFBwACAAYDCQgABQcAAQcEAwkIAA==';
341343
export const MULTI_ATA_INIT_SIGNED_TX_OPTIONAL_PARAM =
@@ -361,7 +363,7 @@ export const tokenTransfers = {
361363
export const amsTokenTransfers = {
362364
nameAMSToken: 'tsol:ams',
363365
mintAMS: 'F4uLeXioFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
364-
programID: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
366+
programID: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
365367
decimals: 9,
366368
};
367369

modules/sdk-coin-sol/test/unit/transactionBuilder/ataInitBuilder.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,16 @@ describe('Sol Associated Token Account Builder', () => {
489489
should.equal(rawTx, testData.MULTI_ATA_INIT_SIGNED_TX_WITH_MEMO);
490490
});
491491

492+
it('build from a unsigned ATA init for multi recipients with memo and sign it with optinal param', async () => {
493+
const txBuilder = factory.from(testData.MULTI_ATA_INIT_UNSIGNED_TX_WITH_MEMO_OPTIONAL_PARAM);
494+
(txBuilder as AtaInitializationBuilder).rentExemptAmount(rentAmount);
495+
txBuilder.sign({ key: account.prv });
496+
const tx = await txBuilder.build();
497+
const rawTx = tx.toBroadcastFormat();
498+
499+
should.equal(rawTx, testData.MULTI_ATA_INIT_SIGNED_TX_WITH_MEMO_OPTIONAL_PARAM1);
500+
});
501+
492502
it('build from an unsigned ATA init with durable nonce and sign it', async () => {
493503
const txBuilder = factory.from(testData.ATA_INIT_UNSIGNED_TX_DURABLE_NONCE);
494504
txBuilder.sign({ key: account.prv });

modules/sdk-coin-sol/test/unit/transactionBuilder/tokenTransferBuilder.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@ describe('Sol Token Transfer Builder', () => {
391391
ownerAddress: otherAccount.pub,
392392
payerAddress: walletPK,
393393
tokenName: nameUSDC,
394+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
394395
});
395396
txJson.instructionsData[1].type.should.equal('TokenTransfer');
396397
txJson.instructionsData[1].params.should.deepEqual({
@@ -399,6 +400,9 @@ describe('Sol Token Transfer Builder', () => {
399400
amount: amount,
400401
tokenName: nameUSDC,
401402
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
403+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
404+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
405+
decimalPlaces: 9,
402406
});
403407
txJson.instructionsData[2].type.should.equal('Memo');
404408
txJson.instructionsData[2].params.memo.should.equal(memo);
@@ -455,6 +459,7 @@ describe('Sol Token Transfer Builder', () => {
455459
ownerAddress: otherAccount.pub,
456460
payerAddress: walletPK,
457461
tokenName: nameAMS,
462+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
458463
});
459464
txJson.instructionsData[1].type.should.equal('TokenTransfer');
460465
txJson.instructionsData[1].params.should.deepEqual({
@@ -463,6 +468,9 @@ describe('Sol Token Transfer Builder', () => {
463468
amount: amount,
464469
tokenName: nameAMS,
465470
sourceAddress: 'EytHm3gWSmaTkuF1datepgDzx7grGuDG7ws5QA7tCmU4',
471+
tokenAddress: 'F4uLeXioFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
472+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
473+
decimalPlaces: 9,
466474
});
467475
txJson.instructionsData[2].type.should.equal('Memo');
468476
txJson.instructionsData[2].params.memo.should.equal(memo);
@@ -547,6 +555,7 @@ describe('Sol Token Transfer Builder', () => {
547555
ownerAddress: otherAccount.pub,
548556
payerAddress: walletPK,
549557
tokenName: nameUSDC,
558+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
550559
});
551560
txJson.instructionsData[2].type.should.equal('CreateAssociatedTokenAccount');
552561
txJson.instructionsData[2].params.should.deepEqual({
@@ -555,6 +564,7 @@ describe('Sol Token Transfer Builder', () => {
555564
ownerAddress: account1.pub,
556565
payerAddress: walletPK,
557566
tokenName: nameUSDC,
567+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
558568
});
559569
txJson.instructionsData[2].type.should.equal('CreateAssociatedTokenAccount');
560570
txJson.instructionsData[3].params.should.deepEqual({
@@ -563,6 +573,7 @@ describe('Sol Token Transfer Builder', () => {
563573
ownerAddress: account2.pub,
564574
payerAddress: walletPK,
565575
tokenName: nameUSDC,
576+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
566577
});
567578
txJson.instructionsData.length.should.equal(8);
568579
txJson.instructionsData[4].type.should.equal('TokenTransfer');
@@ -572,6 +583,9 @@ describe('Sol Token Transfer Builder', () => {
572583
amount: amount,
573584
tokenName: nameUSDC,
574585
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
586+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
587+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
588+
decimalPlaces: 9,
575589
});
576590
txJson.instructionsData[5].type.should.equal('TokenTransfer');
577591
txJson.instructionsData[5].params.should.deepEqual({
@@ -580,6 +594,9 @@ describe('Sol Token Transfer Builder', () => {
580594
amount: amount,
581595
tokenName: nameUSDC,
582596
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
597+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
598+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
599+
decimalPlaces: 9,
583600
});
584601
txJson.instructionsData[6].type.should.equal('TokenTransfer');
585602
txJson.instructionsData[6].params.should.deepEqual({
@@ -588,6 +605,9 @@ describe('Sol Token Transfer Builder', () => {
588605
amount: amount,
589606
tokenName: nameUSDC,
590607
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
608+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
609+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
610+
decimalPlaces: 9,
591611
});
592612
txJson.instructionsData[7].type.should.equal('Memo');
593613
txJson.instructionsData[7].params.memo.should.equal(memo);
@@ -664,6 +684,7 @@ describe('Sol Token Transfer Builder', () => {
664684
ownerAddress: otherAccount.pub,
665685
payerAddress: walletPK,
666686
tokenName: nameUSDC,
687+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
667688
});
668689
txJson.instructionsData[2].type.should.equal('TokenTransfer');
669690
txJson.instructionsData[2].params.should.deepEqual({
@@ -672,6 +693,9 @@ describe('Sol Token Transfer Builder', () => {
672693
amount: amount,
673694
tokenName: nameUSDC,
674695
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
696+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
697+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
698+
decimalPlaces: 9,
675699
});
676700
txJson.instructionsData[3].type.should.equal('TokenTransfer');
677701
txJson.instructionsData[3].params.should.deepEqual({
@@ -680,6 +704,9 @@ describe('Sol Token Transfer Builder', () => {
680704
amount: amount,
681705
tokenName: nameUSDC,
682706
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
707+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
708+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
709+
decimalPlaces: 9,
683710
});
684711
txJson.instructionsData[4].type.should.equal('TokenTransfer');
685712
txJson.instructionsData[4].params.should.deepEqual({
@@ -688,6 +715,9 @@ describe('Sol Token Transfer Builder', () => {
688715
amount: amount,
689716
tokenName: nameUSDC,
690717
sourceAddress: 'B5rJjuVi7En63iK6o3ijKdJwAoTe2gwCYmJsVdHQ2aKV',
718+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
719+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
720+
decimalPlaces: 9,
691721
});
692722
txJson.instructionsData[5].type.should.equal('Memo');
693723
txJson.instructionsData[5].params.memo.should.equal(memo);

0 commit comments

Comments
 (0)