Skip to content

Commit

Permalink
feat(sdk-coin-apt): name change of fungible classes
Browse files Browse the repository at this point in the history
Ticket: COIN-2894

Keeping them as close to aptos sdk as possible

TICKET: COIN-2894
  • Loading branch information
baltiyal committed Jan 28, 2025
1 parent 40d0a77 commit fbb9618
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { FungibleTokenTransferTxData } from '../iface';
import utils from '../utils';
import { BaseCoin as CoinConfig, NetworkType } from '@bitgo/statics';

export class FungibleTokenTransfer extends Transaction {
export class FungibleAssetTransaction extends Transaction {
protected _fungibleTokenAddress: string;

constructor(coinConfig: Readonly<CoinConfig>) {
Expand Down
9 changes: 9 additions & 0 deletions modules/sdk-coin-apt/src/lib/transaction/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export abstract class Transaction extends BaseTransaction {
protected _gasUsed: number;
protected _expirationTime: number;
protected _feePayerAddress: string;
private _assetId: string;

static EMPTY_PUBLIC_KEY = Buffer.alloc(32);
static EMPTY_SIGNATURE = Buffer.alloc(64);
Expand Down Expand Up @@ -139,6 +140,14 @@ export abstract class Transaction extends BaseTransaction {
this._type = transactionType;
}

get assetId(): string {
return this._assetId;
}

set assetId(value: string) {
this._assetId = value;
}

protected abstract buildRawTransaction(): void;

protected abstract fromDeserializedSignedTransaction(signedTxn: SignedTransaction): void;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import { TransactionBuilder } from './transactionBuilder';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { FungibleTokenTransfer } from '../transaction/fungibleTokenTransfer';
import { FungibleAssetTransaction } from '../transaction/fungibleAssetTransaction';
import { TransactionRecipient, TransactionType } from '@bitgo/sdk-core';
import { Transaction } from '../transaction/transaction';
import BigNumber from 'bignumber.js';
import utils from '../utils';
import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk';

export class FungibleTokenTransferBuilder extends TransactionBuilder {
export class FungibleAssetTransactionBuilder extends TransactionBuilder {
//REMOVE COMMENT
constructor(_coinConfig: Readonly<CoinConfig>) {
super(_coinConfig);
this._transaction = new FungibleTokenTransfer(_coinConfig);
this._transaction = new FungibleAssetTransaction(_coinConfig);
}

fungibleTokenAddress(fungibleTokenAddress: string): this {
this.validateAddress({ address: fungibleTokenAddress });
(this.transaction as FungibleTokenTransfer).fungibleTokenAddress = fungibleTokenAddress;
(this.transaction as FungibleAssetTransaction).fungibleTokenAddress = fungibleTokenAddress;
return this;
}

Expand All @@ -25,12 +25,12 @@ export class FungibleTokenTransferBuilder extends TransactionBuilder {
}

/** @inheritdoc */
initBuilder(tx: FungibleTokenTransfer): void {
initBuilder(tx: FungibleAssetTransaction): void {
this._transaction = tx;
}

/** @inheritdoc */
validateTransaction(transaction?: FungibleTokenTransfer): void {
validateTransaction(transaction?: FungibleAssetTransaction): void {
if (!transaction) {
throw new Error('transaction not defined');
}
Expand Down
10 changes: 5 additions & 5 deletions modules/sdk-coin-apt/src/lib/transactionBuilderFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import { Transaction } from './transaction/transaction';
import { SignedTransaction } from '@aptos-labs/ts-sdk';
import { TransferTransaction } from './transaction/transferTransaction';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { FungibleTokenTransfer } from './transaction/fungibleTokenTransfer';
import { FungibleTokenTransferBuilder } from './transactionBuilder/fungibleTokenTransferBuilder';
import { FungibleAssetTransaction } from './transaction/fungibleAssetTransaction';
import { FungibleAssetTransactionBuilder } from './transactionBuilder/fungibleAssetTransactionBuilder';

export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
constructor(_coinConfig: Readonly<CoinConfig>) {
Expand All @@ -25,7 +25,7 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
transferTx.fromDeserializedSignedTransaction(signedTxn);
return this.getTransferBuilder(transferTx);
case TransactionType.SendToken:
const fungibleTransferTokenTx = new FungibleTokenTransfer(this._coinConfig);
const fungibleTransferTokenTx = new FungibleAssetTransaction(this._coinConfig);
fungibleTransferTokenTx.fromDeserializedSignedTransaction(signedTxn);
return this.getFungibleTransferTokenBuilder(fungibleTransferTokenTx);
default:
Expand All @@ -47,8 +47,8 @@ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
}

/** @inheritdoc */
getFungibleTransferTokenBuilder(tx?: Transaction): FungibleTokenTransferBuilder {
return this.initializeBuilder(tx, new FungibleTokenTransferBuilder(this._coinConfig));
getFungibleTransferTokenBuilder(tx?: Transaction): FungibleAssetTransactionBuilder {
return this.initializeBuilder(tx, new FungibleAssetTransactionBuilder(this._coinConfig));
}

/** @inheritdoc */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import { TransferTransaction } from '../../../src';
import * as testData from '../../resources/apt';
import { TransactionType } from '@bitgo/sdk-core';
import should from 'should';
import { FungibleTokenTransfer } from '../../../src/lib/transaction/fungibleTokenTransfer';
import { FungibleAssetTransaction } from '../../../src/lib/transaction/fungibleAssetTransaction';

describe('Apt Token Transfer Builder', () => {
const factory = getBuilderFactory('tapt:usdt');

describe('Succeed', () => {
it('should build a token transfer', async function () {
const fungibleTokenTransfer = new FungibleTokenTransfer(coins.get('tapt:usdt'));
const fungibleTokenTransfer = new FungibleAssetTransaction(coins.get('tapt:usdt'));
const txBuilder = factory.getFungibleTransferTokenBuilder(fungibleTokenTransfer);
txBuilder.sender(testData.sender2.address);
txBuilder.recipient(testData.fungibleTokenRecipients[0]);
Expand All @@ -23,7 +23,7 @@ describe('Apt Token Transfer Builder', () => {
txBuilder.sequenceNumber(14);
txBuilder.expirationTime(1736246155);
txBuilder.addFeePayerAddress(testData.feePayer.address);
const tx = (await txBuilder.build()) as FungibleTokenTransfer;
const tx = (await txBuilder.build()) as FungibleAssetTransaction;
should.equal(tx.sender, testData.sender2.address);
should.equal(tx.recipient.address, testData.fungibleTokenRecipients[0].address);
should.equal(tx.recipient.amount, testData.fungibleTokenRecipients[0].amount);
Expand Down Expand Up @@ -54,7 +54,7 @@ describe('Apt Token Transfer Builder', () => {

it('should build and send a signed tx', async function () {
const txBuilder = factory.from(testData.FUNGIBLE_TOKEN_TRANSFER);
const tx = (await txBuilder.build()) as FungibleTokenTransfer;
const tx = (await txBuilder.build()) as FungibleAssetTransaction;
console.log('----- tx: ', tx);
should.equal(tx.type, TransactionType.SendToken);
tx.inputs.length.should.equal(1);
Expand All @@ -81,7 +81,7 @@ describe('Apt Token Transfer Builder', () => {
});

it('should succeed to validate a valid signablePayload', async function () {
const transaction = new FungibleTokenTransfer(coins.get('tapt'));
const transaction = new FungibleAssetTransaction(coins.get('tapt'));
const txBuilder = factory.getFungibleTransferTokenBuilder(transaction);
txBuilder.sender(testData.sender2.address);
txBuilder.recipient(testData.fungibleTokenRecipients[0]);
Expand All @@ -93,7 +93,7 @@ describe('Apt Token Transfer Builder', () => {
txBuilder.expirationTime(1736246155);
txBuilder.fungibleTokenAddress(testData.fungibleTokenAddress.usdt);
txBuilder.addFeePayerAddress(testData.feePayer.address);
const tx = (await txBuilder.build()) as FungibleTokenTransfer;
const tx = (await txBuilder.build()) as FungibleAssetTransaction;
const signablePayload = tx.signablePayload;
should.equal(
signablePayload.toString('hex'),
Expand All @@ -102,7 +102,7 @@ describe('Apt Token Transfer Builder', () => {
});

it('should build a unsigned tx and validate its toJson', async function () {
const transaction = new FungibleTokenTransfer(coins.get('tapt'));
const transaction = new FungibleAssetTransaction(coins.get('tapt'));
const txBuilder = factory.getFungibleTransferTokenBuilder(transaction);
txBuilder.sender(testData.sender2.address);
txBuilder.recipient(testData.fungibleTokenRecipients[0]);
Expand All @@ -114,7 +114,7 @@ describe('Apt Token Transfer Builder', () => {
txBuilder.expirationTime(1736246155);
txBuilder.fungibleTokenAddress(testData.fungibleTokenAddress.usdt);
txBuilder.addFeePayerAddress(testData.feePayer.address);
const tx = (await txBuilder.build()) as FungibleTokenTransfer;
const tx = (await txBuilder.build()) as FungibleAssetTransaction;
const toJson = tx.toJson();
should.equal(toJson.sender, testData.sender2.address);
should.deepEqual(toJson.recipient, {
Expand All @@ -131,7 +131,7 @@ describe('Apt Token Transfer Builder', () => {

it('should build a signed tx and validate its toJson', async function () {
const txBuilder = factory.from(testData.FUNGIBLE_TOKEN_TRANSFER);
const tx = (await txBuilder.build()) as FungibleTokenTransfer;
const tx = (await txBuilder.build()) as FungibleAssetTransaction;
const toJson = tx.toJson();
should.equal(toJson.id, '0x2dae2ecd096a212d6f565bd161c92f506cebb700aaf16c88bd3456b88d4c392a');
should.equal(toJson.sender, testData.sender2.address);
Expand Down Expand Up @@ -170,7 +170,7 @@ describe('Apt Token Transfer Builder', () => {
);
});
it('should fail for invalid fungible token address', async function () {
const transaction = new FungibleTokenTransfer(coins.get('tapt'));
const transaction = new FungibleAssetTransaction(coins.get('tapt'));
const txBuilder = factory.getFungibleTransferTokenBuilder(transaction);
should(() => txBuilder.fungibleTokenAddress('randomString')).throwError('Invalid address randomString');
});
Expand Down

0 comments on commit fbb9618

Please sign in to comment.