import { type StakeInfo, type UserOperation, type ValidationResult } from "../types/index.js"; import type { ReadonlyDeep } from "type-fest"; import { type Address } from "viem"; import type { AltoConfig } from "../createConfig.js"; export interface InterfaceReputationManager { checkReputation(userOp: UserOperation, entryPoint: Address, validationResult: ValidationResult): void; increaseUserOpSeenStatus(userOp: UserOperation, entryPoint: Address): Promise; replaceUserOpSeenStatus(userOp: UserOperation, entryPoint: Address): Promise; decreaseUserOpSeenStatus(userOp: UserOperation, entryPoint: Address, error: string): Promise; increaseUserOpCount(userOp: UserOperation): void; decreaseUserOpCount(userOp: UserOperation): void; getStatus(entryPoint: Address, address: Address | null): ReputationStatus; updateUserOpIncludedStatus(userOp: UserOperation, entryPoint: Address, accountDeployed: boolean): void; crashedHandleOps(userOp: UserOperation, entryPoint: Address, reason: string): void; setReputation(entryPoint: Address, args: ReadonlyDeep<{ address: Address; opsSeen: bigint; opsIncluded: bigint; }[]>): void; dumpReputations(entryPoint: Address): ReputationEntry[]; getStakeStatus(entryPoint: Address, address: Address): Promise<{ stakeInfo: StakeInfo; isStaked: boolean; }>; clear(): void; clearEntityCount(): void; } export declare enum EntityType { Account = "Account", Paymaster = "Paymaster", Factory = "Factory", Aggregator = "Aggregator" } export type ReputationStatus = 0n | 1n | 2n; export declare const ReputationStatuses: { ok: ReputationStatus; throttled: ReputationStatus; banned: ReputationStatus; }; export interface ReputationEntry { address: Address; opsSeen: bigint; opsIncluded: bigint; status?: ReputationStatus; } export interface ReputationParams { minInclusionDenominator: bigint; throttlingSlack: bigint; banSlack: bigint; } export declare const BundlerReputationParams: ReputationParams; export declare class NullReputationManager implements InterfaceReputationManager { checkReputation(_userOp: UserOperation, _entryPoint: Address, _validationResult: ValidationResult): void; increaseUserOpCount(_: UserOperation): void; decreaseUserOpCount(_: UserOperation): void; increaseUserOpSeenStatus(_: UserOperation, _entryPoint: Address): Promise; replaceUserOpSeenStatus(_: UserOperation, _entryPoint: Address): Promise; decreaseUserOpSeenStatus(_: UserOperation, _entryPoint: Address, _error: string): Promise; updateUserOpIncludedStatus(_: UserOperation, _entryPoint: Address, __: boolean): void; crashedHandleOps(_: UserOperation, _entryPoint: Address, __: string): void; setReputation(_: Address, __: { address: Address; opsSeen: bigint; opsIncluded: bigint; }[]): void; dumpReputations(_entryPoint: Address): ReputationEntry[]; getStatus(_entryPoint: Address, _address: `0x${string}` | null): ReputationStatus; getStakeStatus(_entryPoint: Address, _: Address): Promise<{ stakeInfo: StakeInfo; isStaked: boolean; }>; clear(): void; clearEntityCount(): void; } export declare class ReputationManager implements InterfaceReputationManager { private readonly config; private readonly throttledEntityMinMempoolCount; private readonly maxMempoolUserOpsPerSender; private readonly maxMempoolUserOpsPerNewUnstakedEntity; private readonly inclusionRateFactor; private readonly whitelist; private readonly blackList; private readonly bundlerReputationParams; private readonly logger; private entityCount; private entries; constructor(config: AltoConfig); setReputation(entryPoint: Address, reputations: { address: Address; opsSeen: bigint; opsIncluded: bigint; }[]): void; dumpReputations(entryPoint: Address): ReputationEntry[]; clear(): void; clearEntityCount(): void; getStakeStatus(entryPoint: Address, address: Address): Promise<{ stakeInfo: StakeInfo; isStaked: boolean; }>; checkReputation(userOp: UserOperation, entryPoint: Address, validationResult: ValidationResult): void; getEntityCount(address: Address): bigint; increaseSeen(entryPoint: Address, address: Address): void; decreaseSeen(entryPoint: Address, address: Address): void; updateCrashedHandleOps(entryPoint: Address, address: Address): void; crashedHandleOps(userOp: UserOperation, entryPoint: Address, reason: string): void; updateIncludedStatus(entryPoint: Address, address: Address): void; updateUserOpIncludedStatus(userOp: UserOperation, entryPoint: Address, accountDeployed: boolean): void; increaseUserOpSeenStatus(userOp: UserOperation, entryPoint: Address): Promise; replaceUserOpSeenStatus(userOp: UserOperation, entryPoint: Address): Promise; decreaseUserOpSeenStatus(userOp: UserOperation, entryPoint: Address, errorReason: string): Promise; increaseUserOpCount(userOp: UserOperation): void; decreaseUserOpCount(userOp: UserOperation): void; checkReputationStatus(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo, maxMempoolUserOpsPerSenderOverride?: bigint): void; getStatus(entryPoint: Address, address: Address | null): ReputationStatus; checkBanned(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void; checkThrottled(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void; isWhiteListed(address: Address): boolean; checkStake(entryPoint: Address, entityType: EntityType, stakeInfo: StakeInfo): void; calculateMaxMempoolUserOpsPerEntity(entryPoint: Address, address: Address): bigint; } //# sourceMappingURL=reputationManager.d.ts.map