Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
jxom committed Aug 11, 2024
1 parent 92e831e commit dc4bae3
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 33 deletions.
27 changes: 14 additions & 13 deletions src/coinbase/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { parseUnsignedPayload } from "./utils";
*/
export class Transaction {
private model: TransactionModel;
private raw?: viem.Transaction;
private raw?: viem.TransactionSerializable;
private signed: boolean | undefined;

/**
Expand Down Expand Up @@ -107,22 +107,23 @@ export class Transaction {
* @throws {InvalidUnsignedPayload} If the Unsigned Payload is invalid.
* @returns The ethers.js Transaction object
*/
rawTransaction(): viem.Transaction {
rawTransaction(): viem.TransactionSerializable {
if (this.raw) {
return this.raw;
}
const parsedPayload = parseUnsignedPayload(this.getUnsignedPayload());
const transaction = {} as viem.Transaction;
transaction.chainId = Number(parsedPayload.chainId);
transaction.nonce = Number(parsedPayload.nonce);
transaction.maxPriorityFeePerGas = BigInt(parsedPayload.maxPriorityFeePerGas);
transaction.maxFeePerGas = BigInt(parsedPayload.maxFeePerGas);
// TODO: Handle multiple currencies.
transaction.gas = BigInt(parsedPayload.gas);
transaction.to = parsedPayload.to;
transaction.value = BigInt(parsedPayload.value);
transaction.input = parsedPayload.input;

const transaction: viem.TransactionSerializable = {
chainId: Number(parsedPayload.chainId),
data: parsedPayload.input,
nonce: Number(parsedPayload.nonce),
maxPriorityFeePerGas: BigInt(parsedPayload.maxPriorityFeePerGas),
maxFeePerGas: BigInt(parsedPayload.maxFeePerGas),
// TODO: Handle multiple currencies.
gas: BigInt(parsedPayload.gas),
to: parsedPayload.to,
value: BigInt(parsedPayload.value),
};

Check failure on line 126 in src/coinbase/transaction.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `·`
this.raw = transaction;
return this.raw;
}
Expand Down
31 changes: 16 additions & 15 deletions src/coinbase/transfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { parseUnsignedPayload } from "./utils";
*/
export class Transfer {
private model: TransferModel;
private transaction?: viem.Transaction;
private transaction?: viem.TransactionSerializable;

/**
* Private constructor to prevent direct instantiation outside of the factory methods.
Expand Down Expand Up @@ -136,22 +136,23 @@ export class Transfer {
* @returns The ethers.js Transaction object.
* @throws (InvalidUnsignedPayload) If the Unsigned Payload is invalid.
*/
public getTransaction(): viem.Transaction {
public getTransaction(): viem.TransactionSerializable {
if (this.transaction) return this.transaction;

const transaction = {} as viem.Transaction;


Check failure on line 142 in src/coinbase/transfer.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `⏎····`
const parsedPayload = parseUnsignedPayload(this.getUnsignedPayload());

transaction.chainId = Number(parsedPayload.chainId);
transaction.nonce = Number(parsedPayload.nonce);
transaction.maxPriorityFeePerGas = BigInt(parsedPayload.maxPriorityFeePerGas);
transaction.maxFeePerGas = BigInt(parsedPayload.maxFeePerGas);
transaction.gas = BigInt(parsedPayload.gas);
transaction.to = parsedPayload.to;
transaction.value = BigInt(parsedPayload.value);
transaction.input = parsedPayload.input;


Check failure on line 144 in src/coinbase/transfer.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `····`
const transaction: viem.TransactionSerializable = {
chainId: Number(parsedPayload.chainId),
data: parsedPayload.input,
nonce: Number(parsedPayload.nonce),
maxPriorityFeePerGas: BigInt(parsedPayload.maxPriorityFeePerGas),
maxFeePerGas: BigInt(parsedPayload.maxFeePerGas),
gas: BigInt(parsedPayload.gas),
to: parsedPayload.to,
value: BigInt(parsedPayload.value),
};

Check failure on line 155 in src/coinbase/transfer.ts

View workflow job for this annotation

GitHub Actions / lint

Delete `··`
this.transaction = transaction;
return transaction;
}
Expand All @@ -161,7 +162,7 @@ export class Transfer {
*
* @param transaction - The Signed Transaction.
*/
public setSignedTransaction(transaction: viem.Transaction): void {
public setSignedTransaction(transaction: viem.TransactionSerializable): void {
this.transaction = transaction;
}

Expand Down
6 changes: 3 additions & 3 deletions src/tests/transaction_test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Transaction as TransactionModel } from "../client/api";
import { Transaction } from "./../coinbase/transaction";
import { TransactionStatus } from "../coinbase/types";
import { Transaction as Transaction_viem } from "viem";
import { TransactionSerializable } from "viem";
import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";

describe("Transaction", () => {
Expand Down Expand Up @@ -91,7 +91,7 @@ describe("Transaction", () => {
});

describe("#rawTransaction", () => {
let raw: Transaction_viem, rawPayload;
let raw: TransactionSerializable, rawPayload;

beforeEach(() => {
raw = transaction.rawTransaction();
Expand Down Expand Up @@ -127,7 +127,7 @@ describe("Transaction", () => {
});

it("should return the correct input", () => {
expect(raw.input).toEqual(rawPayload.input);
expect(raw.data).toEqual(rawPayload.input);
});

it("should return the same raw transaction when called multiple times", () => {
Expand Down
4 changes: 2 additions & 2 deletions src/tests/transfer_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ describe("Transfer Class", () => {
describe("#setSignedTransaction", () => {
it("should return the unsigned payload", () => {
const transfer = Transfer.fromModel(transferModel);
const transaction = {} as viem.Transaction;
const transaction: viem.TransactionSerializable = {};
transfer.setSignedTransaction(transaction);
expect(transfer.getTransaction()).toEqual(transaction);
});
Expand Down Expand Up @@ -150,7 +150,7 @@ describe("Transfer Class", () => {
expect(transaction.gas).toEqual(BigInt("0x5208"));
expect(transaction.to).toEqual(VALID_TRANSFER_MODEL.destination.toLowerCase());
expect(transaction.value).toEqual(BigInt(amount.toFixed(0)));
expect(transaction.input).toEqual("0x");
expect(transaction.data).toEqual("0x");
});
});

Expand Down

0 comments on commit dc4bae3

Please sign in to comment.