> ## Documentation Index
> Fetch the complete documentation index at: https://docs.picon.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Instructions

> The full on-chain instruction set and who can call each one

| Instruction                     | Signer                       | Notes                                                                                                                                               |
| ------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_pool`                   | Admin                        | Validates `bin_step`/`fee_rate`/`protocol_share` against the constraint tables. Not permissionless — see [Governance](/concepts/governance).        |
| `create_bin_array`              | Anyone                       | Idempotent-or-error depending on a caller flag.                                                                                                     |
| `delete_bin_array`              | Admin                        | Requires the array to be fully empty; rent returns to the array's original payer, not to the caller.                                                |
| `open_position`                 | Owner                        | Mints a position NFT directly into the signer's own wallet via Token-2022 metadata.                                                                 |
| `close_position`                | Position owner               | Requires the position to be empty — no shares, no fees owed.                                                                                        |
| `deposit_by_weight`             | Position owner               | See [Positions and liquidity](/concepts/positions-and-liquidity).                                                                                   |
| `withdraw`                      | Position owner               | Proportional by bps, rounds down. No slippage parameter — see [Positions and liquidity](/concepts/positions-and-liquidity#withdrawing-and-closing). |
| `claim_fee`                     | Position owner               | Materializes and drains a position's accrued fees for a bin sub-range.                                                                              |
| `claim_protocol_fee`            | Admin                        | Drains `Pool.protocolFeeX/Y` to admin token accounts.                                                                                               |
| `set_pool_dynamic_fee_config`   | Admin                        | Replaces the pool's dynamic-fee config, resetting its volatility state.                                                                             |
| `set_pool_protocol_share`       | Admin                        | Changes a pool's protocol cut of the swap fee post-creation.                                                                                        |
| `swap_exact_in`                 | Any user                     | Permissionless; fixed input, `min_amount_out` floor.                                                                                                |
| `swap_exact_out`                | Any user                     | Permissionless; fixed output, `max_amount_in` ceiling.                                                                                              |
| `sync_pool`                     | Any user                     | Permissionless by design — moves `active_bin_id` toward a desired value only across empty bins, so it can never cross real liquidity.               |
| `create_admin_config`           | Program upgrade authority    | One-time bootstrap of `AdminConfig`.                                                                                                                |
| `reset_admin_authority`         | Program upgrade authority    | Recovery: resets `authority`/`metadata_update_authority` back to the caller.                                                                        |
| `set_metadata_update_authority` | Admin                        | Rotates `AdminConfig.metadataUpdateAuthority`; single-step.                                                                                         |
| `transfer_admin_authority`      | Admin                        | Nominates a new `authority`; first step of a two-step transfer.                                                                                     |
| `accept_admin_authority`        | Nominee (`pendingAuthority`) | Accepts a nomination, completing the transfer.                                                                                                      |

Position ownership (`deposit_by_weight`/`withdraw`/`claim_fee`/`close_position`) is verified
against the position NFT's **direct owner only** — no delegate support.
