flowchart LR
    U[Пользователь / signer]
    B[Покупатель тикета]
    M[Менеджер]
    C[Любой caller step_payout]

    LG[1. shine_login_guard<br/>classify_login]
    USERS[2. shine_users<br/>create_user_pda / update_user_pda]
    PAY[3. shine_payments<br/>vault / tickets / payouts]
    DAO[SHiNE DAO<br/>governance / authority / treasury]

    USERPDA[(user_pda<br/>по login)]
    ECON[(users_economy_config_pda)]
    CONFIG[(config_pda)]
    COEF[(coef_limit_pda)]
    QUEUES[(queues_pda)]
    VAULT[(inflow_vault_pda)]
    TICKET[(ticket_pda)]
    ALLOW[(manager_allowance_pda)]

    U -->|логин| USERS
    USERS -->|CPI проверка| LG
    USERS -->|создает/обновляет| USERPDA
    USERS -->|читает экономику| ECON
    U -->|регистрация / лимит| VAULT

    DAO -->|update economy| USERS
    DAO -->|update coef/limit| PAY
    DAO -->|grant manager limits| PAY
    DAO -->|создает/отзывает ключи| DAO

    PAY --> CONFIG
    PAY --> COEF
    PAY --> QUEUES
    PAY --> VAULT
    PAY --> TICKET
    PAY --> ALLOW

    B -->|buy_ticket*| PAY
    B -->|оплата покупки тикета| DAO
    PAY -->|создает тикет| TICKET

    M -->|manager_add_ticket| PAY
    ALLOW -->|лимиты Q1/Q2| M

    C -->|step_payout| PAY
    VAULT -->|выплата тикета| U
    VAULT -->|DAO-часть| DAO
    VAULT -->|call reward| C

    DAO -. upgrade authority после передачи .-> USERS
    DAO -. upgrade authority после передачи .-> PAY
    DAO -. позже возможно .-> LG

