Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename SetPreSignatureDecoder and usage to GPv2Decoder #1671

Merged
merged 3 commits into from
Jun 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { faker } from '@faker-js/faker';
import { encodeFunctionData, Hex, keccak256, toBytes } from 'viem';
import { Builder } from '@/__tests__/builder';
import { IEncoder } from '@/__tests__/encoder-builder';
import { abi } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { abi } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';

type SetPreSignatureArgs = {
orderUid: `0x${string}`;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import { Hex } from 'viem';
import { faker } from '@faker-js/faker';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { setPreSignatureEncoder } from '@/domain/swaps/contracts/__tests__/encoders/set-pre-signature-encoder.builder';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { setPreSignatureEncoder } from '@/domain/swaps/contracts/__tests__/encoders/gp-v2-encoder.builder';
import { ILoggingService } from '@/logging/logging.interface';

const loggingService = {
debug: jest.fn(),
} as jest.MockedObjectDeep<ILoggingService>;
const loggingServiceMock = jest.mocked(loggingService);

describe('SetPreSignatureDecoder', () => {
let target: SetPreSignatureDecoder;
describe('GPv2Decoder', () => {
let target: GPv2Decoder;

beforeEach(() => {
jest.resetAllMocks();
target = new SetPreSignatureDecoder(loggingServiceMock);
target = new GPv2Decoder(loggingServiceMock);
});

it('decodes a setPreSignature function call correctly', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const abi = parseAbi([
]);

@Injectable()
export class SetPreSignatureDecoder extends AbiDecoder<typeof abi> {
export class GPv2Decoder extends AbiDecoder<typeof abi> {
constructor(
@Inject(LoggingService) private readonly loggingService: ILoggingService,
) {
Expand All @@ -21,7 +21,7 @@ export class SetPreSignatureDecoder extends AbiDecoder<typeof abi> {
* @param data - the transaction data for the setPreSignature call
* @returns {`0x${string}`} the order UID or null if the data does not represent a setPreSignature transaction
*/
getOrderUid(data: `0x${string}`): `0x${string}` | null {
getOrderUidFromSetPreSignature(data: `0x${string}`): `0x${string}` | null {
try {
if (!this.helpers.isSetPreSignature(data)) return null;
const { args } = this.decodeFunctionData({ data });
Expand All @@ -34,7 +34,7 @@ export class SetPreSignatureDecoder extends AbiDecoder<typeof abi> {
}

@Module({
providers: [SetPreSignatureDecoder],
exports: [SetPreSignatureDecoder],
providers: [GPv2Decoder],
exports: [GPv2Decoder],
})
export class SetPreSignatureDecoderModule {}
export class GPv2DecoderModule {}
16 changes: 8 additions & 8 deletions src/routes/transactions/helpers/swap-order.helper.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SwapsRepository } from '@/domain/swaps/swaps.repository';
import { ITokenRepository } from '@/domain/tokens/token.repository.interface';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { faker } from '@faker-js/faker';
import { orderBuilder } from '@/domain/swaps/entities/__tests__/order.builder';
import { tokenBuilder } from '@/domain/tokens/__tests__/token.builder';
Expand All @@ -17,10 +17,10 @@ const swapsRepository = {
} as jest.MockedObjectDeep<SwapsRepository>;
const swapsRepositoryMock = jest.mocked(swapsRepository);

const setPreSignatureDecoder = {
getOrderUid: jest.fn(),
} as jest.MockedObjectDeep<SetPreSignatureDecoder>;
const setPreSignatureDecoderMock = jest.mocked(setPreSignatureDecoder);
const gpv2Decoder = {
getOrderUidFromSetPreSignature: jest.fn(),
} as jest.MockedObjectDeep<GPv2Decoder>;
const gpv2DecoderMock = jest.mocked(gpv2Decoder);

const tokenRepository = {
getToken: jest.fn(),
Expand Down Expand Up @@ -57,7 +57,7 @@ describe('Swap Order Helper tests', () => {

target = new SwapOrderHelper(
multiSendDecoderMock,
setPreSignatureDecoderMock,
gpv2DecoderMock,
tokenRepositoryMock,
swapsRepositoryMock,
configurationServiceMock,
Expand All @@ -77,7 +77,7 @@ describe('Swap Order Helper tests', () => {
.with('buyToken', getAddress(buyToken.address))
.with('sellToken', getAddress(sellToken.address))
.build();
setPreSignatureDecoderMock.getOrderUid.mockReturnValue(
gpv2DecoderMock.getOrderUidFromSetPreSignature.mockReturnValue(
order.uid as `0x${string}`,
);
swapsRepositoryMock.getOrder.mockResolvedValue(order);
Expand Down Expand Up @@ -311,7 +311,7 @@ describe('Swap Order Helper tests', () => {

target = new SwapOrderHelper(
multiSendDecoderMock,
setPreSignatureDecoderMock,
gpv2DecoderMock,
tokenRepositoryMock,
swapsRepositoryMock,
configurationServiceMock,
Expand Down
10 changes: 4 additions & 6 deletions src/routes/transactions/helpers/swap-order.helper.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Inject, Injectable, Module } from '@nestjs/common';
import { MultiSendDecoder } from '@/domain/contracts/decoders/multi-send-decoder.helper';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import {
ITokenRepository,
TokenRepositoryModule,
Expand Down Expand Up @@ -30,7 +30,7 @@ export class SwapOrderHelper {

constructor(
private readonly multiSendDecoder: MultiSendDecoder,
private readonly setPreSignatureDecoder: SetPreSignatureDecoder,
private readonly gpv2Decoder: GPv2Decoder,
@Inject(ITokenRepository)
private readonly tokenRepository: ITokenRepository,
@Inject(ISwapsRepository)
Expand Down Expand Up @@ -147,9 +147,7 @@ export class SwapOrderHelper {

private isSwapOrder(transaction: { data?: `0x${string}` }): boolean {
if (!transaction.data) return false;
return this.setPreSignatureDecoder.helpers.isSetPreSignature(
transaction.data,
);
return this.gpv2Decoder.helpers.isSetPreSignature(transaction.data);
}

/**
Expand Down Expand Up @@ -215,7 +213,7 @@ function allowedAppsFactory(
providers: [
SwapOrderHelper,
MultiSendDecoder,
SetPreSignatureDecoder,
GPv2Decoder,
{
provide: 'SWAP_ALLOWED_APPS',
useFactory: allowedAppsFactory,
Expand Down
8 changes: 4 additions & 4 deletions src/routes/transactions/mappers/common/swap-order.mapper.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Injectable, Module } from '@nestjs/common';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { SwapOrderTransactionInfo } from '@/routes/transactions/entities/swaps/swap-order-info.entity';
import { TokenInfo } from '@/routes/transactions/entities/swaps/token-info.entity';
import {
Expand All @@ -10,7 +10,7 @@ import {
@Injectable()
export class SwapOrderMapper {
constructor(
private readonly setPreSignatureDecoder: SetPreSignatureDecoder,
private readonly gpv2Decoder: GPv2Decoder,
private readonly swapOrderHelper: SwapOrderHelper,
) {}

Expand All @@ -19,7 +19,7 @@ export class SwapOrderMapper {
transaction: { data: `0x${string}` },
): Promise<SwapOrderTransactionInfo> {
const orderUid: `0x${string}` | null =
this.setPreSignatureDecoder.getOrderUid(transaction.data);
this.gpv2Decoder.getOrderUidFromSetPreSignature(transaction.data);
if (!orderUid) {
throw new Error('Order UID not found in transaction data');
}
Expand Down Expand Up @@ -70,7 +70,7 @@ export class SwapOrderMapper {

@Module({
imports: [SwapOrderHelperModule],
providers: [SwapOrderMapper, SetPreSignatureDecoder],
providers: [SwapOrderMapper, GPv2Decoder],
exports: [SwapOrderMapper],
})
export class SwapOrderMapperModule {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { IConfigurationService } from '@/config/configuration.service.interface'
import { IChainsRepository } from '@/domain/chains/chains.repository.interface';
import { MultiSendDecoder } from '@/domain/contracts/decoders/multi-send-decoder.helper';
import { ComposableCowDecoder } from '@/domain/swaps/contracts/decoders/composable-cow-decoder.helper';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { Order } from '@/domain/swaps/entities/order.entity';
import { ISwapsRepository } from '@/domain/swaps/swaps.repository';
import { tokenBuilder } from '@/domain/tokens/__tests__/token.builder';
Expand Down Expand Up @@ -40,13 +40,11 @@ describe('TwapOrderMapper', () => {

beforeEach(() => {
const multiSendDecoder = new MultiSendDecoder();
const setPreSignatureDecoder = new SetPreSignatureDecoder(
mockLoggingService,
);
const gpv2Decoder = new GPv2Decoder(mockLoggingService);
const allowedApps = new Set<string>();
const swapOrderHelper = new SwapOrderHelper(
multiSendDecoder,
setPreSignatureDecoder,
gpv2Decoder,
mockTokenRepository,
mockSwapsRepository,
mockConfigurationService,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { chainBuilder } from '@/domain/chains/entities/__tests__/chain.builder';
import { dataDecodedBuilder } from '@/domain/data-decoder/entities/__tests__/data-decoded.builder';
import { orderBuilder } from '@/domain/swaps/entities/__tests__/order.builder';
import { tokenBuilder } from '@/domain/tokens/__tests__/token.builder';
import { setPreSignatureEncoder } from '@/domain/swaps/contracts/__tests__/encoders/set-pre-signature-encoder.builder';
import { setPreSignatureEncoder } from '@/domain/swaps/contracts/__tests__/encoders/gp-v2-encoder.builder';
import { QueuesApiModule } from '@/datasources/queues/queues-api.module';
import { TestQueuesApiModule } from '@/datasources/queues/__tests__/test.queues-api.module';
import { faker } from '@faker-js/faker';
Expand Down
4 changes: 2 additions & 2 deletions src/routes/transactions/transactions-view.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
TransactionDataDto,
TransactionDataDtoSchema,
} from '@/routes/common/entities/transaction-data.dto.entity';
import { SetPreSignatureDecoderModule } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2DecoderModule } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { ValidationPipe } from '@/validation/pipes/validation.pipe';
import { NumericStringSchema } from '@/validation/entities/schemas/numeric-string.schema';
import { AddressSchema } from '@/validation/entities/schemas/address.schema';
Expand Down Expand Up @@ -70,7 +70,7 @@ export class TransactionsViewController {
@Module({
imports: [
DataDecodedRepositoryModule,
SetPreSignatureDecoderModule,
GPv2DecoderModule,
SwapOrderHelperModule,
],
providers: [TransactionsViewService],
Expand Down
6 changes: 3 additions & 3 deletions src/routes/transactions/transactions-view.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
import { Inject, Injectable } from '@nestjs/common';
import { IDataDecodedRepository } from '@/domain/data-decoder/data-decoded.repository.interface';
import { SwapOrderHelper } from '@/routes/transactions/helpers/swap-order.helper';
import { SetPreSignatureDecoder } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2Decoder } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { DataDecoded } from '@/domain/data-decoder/entities/data-decoded.entity';
import { TokenInfo } from '@/routes/transactions/entities/swaps/token-info.entity';
import { ILoggingService, LoggingService } from '@/logging/logging.interface';
Expand All @@ -17,7 +17,7 @@ export class TransactionsViewService {
constructor(
@Inject(IDataDecodedRepository)
private readonly dataDecodedRepository: IDataDecodedRepository,
private readonly setPreSignatureDecoder: SetPreSignatureDecoder,
private readonly gpv2Decoder: GPv2Decoder,
private readonly swapOrderHelper: SwapOrderHelper,
@Inject(LoggingService) private readonly loggingService: ILoggingService,
) {}
Expand Down Expand Up @@ -64,7 +64,7 @@ export class TransactionsViewService {
dataDecoded: DataDecoded;
}): Promise<CowSwapConfirmationView> {
const orderUid: `0x${string}` | null =
this.setPreSignatureDecoder.getOrderUid(args.data);
this.gpv2Decoder.getOrderUidFromSetPreSignature(args.data);
if (!orderUid) {
throw new Error('Order UID not found in transaction data');
}
Expand Down
4 changes: 2 additions & 2 deletions src/routes/transactions/transactions.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { TransferImitationMapper } from '@/routes/transactions/mappers/transfers
import { TransactionsController } from '@/routes/transactions/transactions.controller';
import { TransactionsService } from '@/routes/transactions/transactions.service';
import { SwapOrderMapperModule } from '@/routes/transactions/mappers/common/swap-order.mapper';
import { SetPreSignatureDecoderModule } from '@/domain/swaps/contracts/decoders/set-pre-signature-decoder.helper';
import { GPv2DecoderModule } from '@/domain/swaps/contracts/decoders/gp-v2-decoder.helper';
import { SafeRepositoryModule } from '@/domain/safe/safe.repository.interface';
import { ContractsRepositoryModule } from '@/domain/contracts/contracts.repository.interface';
import { DataDecodedRepositoryModule } from '@/domain/data-decoder/data-decoded.repository.interface';
Expand All @@ -49,7 +49,7 @@ import { TwapOrderHelperModule } from '@/routes/transactions/helpers/twap-order.
HumanDescriptionRepositoryModule,
SafeRepositoryModule,
SafeAppsRepositoryModule,
SetPreSignatureDecoderModule,
GPv2DecoderModule,
SwapOrderMapperModule,
SwapOrderHelperModule,
TokenRepositoryModule,
Expand Down
Loading