import { Runtime, RuntimeModulesRecord } from "@proto-kit/module"; import { BeforeTransactionHookArguments, ProvableTransactionHook, PublicKeyOption, StateMap } from "@proto-kit/protocol"; import { PublicKey } from "o1js"; import { UInt64 } from "../math/UInt64"; import { Balance, BalancesKey, TokenId } from "../runtime/Balances"; import { MethodFeeConfigData, RuntimeFeeAnalyzerService, RuntimeFeeAnalyzerServiceConfig } from "./RuntimeFeeAnalyzerService"; interface Balances { transfer: (tokenId: TokenId, from: PublicKey, to: PublicKey, amount: Balance) => Promise; balances: StateMap; } export interface TransactionFeeHookConfig extends RuntimeFeeAnalyzerServiceConfig { } /** * Transaction hook for deducting transaction fees from the sender's balance. */ export declare class TransactionFeeHook extends ProvableTransactionHook { runtime: Runtime; balances: Balances; constructor(runtime: Runtime, balances: Balances); protected persistedFeeAnalyzer: RuntimeFeeAnalyzerService | undefined; verifyConfig(): void; start(): Promise; get config(): TransactionFeeHookConfig; set config(value: TransactionFeeHookConfig); get feeAnalyzer(): RuntimeFeeAnalyzerService; transferFee(from: PublicKeyOption, fee: UInt64): Promise; getFee(feeConfig: MethodFeeConfigData): import("..").UInt<64>; /** * Determine the transaction fee for the given transaction, and transfer it * from the transaction sender to the fee recipient. * * @param executionData */ beforeTransaction({ transaction: { transaction }, }: BeforeTransactionHookArguments): Promise; afterTransaction(): Promise; removeTransactionWhen({ transaction, }: BeforeTransactionHookArguments): Promise; } export {}; //# sourceMappingURL=TransactionFeeHook.d.ts.map