Overview

flowchart TD
    AA[validate inbound traffic IP address, request payload, and signatures] -->|success| A
    AA -->|faliure| F[revert]

    A[is deposit?] -->|yes| B[ verify approvals, check balance, EOA<->SA mapping]
    A -->|no| C[is withdrawal && is withdrawal hold?]

    B -->|success| D[send to relayer]
    B -->|failure| F

    D -->|success| E["update equity (MySQL)"]
    E --> O["post event (BigQuery)"]

    D -->|failure| F[revert]

    C -->|yes| F["revert"]
    C -->|no| G[is closing trade && is perp?]

    G -->|no| J["perform risk check"]
    G -->|yes| I["update accrued funding"]

    %% Links available outside of diagram:
    %% - Risk check process: ./sequencer-risk-check.md
    %% - Funding rate process: ../fundingRateService.md
    I --> J

    J -->|failure| F
    J -->|success| H["update equity (MySQL)"]

    H --> P[is withdrawal?]
    P -->|yes| K[send to relayer]

    K -->|failure| L["credit equity (MySQL)"]
    K -->|success| M[send tx. confirmation]

    L --> F

    M --> N["post event (BigQuery)"]
    P --> |no| N