# `nupp.random.spi`
Implementation interfaces consumed during ordinary module initialization.
Discover with nupp.spi.load; the consumer chooses the unique highest priority.
Omitted priority is zero. Importing these declarations loads no implementation.
## Types
### `Provider` _interface_
```nupp
interface Provider ...
```
Cryptographically secure randomness for the executing host.
Use the host secure random source and propagate its failures. Deterministic
pseudo-random generators do not satisfy this contract. Host requests may suspend.
#### Members
| Name | Kind | Description |
| --- | --- | --- |
| [`priority`](#nupp.random.spi.Provider.priority) | field | |
| [`randomBytes`](#nupp.random.spi.Provider.randomBytes) | method | Returns exactly count random bytes. |
#### `priority` _field_
```nupp
priority: integer?
```
`@readonly`
#### `randomBytes` _method_
```nupp
randomBytes: function(count: integer): string
```
`@readonly`
Returns exactly count random bytes. Accepts integers from zero through
1048576; zero returns an empty string. Raises on invalid counts or failure.
##### Arguments
| Name | Type | Description |
| --- | --- | --- |
| `count` | `integer` | |
##### Returns
| Type | Description |
| --- | --- |
| `string` | |