diff --git a/src/contractClients/acpContractClient.ts b/src/contractClients/acpContractClient.ts index 647f0657..1f8d676a 100644 --- a/src/contractClients/acpContractClient.ts +++ b/src/contractClients/acpContractClient.ts @@ -9,6 +9,7 @@ import { encodeFunctionData, Hex, SignTypedDataParameters, + TransactionRequest, } from "viem"; import { AcpContractConfig, baseAcpConfig } from "../configs/acpConfigs"; import AcpError from "../acpError"; @@ -384,6 +385,12 @@ class AcpContractClient extends BaseAcpContractClient { signTypedData(typedData: SignTypedDataParameters): Promise { return this.sessionKeyClient.signTypedData({ typedData }); } + + async sendTransaction(request: TransactionRequest): Promise { + return await this.sessionKeyClient.sendTransaction(request, { + paymasterAndData: "0x", + }); + } } export default AcpContractClient; diff --git a/src/contractClients/acpContractClientV2.ts b/src/contractClients/acpContractClientV2.ts index a0ef061b..374116dd 100644 --- a/src/contractClients/acpContractClientV2.ts +++ b/src/contractClients/acpContractClientV2.ts @@ -1,7 +1,6 @@ import { Address, LocalAccountSigner, SmartAccountSigner } from "@aa-sdk/core"; -import { alchemy, defineAlchemyChain } from "@account-kit/infra"; +import { alchemy } from "@account-kit/infra"; import { - createModularAccountV2, createModularAccountV2Client, ModularAccountV2Client, } from "@account-kit/smart-contracts"; @@ -11,7 +10,7 @@ import { Hex, http, SignTypedDataParameters, - zeroAddress, + TransactionRequest, } from "viem"; import { AcpContractConfig, baseAcpConfigV2 } from "../configs/acpConfigs"; import AcpError from "../acpError"; @@ -33,10 +32,6 @@ import { base, baseSepolia } from "viem/chains"; import MEMO_MANAGER_ABI from "../abis/memoManagerAbi"; class AcpContractClientV2 extends BaseAcpContractClient { - private PRIORITY_FEE_MULTIPLIER = 2; - private MAX_FEE_PER_GAS = 20000000; - private MAX_PRIORITY_FEE_PER_GAS = 21000000; - private GAS_FEE_MULTIPLIER = 0.5; private RETRY_CONFIG = { intervalMs: 200, multiplier: 1.1, @@ -198,7 +193,7 @@ class AcpContractClientV2 extends BaseAcpContractClient { return BigInt("0x" + hex); } - get sessionKeyClient() { + private get sessionKeyClient() { if (!this._sessionKeyClient) { throw new AcpError("Session key client not initialized"); } @@ -214,28 +209,6 @@ class AcpContractClientV2 extends BaseAcpContractClient { return this._acpX402; } - private async calculateGasFees(chainId?: number) { - if (chainId) { - const { maxFeePerGas } = await this.publicClients[ - chainId - ].estimateFeesPerGas(); - - const increasedMaxFeePerGas = - BigInt(maxFeePerGas) + - (BigInt(maxFeePerGas) * BigInt(this.GAS_FEE_MULTIPLIER * 100)) / - BigInt(100); - - return increasedMaxFeePerGas; - } - - const finalMaxFeePerGas = - BigInt(this.MAX_FEE_PER_GAS) + - BigInt(this.MAX_PRIORITY_FEE_PER_GAS) * - BigInt(Math.max(0, this.PRIORITY_FEE_MULTIPLIER - 1)); - - return finalMaxFeePerGas; - } - async handleOperation( operations: OperationPayload[], chainId?: number @@ -409,6 +382,12 @@ class AcpContractClientV2 extends BaseAcpContractClient { async signTypedData(typedData: SignTypedDataParameters): Promise { return await this.sessionKeyClient.signTypedData({ typedData }); } + + async sendTransaction(request: TransactionRequest): Promise { + return await this.sessionKeyClient.sendTransaction(request, { + paymasterAndData: "0x", + }); + } } export default AcpContractClientV2; diff --git a/src/contractClients/baseAcpContractClient.ts b/src/contractClients/baseAcpContractClient.ts index aa905efd..89785cab 100644 --- a/src/contractClients/baseAcpContractClient.ts +++ b/src/contractClients/baseAcpContractClient.ts @@ -12,6 +12,7 @@ import { zeroAddress, SignTypedDataParameters, Hex, + TransactionRequest, } from "viem"; import { AcpContractConfig, baseAcpConfig } from "../configs/acpConfigs"; import ACP_V2_ABI from "../abis/acpAbiV2"; @@ -603,6 +604,8 @@ abstract class BaseAcpContractClient { abstract getAcpVersion(): string; abstract signTypedData(typedData: SignTypedDataParameters): Promise; + + abstract sendTransaction(request: TransactionRequest): Promise; } export default BaseAcpContractClient;