# User Flow

```
// struct for mint_request
mint_request$_ {
  message:IncomingMessage
  ton_amount:uint64
  prices_packed:^Cell
} = MintRequest;

// struct for mint_process
mint_process$_ {
  op:uint32
  query_id:uint64
  sender_address:MsgAddress
  prices_packed:^Cell
  ton_amount:uint64
  last_invoke:uint32
  deposited_ton:uint64
  synt_minted:uint64
} = MintProcess;

// struct for mint_success
mint_success$_ {
  message:IncomingMessage
  synts_amount_to_mint:uint64
  last_invoke:uint32
  ton_amount:uint64
  next_epoch_index:uint16
  next_fees_epoch_started_at:uint32
} = MintSuccess;


```

This scheme describes about mint body in process transaction. And we have example from transaction scanner:

{% embed url="<https://tonviewer.com/transaction/b40ccad21e9f1de6c64aed804a908466b0f8f610a6ed7ac7cdff3029e7a8d461>" %}

Transaction can started from init mint transaction and give request to jetton\_minter. So, if jetton\_wallet doesn't exist jetton\_minter create new Syde jetton\_wallet. Native wallet can take some tons who can exist in mint transaction. If tons enough transaction successfully finish and give your synths. If tons not enough transaction bounced and tons give sender back.

```
// struct for burn_process
burn_process$_ {
  op:uint32
  query_id:uint64
  sender_address:MsgAddress
  prices_packed:^Cell
  synts_amount_to_burn:uint64
  deposited_ton:uint64
  synt_minted:uint64
  last_invoke:uint32
  minimal_user_stake_in_current_epoch:uint64
} = BurnProcess;

// struct for burn_success
burn_success$_ {
  op:uint32
  query_id:uint64
  sender_address:MsgAddress
  synt_amount_to_burn:uint64
  ton_to_withdraw:uint64
} = BurnSuccess;

// struct for burn_success_fees_return
burn_success_fees_return$_ {
  op:uint32
  query_id:uint64
} = BurnSuccessFeesReturn;

// struct for burn_fail_fees_return
burn_fail_fees_return$_ {
  op:uint32
  query_id:uint64
} = BurnFailFeesReturn;


```

This scheme describes about mint body in process transaction. And we have example from transaction scanner:

{% embed url="<https://tonviewer.com/transaction/6319716665373befdc301aa7d768ee272861f68e184438e112b258f862c144b4>" %}

Transaction can started from init burn transaction and give request to jetton\_minter. Next step is checking exist of jetton\_wallet. Native wallet can take some tons who can exist in burn transaction. If tons and synth enough transaction successfully finish and give your ton's. If tons not enough transaction bounced and synth give sender back.
