# Bridge Alert Configuration
# For use with Prometheus Alertmanager

groups:
  - name: bridge_critical
    interval: 30s
    rules:
      - alert: ContractPaused
        expr: bridge_contract_paused == 1
        for: 0m
        labels:
          severity: critical
        annotations:
          summary: "Bridge contract has been paused"
          description: "Contract {{ $labels.contract }} is paused. Immediate action required."

      - alert: AdminChanged
        expr: bridge_admin_changed == 1
        for: 0m
        labels:
          severity: critical
        annotations:
          summary: "Admin address changed on bridge contract"
          description: "Admin address changed on {{ $labels.contract }}. Verify this is authorized."

      - alert: LargeValueTransfer
        expr: bridge_transfer_amount > 10000000000000000000  # 10 ETH
        for: 0m
        labels:
          severity: warning
        annotations:
          summary: "Large value transfer detected"
          description: "Transfer of {{ $value }} wei detected on {{ $labels.contract }}"

      - alert: FailedChallenge
        expr: increase(bridge_challenge_failed[5m]) > 0
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Failed challenge detected"
          description: "{{ $value }} failed challenges in the last 5 minutes"

      - alert: LiquidityPoolLow
        expr: (bridge_liquidity_available / bridge_liquidity_pending_claims) < 1.1
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Liquidity pool below minimum ratio"
          description: "Liquidity pool ratio is {{ $value }}, below minimum of 1.1"

      - alert: NoChallenges24h
        expr: increase(bridge_challenges_total[24h]) == 0
        for: 24h
        labels:
          severity: warning
        annotations:
          summary: "No challenges in 24 hours"
          description: "No challenges detected in the last 24 hours. This may indicate a monitoring gap."

      - alert: BondSlashing
        expr: increase(bridge_bonds_slashed[1h]) > 0
        for: 0m
        labels:
          severity: warning
        annotations:
          summary: "Bond slashing detected"
          description: "{{ $value }} bonds slashed in the last hour"

      - alert: ChallengeWindowExpiring
        expr: (bridge_challenge_window_end - time()) < 300  # 5 minutes
        for: 0m
        labels:
          severity: info
        annotations:
          summary: "Challenge window expiring soon"
          description: "Challenge window for deposit {{ $labels.deposit_id }} expires in {{ $value }} seconds"

  - name: bridge_operational
    interval: 1m
    rules:
      - alert: RPCUnavailable
        expr: up{job="bridge_rpc"} == 0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "RPC endpoint unavailable"
          description: "RPC endpoint {{ $labels.instance }} is down"

      - alert: HighGasPrices
        expr: eth_gas_price > 100000000000  # 100 gwei
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "High gas prices detected"
          description: "Gas price is {{ $value }} wei, consider delaying non-critical operations"

      - alert: LowContractBalance
        expr: eth_balance{contract="bridge"} < 1000000000000000000  # 1 ETH
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Low contract balance"
          description: "Contract {{ $labels.contract }} balance is {{ $value }} wei"

      - alert: SlowFinalization
        expr: (time() - bridge_claim_timestamp) > 3600  # 1 hour
        for: 1h
        labels:
          severity: warning
        annotations:
          summary: "Slow claim finalization"
          description: "Claim {{ $labels.deposit_id }} has been pending for {{ $value }} seconds"

