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

# Contract parameters

> Define typed values, constraints, validation expressions, and confidentiality

Parameters turn an approved structure into a reusable template. The contract library supports these parameter families:

* boolean;
* string;
* numerical;
* date, date-time, time, and duration;
* geographic coordinate;
* attachment;
* calculated value;
* role/identity property reference;
* contract reference.

## Common fields

Every parameter has a stable `Name`, localized description, optional guide text, optional validation `Expression`, and a `Protection` level. Range types add minimum/maximum values and inclusive/exclusive bounds; strings can add length or pattern constraints.

## Validation expressions

The `Expression` is evaluated with contract parameters exposed as Script variables. Return `false` to reject the value:

```text theme={null}
Quantity>0 AND UnitPrice>=0
```

Keep expressions deterministic. Do not depend on wall-clock time, mutable external services, or server-local state unless the contract protocol explicitly defines that dependency. The server remains the final validator.

## Protection levels

| Level       | Storage/signature behavior                                                     | Use                                      |
| ----------- | ------------------------------------------------------------------------------ | ---------------------------------------- |
| `Normal`    | Clear value is serialized                                                      | Public contract data                     |
| `Encrypted` | Creator encrypts the value; protected bytes are serialized                     | Data shared only with authorized parties |
| `Transient` | Clear value is not persisted; a generated GUID is used in the signed structure | Data needed only in transit              |

For encrypted parameters, the creator creates encryption/decryption keys and shares them with parties over end-to-end encrypted communication. A nonce and parameter position/name/type contribute to protection.

## Template rules

* Give each parameter a unique, stable name.
* Put units in a typed unit/field or description, never only in a UI label.
* Validate relationships between parameters in addition to individual ranges.
* Explain every parameter in the human-readable text using parameter-value elements.
* Treat changing a parameter's meaning as a new template version.
* Do not place secrets in normal parameters of a public/searchable contract.
