import type { Address } from 'viem'; import type { DecodedIntent } from '../types.js'; export interface PolicyConfig { allowedChainIds: number[]; allowedContracts: `0x${string}`[]; allowedSelectors: `0x${string}`[]; maxAmountWei: bigint; maxDeadlineSeconds: number; } export interface PolicyRequest { chainId: number; to: `0x${string}`; selector?: `0x${string}`; amountWei?: bigint; deadline?: number; } export interface PolicyEvaluation { allowed: boolean; violations: string[]; } export interface PolicyRequestV2 extends PolicyRequest { intent?: DecodedIntent; } export interface ProtocolPolicyConfig { tokenAllowlist?: Address[]; recipientAllowlist?: Address[]; maxSlippageBps?: number; maxInterestRateMode?: number; maxAllowanceWei?: bigint; maxAmountWei?: bigint; } export interface PolicyConfigV2 extends PolicyConfig { protocolPolicies?: Record; } export interface ProtocolPolicyEvaluator { readonly protocol: string; evaluate(intent: DecodedIntent, config: ProtocolPolicyConfig): string[]; }