pub struct DefaultPolicyEngine { /* private fields */ }Expand description
Default policy engine implementation.
Evaluates transactions against configured whitelist, blacklist, and limit rules.
Uses TransactionHistory for tracking daily spending totals.
§Rule Evaluation Order
- Blacklist check (highest priority)
- Whitelist check (if enabled)
- Transaction limit check
- Daily limit check
- Allow (if all checks pass)
§Thread Safety
This struct is Send + Sync and can be safely shared across threads.
The underlying TransactionHistory handles concurrent access.
Implementations§
Source§impl DefaultPolicyEngine
impl DefaultPolicyEngine
Sourcepub fn new(
config: PolicyConfig,
history: Arc<TransactionHistory>,
) -> Result<Self, PolicyError>
pub fn new( config: PolicyConfig, history: Arc<TransactionHistory>, ) -> Result<Self, PolicyError>
Creates a new policy engine with the given configuration and history.
§Arguments
config- Policy configuration with whitelist, blacklist, and limitshistory- Transaction history for tracking daily totals
§Returns
A new DefaultPolicyEngine instance.
§Errors
Returns PolicyError::InvalidConfiguration if the configuration is invalid
(e.g., an address appears in both whitelist and blacklist).
§Example
use txgate_policy::engine::DefaultPolicyEngine;
use txgate_policy::config::PolicyConfig;
use txgate_policy::history::TransactionHistory;
use alloy_primitives::U256;
use std::sync::Arc;
let config = PolicyConfig::new()
.with_whitelist(vec!["0xAAA".to_string()])
.with_transaction_limit("ETH", U256::from(5_000_000_000_000_000_000u64));
let history = Arc::new(TransactionHistory::in_memory().unwrap());
let engine = DefaultPolicyEngine::new(config, history).unwrap();Trait Implementations§
Source§impl Debug for DefaultPolicyEngine
impl Debug for DefaultPolicyEngine
Source§impl PolicyEngine for DefaultPolicyEngine
impl PolicyEngine for DefaultPolicyEngine
Auto Trait Implementations§
impl Freeze for DefaultPolicyEngine
impl !RefUnwindSafe for DefaultPolicyEngine
impl Send for DefaultPolicyEngine
impl Sync for DefaultPolicyEngine
impl Unpin for DefaultPolicyEngine
impl !UnwindSafe for DefaultPolicyEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more