# Движение Средств (Shine)

Документ описывает, как перемещаются средства между счетами в текущей схеме.

## 1) Регистрация и увеличение лимита (`shine_users`)

### Регистрация пользователя (`create_user_pda`)

1. Плательщик: кошелек `signer` (кто отправил транзакцию).
2. Получатель комиссии: `inflow_vault` (PDA в программе `shine_payments`).
3. Сумма перевода:
   - `registration_fee_lamports` из economy-конфига `shine_users`;
   - плюс комиссия за `additional_limit` (по формуле через `limit_step` и `lamports_per_limit_step`).

### Увеличение лимита (`update_user_pda`)

1. Плательщик: кошелек `signer`.
2. Получатель комиссии: `inflow_vault` (тот же PDA `shine_payments`).
3. Сумма перевода:
   - только комиссия за `additional_limit` (без регистрационной части).

## 2) Покупка билета (`shine_payments`)

### Покупка (`buy_ticket`, `buy_ticket_usd`, `buy_ticket_sol`)

1. Плательщик: кошелек покупателя (`signer`).
2. Получатель: `dao_wallet` (казна DAO из `ConfigState`).
3. В `inflow_vault` на этом шаге средства не зачисляются.

## 3) Шаг выплат (`shine_payments::step_payout`)

Источник выплат: `inflow_vault` (`ConfigState.inflow_vault`).

Порядок очередей:
1. сначала `Q1`;
2. потом `Q2`;
3. потом `Q3`.

При шаге выплаты:
1. Из `inflow_vault` переводится `ticket` получателю тикета.
2. Из `inflow_vault` переводится DAO-часть в `dao_wallet`.
   - для `Q1` это `1x payout_usd`;
   - для `Q2` это `2x payout_usd`;
   - для `Q3` это `3x payout_usd`;
3. Из `inflow_vault` переводится `call_reward_lamports` вызывающему шаг.

Если очереди пусты:
1. Весь доступный остаток `inflow_vault` переводится в `dao_wallet`.

## 4) Какие адреса задаются настройками

1. `dao_wallet` — хранится в `ConfigState` (`shine_payments`), задается при `init`.
2. `inflow_vault` — PDA `shine_payments`, вычисляется по seed и program id.
3. Для `shine_users` получатель комиссии не настраивается отдельно:
   - всегда используется PDA `inflow_vault` программы `shine_payments`.
