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

# Record reference

> Position, compliance, and dynamic token records in the current protocol.

Records are encrypted state objects. Their ciphertexts and commitments appear on chain. An authorized holder uses view material to decrypt their contents.

## `PositionNFT`

| Field        | Type      | Purpose                                     |
| ------------ | --------- | ------------------------------------------- |
| `owner`      | `address` | Account authorized to consume the record    |
| `withdrawal` | `address` | Immutable recipient for every later collect |
| `token_id`   | `field`   | Public position identifier                  |
| `token0_id`  | `field`   | Canonical pool token0 ID                    |
| `token1_id`  | `field`   | Canonical pool token1 ID                    |
| `pool`       | `field`   | Pool key                                    |
| `tick_lower` | `i32`     | Inclusive lower boundary                    |
| `tick_upper` | `i32`     | Exclusive upper boundary                    |

Mint creates the record. Increase, decrease, and collect consume it and return a replacement. Burn consumes it without replacement. `PositionNFT` is a Leo record, not an ARC-721 token.

## `SwapComplianceRecord`

Single-hop swap creates this investigator-owned record. It contains `owner`, `swap_id`, `token_in`, `token_out`, the full `SwapRequest`, `caller`, `signer`, and `blinded_address`.

## `MultiHopSwapComplianceRecord`

Multi-hop swap creates this investigator-owned record. It contains `owner`, `swap_id`, the full `SwapMultiHopRequest`, `caller`, `signer`, and `blinded_address`.

## `MintComplianceRecord`

| Field        | Type                  | Purpose                                          |
| ------------ | --------------------- | ------------------------------------------------ |
| `owner`      | `address`             | Investigator recipient                           |
| `token_id`   | `field`               | Public position identifier                       |
| `token0_id`  | `field`               | Pool token0 ID                                   |
| `token1_id`  | `field`               | Pool token1 ID                                   |
| `nonce`      | `field`               | Private mint nonce disclosed to the record owner |
| `request`    | `MintPositionRequest` | Range, amounts, minimums, and hints              |
| `caller`     | `address`             | Immediate caller                                 |
| `signer`     | `address`             | Top-level signer                                 |
| `recipient`  | `address`             | `PositionNFT` owner                              |
| `withdrawal` | `address`             | Immutable payout address                         |

## Dynamic token records

The AMM accepts and returns `dyn record` values. The selected token program defines the concrete record schema. Plain ARC-20, wrapped credits, and wrapped ARC-22 assets can therefore use different source programs and amount types at the router boundary.

Use the deployment contract registry to resolve the AMM token program, underlying record program, token field ID, decimals, and record amount type for each asset.
