blob: 4d2ec16ddc96920e61baaaee268bcb7634c6306b [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.component.decl
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **STRUCTS**
### CapabilityRef {#CapabilityRef data-text="CapabilityRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=49)*
<p>A reference to a capability declared in this component.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CapabilityRef.name">
<td><code>name</code></td>
<td>
<code>string[100]</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ChildRef {#ChildRef data-text="ChildRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=29)*
<p>A reference to one of the component's child instances.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ChildRef.name">
<td><code>name</code></td>
<td>
<code><a class='link' href='#child_name'>child_name</a></code>
</td>
<td><p>The name assigned to the child by its parent. If <code>collection</code> is set,
<code>name</code> is scoped to <code>collection</code> and the child is a dynamic instance.
Required.</p>
</td>
<td>No default</td>
</tr>
<tr id="ChildRef.collection">
<td><code>collection</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The collection <code>name</code> belongs to. If omitted, <code>name</code> references a static
instance. This field must be omitted if the <code>ChildRef</code> is being used in
a component declaration. Optional.</p>
</td>
<td>No default</td>
</tr>
</table>
### CollectionRef {#CollectionRef data-text="CollectionRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=41)*
<p>A reference to one of the component's collections.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="CollectionRef.name">
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### ConfigType {#ConfigType data-text="ConfigType"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=50)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="ConfigType.layout">
<td><code>layout</code></td>
<td>
<code><a class='link' href='#ConfigTypeLayout'>ConfigTypeLayout</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ConfigType.parameters">
<td><code>parameters</code></td>
<td>
<code>vector&lt;<a class='link' href='#LayoutParameter'>LayoutParameter</a>&gt;?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="ConfigType.constraints">
<td><code>constraints</code></td>
<td>
<code>vector&lt;<a class='link' href='#LayoutConstraint'>LayoutConstraint</a>&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DebugRef {#DebugRef data-text="DebugRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=26)*
<p>A reference to the environment's debug capabilities.</p>
&lt;EMPTY&gt;
### FrameworkRef {#FrameworkRef data-text="FrameworkRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=46)*
<p>A reference to the component framework itself.</p>
&lt;EMPTY&gt;
### NameMapping {#NameMapping data-text="NameMapping"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=39)*
<p>Type used to create a mapping between 2 names. Used to rename service or component instances
in FIDL declarations.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="NameMapping.source_name">
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name used in the source instance.</p>
</td>
<td>No default</td>
</tr>
<tr id="NameMapping.target_name">
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name used in the target instance.</p>
</td>
<td>No default</td>
</tr>
</table>
### ParentRef {#ParentRef data-text="ParentRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=20)*
<p>A reference to a component's parent instance.</p>
&lt;EMPTY&gt;
### SelfRef {#SelfRef data-text="SelfRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=23)*
<p>A reference to the component itself.</p>
&lt;EMPTY&gt;
### VoidRef {#VoidRef data-text="VoidRef"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=54)*
<p>A reference to an intentionally missing offer source.</p>
&lt;EMPTY&gt;
## **ENUMS**
### AllowedOffers [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#AllowedOffers data-text="AllowedOffers"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/collection.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/collection.fidl;l=65)*
<p>The kinds of offers that can target the children in a collection.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="AllowedOffers.STATIC_ONLY">
<td><h3 id="AllowedOffers.STATIC_ONLY" class="add-link hide-from-toc">STATIC_ONLY</h3></td>
<td><code>1</code></td>
<td><p>Only static offers may target components in the collection. &quot;Static
offers&quot; are the offers in the <code>ComponentDecl</code> that target the collection
itself.</p>
<p>This is the default behavior.</p>
</td>
</tr>
<tr id="AllowedOffers.STATIC_AND_DYNAMIC">
<td><h3 id="AllowedOffers.STATIC_AND_DYNAMIC" class="add-link hide-from-toc">STATIC_AND_DYNAMIC</h3></td>
<td><code>2</code></td>
<td><p>Both static offers and dynamic offers may target components in the
collection. &quot;Static offers&quot; are the offers in the <code>ComponentDecl</code> that
target the collection itself. &quot;Dynamic offers&quot; are additional offers
that are passed to <code>CreateChild</code> at runtime.</p>
</td>
</tr>
</table>
### Availability [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Availability data-text="Availability"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=48)*
<p>Describes the expected availability of the capability.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Availability.REQUIRED">
<td><h3 id="Availability.REQUIRED" class="add-link hide-from-toc">REQUIRED</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="Availability.OPTIONAL">
<td><h3 id="Availability.OPTIONAL" class="add-link hide-from-toc">OPTIONAL</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="Availability.SAME_AS_TARGET">
<td><h3 id="Availability.SAME_AS_TARGET" class="add-link hide-from-toc">SAME_AS_TARGET</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="Availability.TRANSITIONAL">
<td><h3 id="Availability.TRANSITIONAL" class="add-link hide-from-toc">TRANSITIONAL</h3></td>
<td><code>4</code></td>
<td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div>
</td>
</tr>
</table>
### ConfigTypeLayout [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConfigTypeLayout data-text="ConfigTypeLayout"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=60)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ConfigTypeLayout.BOOL">
<td><h3 id="ConfigTypeLayout.BOOL" class="add-link hide-from-toc">BOOL</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.UINT8">
<td><h3 id="ConfigTypeLayout.UINT8" class="add-link hide-from-toc">UINT8</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.UINT16">
<td><h3 id="ConfigTypeLayout.UINT16" class="add-link hide-from-toc">UINT16</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.UINT32">
<td><h3 id="ConfigTypeLayout.UINT32" class="add-link hide-from-toc">UINT32</h3></td>
<td><code>4</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.UINT64">
<td><h3 id="ConfigTypeLayout.UINT64" class="add-link hide-from-toc">UINT64</h3></td>
<td><code>5</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.INT8">
<td><h3 id="ConfigTypeLayout.INT8" class="add-link hide-from-toc">INT8</h3></td>
<td><code>6</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.INT16">
<td><h3 id="ConfigTypeLayout.INT16" class="add-link hide-from-toc">INT16</h3></td>
<td><code>7</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.INT32">
<td><h3 id="ConfigTypeLayout.INT32" class="add-link hide-from-toc">INT32</h3></td>
<td><code>8</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.INT64">
<td><h3 id="ConfigTypeLayout.INT64" class="add-link hide-from-toc">INT64</h3></td>
<td><code>9</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.STRING">
<td><h3 id="ConfigTypeLayout.STRING" class="add-link hide-from-toc">STRING</h3></td>
<td><code>10</code></td>
<td></td>
</tr>
<tr id="ConfigTypeLayout.VECTOR">
<td><h3 id="ConfigTypeLayout.VECTOR" class="add-link hide-from-toc">VECTOR</h3></td>
<td><code>11</code></td>
<td></td>
</tr>
</table>
### DependencyType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DependencyType data-text="DependencyType"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=24)*
<p>Describes the type of dependency implied by the capability.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="DependencyType.STRONG">
<td><h3 id="DependencyType.STRONG" class="add-link hide-from-toc">STRONG</h3></td>
<td><code>1</code></td>
<td><p>A strong dependency which may be required by components that use it.</p>
</td>
</tr>
<tr id="DependencyType.WEAK">
<td><h3 id="DependencyType.WEAK" class="add-link hide-from-toc">WEAK</h3></td>
<td><code>2</code></td>
<td><p>A weak dependency which is allowed to form a cycle. Components that use
a weak dependency must support the dependency being unavailable at
arbitrary times.</p>
</td>
</tr>
<tr id="DependencyType.WEAK_FOR_MIGRATION">
<td><h3 id="DependencyType.WEAK_FOR_MIGRATION" class="add-link hide-from-toc">WEAK_FOR_MIGRATION</h3></td>
<td><code>3</code></td>
<td><p>A weak dependency specifically used to mark cyclic dependencies from
migrated v1 components.</p>
</td>
</tr>
</table>
### Durability [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Durability data-text="Durability"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/collection.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/collection.fidl;l=52)*
<p>The durability of component instances created in a collection.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Durability.TRANSIENT">
<td><h3 id="Durability.TRANSIENT" class="add-link hide-from-toc">TRANSIENT</h3></td>
<td><code>2</code></td>
<td><p>An instance exists until either its parent instance is stopped
or it is explicitly destroyed.</p>
</td>
</tr>
<tr id="Durability.SINGLE_RUN">
<td><h3 id="Durability.SINGLE_RUN" class="add-link hide-from-toc">SINGLE_RUN</h3></td>
<td><code>3</code></td>
<td><p>An instance is started upon creation and is immediately destroyed when
it stops.</p>
</td>
</tr>
</table>
### EnvironmentExtends [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EnvironmentExtends data-text="EnvironmentExtends"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=40)*
<p>Specifies how a declared environment's initial set of properties are assigned.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="EnvironmentExtends.NONE">
<td><h3 id="EnvironmentExtends.NONE" class="add-link hide-from-toc">NONE</h3></td>
<td><code>0</code></td>
<td><p>The environment has no initial set of properties.</p>
</td>
</tr>
<tr id="EnvironmentExtends.REALM">
<td><h3 id="EnvironmentExtends.REALM" class="add-link hide-from-toc">REALM</h3></td>
<td><code>1</code></td>
<td><p>The environment's initial set of properties are inherited from its realm.
Inherited properties include any fields defined in <code>EnvironmentDecl</code>.</p>
</td>
</tr>
</table>
### OnTerminate [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#OnTerminate data-text="OnTerminate"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/child.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/child.fidl;l=53)*
<p>Describes the action to take if this component instance terminates
unexpectedly.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="OnTerminate.NONE">
<td><h3 id="OnTerminate.NONE" class="add-link hide-from-toc">NONE</h3></td>
<td><code>0</code></td>
<td><p>No action, the default</p>
</td>
</tr>
<tr id="OnTerminate.REBOOT">
<td><h3 id="OnTerminate.REBOOT" class="add-link hide-from-toc">REBOOT</h3></td>
<td><code>1</code></td>
<td><p>Trigger a graceful system reboot if the component terminates for any
reason. This is a specialized feature gated by Component Framework
security policy.</p>
</td>
</tr>
</table>
### StartupMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#StartupMode data-text="StartupMode"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/child.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/child.fidl;l=42)*
<p>Describes under what conditions the component may be started.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="StartupMode.LAZY">
<td><h3 id="StartupMode.LAZY" class="add-link hide-from-toc">LAZY</h3></td>
<td><code>0</code></td>
<td><p>Start component instance only when another instance binds to it.</p>
</td>
</tr>
<tr id="StartupMode.EAGER">
<td><h3 id="StartupMode.EAGER" class="add-link hide-from-toc">EAGER</h3></td>
<td><code>1</code></td>
<td><p>Start component instance as soon as parent starts. This mode is only
supported for statically declared children -- a dynamic instance may only be
started by binding to it.</p>
</td>
</tr>
</table>
### StorageId [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#StorageId data-text="StorageId"}
Type: <code>uint32</code>
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=84)*
<p>Declares which identifier to use to key a component's isolated storage directory.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="StorageId.STATIC_INSTANCE_ID">
<td><h3 id="StorageId.STATIC_INSTANCE_ID" class="add-link hide-from-toc">STATIC_INSTANCE_ID</h3></td>
<td><code>1</code></td>
<td><p>Isolated storage directories are keyed using a component's instance ID specified in the
component ID index. Components which are not listed in the index cannot use or open this
storage capability.</p>
</td>
</tr>
<tr id="StorageId.STATIC_INSTANCE_ID_OR_MONIKER">
<td><h3 id="StorageId.STATIC_INSTANCE_ID_OR_MONIKER" class="add-link hide-from-toc">STATIC_INSTANCE_ID_OR_MONIKER</h3></td>
<td><code>2</code></td>
<td><p>Isolated storage directories are keyed using a component's instance ID if one is specified
in the component ID index. Otherwise, a component's relative moniker from the storage
capability is used to key its isolated storage directory.</p>
</td>
</tr>
</table>
## **TABLES**
### Child {#Child data-text="Child"}
*Defined in [fuchsia.component.decl/child.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/child.fidl;l=9)*
<p>Statically declares a child component instance.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Child.name">
<td><h3 id="Child.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#child_name'>child_name</a></code>
</td>
<td><p>The name assigned to the child by its parent.</p>
<p>Must be non-empty, unique among all siblings, and contain only the
following characters: [a-z0-9-_.].</p>
</td>
</tr>
<tr id="Child.url">
<td><h3 id="Child.url" class="add-link hide-from-toc">2</h3></td>
<td><code>url</code></td>
<td>
<code><a class='link' href='../fuchsia.url/'>fuchsia.url</a>/<a class='link' href='../fuchsia.url/#Url'>Url</a></code>
</td>
<td><p>The child component's URL.</p>
<p>Must be non-empty and a well-formed URL.</p>
</td>
</tr>
<tr id="Child.startup">
<td><h3 id="Child.startup" class="add-link hide-from-toc">3</h3></td>
<td><code>startup</code></td>
<td>
<code><a class='link' href='#StartupMode'>StartupMode</a></code>
</td>
<td><p>The startup mode for the component instance.</p>
</td>
</tr>
<tr id="Child.environment">
<td><h3 id="Child.environment" class="add-link hide-from-toc">4</h3></td>
<td><code>environment</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The environment assigned to this child.</p>
<p>Must reference an environment defined in the <code>ComponentDecl</code>.
Contains only the following characters: [a-z0-9-_.].</p>
</td>
</tr>
<tr id="Child.on_terminate">
<td><h3 id="Child.on_terminate" class="add-link hide-from-toc">5</h3></td>
<td><code>on_terminate</code></td>
<td>
<code><a class='link' href='#OnTerminate'>OnTerminate</a></code>
</td>
<td><p>The action to take if this component instance terminates unexpectedly.</p>
<p>May be unset, in which case defaults to <code>NONE</code>.</p>
</td>
</tr>
</table>
### Collection {#Collection data-text="Collection"}
*Defined in [fuchsia.component.decl/collection.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/collection.fidl;l=7)*
<p>Statically declares a component instance collection.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Collection.name">
<td><h3 id="Collection.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the collection. Instances created in the collection are
scoped to this name.</p>
</td>
</tr>
<tr id="Collection.durability">
<td><h3 id="Collection.durability" class="add-link hide-from-toc">2</h3></td>
<td><code>durability</code></td>
<td>
<code><a class='link' href='#Durability'>Durability</a></code>
</td>
<td><p>The durability of instances in the collection.</p>
</td>
</tr>
<tr id="Collection.environment">
<td><h3 id="Collection.environment" class="add-link hide-from-toc">3</h3></td>
<td><code>environment</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The environment assigned to child instances in this collection.</p>
<p>Must be non-empty, reference an environment defined in the containing
<code>ComponentDecl</code>, and contain only the following characters:
[a-z0-9-_.].</p>
</td>
</tr>
<tr id="Collection.allowed_offers">
<td><h3 id="Collection.allowed_offers" class="add-link hide-from-toc">4</h3></td>
<td><code>allowed_offers</code></td>
<td>
<code><a class='link' href='#AllowedOffers'>AllowedOffers</a></code>
</td>
<td><p>The kinds of offers that can target the child instances in this
collection. The default value is <code>STATIC_ONLY</code>.</p>
<p>Only components using the <code>dynamic_offers</code> restricted feature may set
this field.</p>
</td>
</tr>
<tr id="Collection.allow_long_names">
<td><h3 id="Collection.allow_long_names" class="add-link hide-from-toc">5</h3></td>
<td><code>allow_long_names</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether child instances in this collection can have names longer than
the default length limit of 100.</p>
<p>Only components using the <code>allow_long_names</code> restricted feature may set
this field.</p>
</td>
</tr>
<tr id="Collection.persistent_storage">
<td><h3 id="Collection.persistent_storage" class="add-link hide-from-toc">6</h3></td>
<td><code>persistent_storage</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the data in isolated storage used by dynamic child instances and
their descendants will persist after the instances are destroyed. New
dynamic instances inherit the previous instances' data stores.</p>
<p>This setting can be overridden by a lower-level collection that is a
descendant of a collection that enables/disables this setting.</p>
<p>This setting applies to all storage capabilities consumed by the
collection components and their descendants.</p>
<p>The default is the value inherited from an ancestral collection if set,
otherwise <code>false</code>.</p>
</td>
</tr>
</table>
### Component {#Component data-text="Component"}
*Defined in [fuchsia.component.decl/component.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/component.fidl;l=13)*
<p>A component declaration.</p>
<p>This information is typically encoded in the component manifest (.cm file)
if it has one or may be generated at runtime by a component resolver for
those that don't.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Component.program">
<td><h3 id="Component.program" class="add-link hide-from-toc">1</h3></td>
<td><code>program</code></td>
<td>
<code><a class='link' href='#Program'>Program</a></code>
</td>
<td><p>Information about the program to run when the component is executed.
Omitted for non-executable components.</p>
</td>
</tr>
<tr id="Component.uses">
<td><h3 id="Component.uses" class="add-link hide-from-toc">2</h3></td>
<td><code>uses</code></td>
<td>
<code>vector&lt;<a class='link' href='#Use'>Use</a>&gt;</code>
</td>
<td><p>List of capabilities used by the component. These consist of
capabilities offered to the component that are installed in its incoming
namespace.</p>
<p>The used capabilities must be unique and non-overlapping.</p>
</td>
</tr>
<tr id="Component.exposes">
<td><h3 id="Component.exposes" class="add-link hide-from-toc">3</h3></td>
<td><code>exposes</code></td>
<td>
<code>vector&lt;<a class='link' href='#Expose'>Expose</a>&gt;</code>
</td>
<td><p>List of capabilities exposed by the component. These consist of
capabilities that are made visible to the parent. The parent
may <code>offer</code> these capabilities to its children, but not <code>use</code> them.</p>
<p>The exposed capabilities must be unique and non-overlapping.</p>
</td>
</tr>
<tr id="Component.offers">
<td><h3 id="Component.offers" class="add-link hide-from-toc">4</h3></td>
<td><code>offers</code></td>
<td>
<code>vector&lt;<a class='link' href='#Offer'>Offer</a>&gt;</code>
</td>
<td><p>List of capabilities offered to the component's children. These consist
of capabilities that the given children may <code>use</code>, which may come from a
child, the parent, or the component's own outgoing namespace.</p>
<p>The offered capabilities must be unique and non-overlapping.</p>
</td>
</tr>
<tr id="Component.capabilities">
<td><h3 id="Component.capabilities" class="add-link hide-from-toc">5</h3></td>
<td><code>capabilities</code></td>
<td>
<code>vector&lt;<a class='link' href='#Capability'>Capability</a>&gt;</code>
</td>
<td><p>List of capabilities defined by the component.</p>
</td>
</tr>
<tr id="Component.children">
<td><h3 id="Component.children" class="add-link hide-from-toc">6</h3></td>
<td><code>children</code></td>
<td>
<code>vector&lt;<a class='link' href='#Child'>Child</a>&gt;</code>
</td>
<td><p>The component's statically instantiated children. The children must have
unique names.</p>
</td>
</tr>
<tr id="Component.collections">
<td><h3 id="Component.collections" class="add-link hide-from-toc">7</h3></td>
<td><code>collections</code></td>
<td>
<code>vector&lt;<a class='link' href='#Collection'>Collection</a>&gt;</code>
</td>
<td><p>The component's collections. The collections must have unique names.</p>
</td>
</tr>
<tr id="Component.environments">
<td><h3 id="Component.environments" class="add-link hide-from-toc">8</h3></td>
<td><code>environments</code></td>
<td>
<code>vector&lt;<a class='link' href='#Environment'>Environment</a>&gt;</code>
</td>
<td><p>List of environments created by this component.
Environments are assigned to children and control aspects of a child component's
runtime.</p>
</td>
</tr>
<tr id="Component.facets">
<td><h3 id="Component.facets" class="add-link hide-from-toc">9</h3></td>
<td><code>facets</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Additional metadata about the component.</p>
</td>
</tr>
<tr id="Component.config">
<td><h3 id="Component.config" class="add-link hide-from-toc">10</h3></td>
<td><code>config</code></td>
<td>
<code><a class='link' href='#ConfigSchema'>ConfigSchema</a></code>
</td>
<td><p>The schema of the component's configuration interface.</p>
</td>
</tr>
</table>
### ConfigField {#ConfigField data-text="ConfigField"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=39)*
<p>Declares a single config field (key + type)</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ConfigField.key">
<td><h3 id="ConfigField.key" class="add-link hide-from-toc">1</h3></td>
<td><code>key</code></td>
<td>
<code><a class='link' href='#ConfigKey'>ConfigKey</a></code>
</td>
<td><p>The identifier for this config field.
This key will be used to match overrides.</p>
</td>
</tr>
<tr id="ConfigField.type">
<td><h3 id="ConfigField.type" class="add-link hide-from-toc">2</h3></td>
<td><code>type</code></td>
<td>
<code><a class='link' href='#ConfigType'>ConfigType</a></code>
</td>
<td><p>The type of config values. Config values are verified
against this layout at build time and run time.</p>
</td>
</tr>
</table>
### ConfigSchema {#ConfigSchema data-text="ConfigSchema"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=21)*
<p>The schema of a component's configuration interface.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ConfigSchema.fields">
<td><h3 id="ConfigSchema.fields" class="add-link hide-from-toc">1</h3></td>
<td><code>fields</code></td>
<td>
<code>vector&lt;<a class='link' href='#ConfigField'>ConfigField</a>&gt;</code>
</td>
<td><p>Ordered fields of the component's configuration interface.</p>
</td>
</tr>
<tr id="ConfigSchema.checksum">
<td><h3 id="ConfigSchema.checksum" class="add-link hide-from-toc">2</h3></td>
<td><code>checksum</code></td>
<td>
<code><a class='link' href='#ConfigChecksum'>ConfigChecksum</a></code>
</td>
<td><p>Checksum over the config declaration.</p>
</td>
</tr>
<tr id="ConfigSchema.value_source">
<td><h3 id="ConfigSchema.value_source" class="add-link hide-from-toc">3</h3></td>
<td><code>value_source</code></td>
<td>
<code><a class='link' href='#ConfigValueSource'>ConfigValueSource</a></code>
</td>
<td><p>Strategy used to resolve config values.</p>
</td>
</tr>
</table>
### DebugProtocolRegistration {#DebugProtocolRegistration data-text="DebugProtocolRegistration"}
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=89)*
<p>Registers a protocol in the environment as a debug capability. This makes
it available to any component in the environment that uses it with
<code>source == debug</code>.</p>
<p>To learn more about protocols, see:
https://fuchsia.dev/fuchsia-src/glossary#protocol</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="DebugProtocolRegistration.source">
<td><h3 id="DebugProtocolRegistration.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="DebugProtocolRegistration.source_name">
<td><h3 id="DebugProtocolRegistration.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the protocol being offered.</p>
</td>
</tr>
<tr id="DebugProtocolRegistration.target_name">
<td><h3 id="DebugProtocolRegistration.target_name" class="add-link hide-from-toc">3</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being offered.</p>
</td>
</tr>
</table>
### Directory {#Directory data-text="Directory"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=49)*
<p>Declares a directory capability backed by this component.</p>
<p>To learn more about directories, see:
https://fuchsia.dev/fuchsia-src/glossary#directory</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Directory.name">
<td><h3 id="Directory.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this directory.</p>
</td>
</tr>
<tr id="Directory.source_path">
<td><h3 id="Directory.source_path" class="add-link hide-from-toc">2</h3></td>
<td><code>source_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path to the directory in the component's outgoing directory.</p>
</td>
</tr>
<tr id="Directory.rights">
<td><h3 id="Directory.rights" class="add-link hide-from-toc">3</h3></td>
<td><code>rights</code></td>
<td>
<code><a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Rights'>Rights</a></code>
</td>
<td><p>The maximum rights that can be set by a component using this directory.</p>
</td>
</tr>
</table>
### Environment {#Environment data-text="Environment"}
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=7)*
<p>Declares an environment which configures a realm.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Environment.name">
<td><h3 id="Environment.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this environment.</p>
</td>
</tr>
<tr id="Environment.extends">
<td><h3 id="Environment.extends" class="add-link hide-from-toc">2</h3></td>
<td><code>extends</code></td>
<td>
<code><a class='link' href='#EnvironmentExtends'>EnvironmentExtends</a></code>
</td>
<td><p>Specifies how the initial state of this environment is constructed.</p>
</td>
</tr>
<tr id="Environment.runners">
<td><h3 id="Environment.runners" class="add-link hide-from-toc">3</h3></td>
<td><code>runners</code></td>
<td>
<code>vector&lt;<a class='link' href='#RunnerRegistration'>RunnerRegistration</a>&gt;</code>
</td>
<td><p>List of runners available in this environment.</p>
<p>This list determines the total set of runners that are available for any
component in the environment to use.</p>
</td>
</tr>
<tr id="Environment.resolvers">
<td><h3 id="Environment.resolvers" class="add-link hide-from-toc">4</h3></td>
<td><code>resolvers</code></td>
<td>
<code>vector&lt;<a class='link' href='#ResolverRegistration'>ResolverRegistration</a>&gt;</code>
</td>
<td><p>List of component resolvers and the URL schemes they are registered to resolve.
These registrations determine how components are resolved in the realm.
If the component URL scheme does not match any of these resolvers, URL resolution
is delegated to the parent environment, if this environment <code>extends</code> from <code>REALM</code>.</p>
</td>
</tr>
<tr id="Environment.debug_capabilities">
<td><h3 id="Environment.debug_capabilities" class="add-link hide-from-toc">5</h3></td>
<td><code>debug_capabilities</code></td>
<td>
<code>vector&lt;<a class='link' href='#DebugRegistration'>DebugRegistration</a>&gt;</code>
</td>
<td><p>Expose capabilties to debug section when component manager allows it.</p>
<p>These capabilities are accessible to any component in the environment
with a <code>use</code> declaration with <code>source == debug</code>. Only capabilities
intended to support development should be declared here, and they are
only allowed if explicitly included in the component manager allowlist.</p>
</td>
</tr>
<tr id="Environment.stop_timeout_ms">
<td><h3 id="Environment.stop_timeout_ms" class="add-link hide-from-toc">6</h3></td>
<td><code>stop_timeout_ms</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The duration in milliseconds that the component will have to stop before
it is killed.</p>
</td>
</tr>
</table>
### Event {#Event data-text="Event"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=120)*
<p>Declares an event capability which component instances may subscribe to.
This type cannot be used in <code>fuchsia.component.decl.Component</code>. It is only
used for the framework's built-in capabilities declared in
<code>internal.Config</code>.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Event.name">
<td><h3 id="Event.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this event.
Must be non-empty, unique among built-in capabilities.</p>
</td>
</tr>
</table>
### EventStream {#EventStream data-text="EventStream"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=131)*
<p>Declares an event_stream capability
This type cannot be used in <code>fuchsia.component.decl.Component</code>. It is only
used for the framework's built-in capabilities declared in
<code>internal.Config</code>.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 8</span></div>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="EventStream.name">
<td><h3 id="EventStream.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this event stream.
Must be non-empty, unique among built-in capabilities.</p>
</td>
</tr>
</table>
### EventSubscription {#EventSubscription data-text="EventSubscription"}
*Defined in [fuchsia.component.decl/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/events.fidl;l=10)*
<p>Indicates the event name to subscribe to with a given event mode.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="EventSubscription.event_name">
<td><h3 id="EventSubscription.event_name" class="add-link hide-from-toc">1</h3></td>
<td><code>event_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td></td>
</tr>
</table>
### ExposeDirectory {#ExposeDirectory data-text="ExposeDirectory"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=65)*
<p>Declares a directory exposed to a component's containing realm, such as a
directory exposed by the component or one of its children at runtime.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeDirectory.source">
<td><h3 id="ExposeDirectory.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>self</code> or <code>child</code>.</p>
</td>
</tr>
<tr id="ExposeDirectory.source_name">
<td><h3 id="ExposeDirectory.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the directory, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="ExposeDirectory.target">
<td><h3 id="ExposeDirectory.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the directory is exposed: either the component's realm or the
framework.</p>
</td>
</tr>
<tr id="ExposeDirectory.target_name">
<td><h3 id="ExposeDirectory.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
<tr id="ExposeDirectory.rights">
<td><h3 id="ExposeDirectory.rights" class="add-link hide-from-toc">5</h3></td>
<td><code>rights</code></td>
<td>
<code><a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Rights'>Rights</a></code>
</td>
<td><p>The maximum rights that can be set by a component using this directory,
required iff <code>source == self</code>.</p>
</td>
</tr>
<tr id="ExposeDirectory.subdir">
<td><h3 id="ExposeDirectory.subdir" class="add-link hide-from-toc">6</h3></td>
<td><code>subdir</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The subdirectory of this directory to expose instead of the root. Optional.</p>
</td>
</tr>
</table>
### ExposeEventStream {#ExposeEventStream data-text="ExposeEventStream"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=126)*
<p>Declares an event stream exposed to a component's containing realm, such as
an event stream exposed by the component or one of its children at runtime.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeEventStream.source">
<td><h3 id="ExposeEventStream.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>child</code>, or <code>framework</code>.</p>
</td>
</tr>
<tr id="ExposeEventStream.source_name">
<td><h3 id="ExposeEventStream.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the event stream</p>
</td>
</tr>
<tr id="ExposeEventStream.scope">
<td><h3 id="ExposeEventStream.scope" class="add-link hide-from-toc">3</h3></td>
<td><code>scope</code></td>
<td>
<code>vector&lt;<a class='link' href='#Ref'>Ref</a>&gt;</code>
</td>
<td><p>When an event is exposed from framework,
the scope is required and allows one to define the
child (or array of children) which the event is about.</p>
</td>
</tr>
<tr id="ExposeEventStream.target">
<td><h3 id="ExposeEventStream.target" class="add-link hide-from-toc">4</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the event stream is exposed.</p>
</td>
</tr>
<tr id="ExposeEventStream.target_name">
<td><h3 id="ExposeEventStream.target_name" class="add-link hide-from-toc">5</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
</table>
### ExposeProtocol {#ExposeProtocol data-text="ExposeProtocol"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=46)*
<p>Declares a protocol exposed to a component's containing realm, such as
a protocol exposed by the component or one of its children at runtime.</p>
<p>To learn more about protocols, see:
https://fuchsia.dev/fuchsia-src/glossary#protocol</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeProtocol.source">
<td><h3 id="ExposeProtocol.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>self</code> or <code>child</code>.</p>
</td>
</tr>
<tr id="ExposeProtocol.source_name">
<td><h3 id="ExposeProtocol.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the protocol, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="ExposeProtocol.target">
<td><h3 id="ExposeProtocol.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the protocol is exposed: either the component's
realm or the framework.</p>
</td>
</tr>
<tr id="ExposeProtocol.target_name">
<td><h3 id="ExposeProtocol.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
</table>
### ExposeResolver {#ExposeResolver data-text="ExposeResolver"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=109)*
<p>Declares a resolver exposed to a component's containing realm, such as a
resolver exposed by the component or one of its children at runtime.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeResolver.source">
<td><h3 id="ExposeResolver.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>self</code> or <code>child</code>.</p>
</td>
</tr>
<tr id="ExposeResolver.source_name">
<td><h3 id="ExposeResolver.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the resolver, by which it was presented to this component.</p>
</td>
</tr>
<tr id="ExposeResolver.target">
<td><h3 id="ExposeResolver.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the resolver is exposed</p>
</td>
</tr>
<tr id="ExposeResolver.target_name">
<td><h3 id="ExposeResolver.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
</table>
### ExposeRunner {#ExposeRunner data-text="ExposeRunner"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=91)*
<p>Declares a runner exposed to a component's containing realm, such as a
runner exposed by the component or one of its children at runtime.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeRunner.source">
<td><h3 id="ExposeRunner.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>self</code> or <code>child</code>.</p>
</td>
</tr>
<tr id="ExposeRunner.source_name">
<td><h3 id="ExposeRunner.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the runner, by which it was presented to this component.</p>
</td>
</tr>
<tr id="ExposeRunner.target">
<td><h3 id="ExposeRunner.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the runner is exposed: either the component's realm or the
framework.</p>
</td>
</tr>
<tr id="ExposeRunner.target_name">
<td><h3 id="ExposeRunner.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
</table>
### ExposeService {#ExposeService data-text="ExposeService"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=24)*
<p>Declares a service exposed to a component's containing realm, such as a
service exposed by the component or one of its children at runtime.</p>
<p>To learn more about services, see:
https://fuchsia.dev/fuchsia-src/glossary#service</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ExposeService.source">
<td><h3 id="ExposeService.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must
be <code>self</code> or <code>child</code>.</p>
</td>
</tr>
<tr id="ExposeService.source_name">
<td><h3 id="ExposeService.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the service, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="ExposeService.target">
<td><h3 id="ExposeService.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the service is exposed: either the component's realm or the
framework.</p>
</td>
</tr>
<tr id="ExposeService.target_name">
<td><h3 id="ExposeService.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being exposed.</p>
</td>
</tr>
</table>
### OfferDirectory {#OfferDirectory data-text="OfferDirectory"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=134)*
<p>Declares a directory offered by a component to one of its children, which
may have been offered by the component's containing realm, the component
itself, or one of its other children.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferDirectory.source">
<td><h3 id="OfferDirectory.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, <code>child</code>, <code>framework</code>, or <code>void</code>. If set to <code>void</code>,
then the target must offer or use the capability with <code>optional</code>
availability.</p>
</td>
</tr>
<tr id="OfferDirectory.source_name">
<td><h3 id="OfferDirectory.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the directory being offered.</p>
</td>
</tr>
<tr id="OfferDirectory.target">
<td><h3 id="OfferDirectory.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target of the capability. Must be <code>child</code> or
<code>collection</code>.</p>
</td>
</tr>
<tr id="OfferDirectory.target_name">
<td><h3 id="OfferDirectory.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being offered.</p>
</td>
</tr>
<tr id="OfferDirectory.rights">
<td><h3 id="OfferDirectory.rights" class="add-link hide-from-toc">5</h3></td>
<td><code>rights</code></td>
<td>
<code><a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Rights'>Rights</a></code>
</td>
<td><p>The maximum rights that can be set by a component using this directory,
required iff <code>source == self</code>.</p>
</td>
</tr>
<tr id="OfferDirectory.subdir">
<td><h3 id="OfferDirectory.subdir" class="add-link hide-from-toc">6</h3></td>
<td><code>subdir</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The subdirectory of this directory to offer instead of the root. Optional.</p>
</td>
</tr>
<tr id="OfferDirectory.dependency_type">
<td><h3 id="OfferDirectory.dependency_type" class="add-link hide-from-toc">7</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this offer represents. A component which receives a
weak offer must support the offered capability being unavailable at any
point.</p>
</td>
</tr>
<tr id="OfferDirectory.availability">
<td><h3 id="OfferDirectory.availability" class="add-link hide-from-toc">8</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### OfferEvent {#OfferEvent data-text="OfferEvent"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=239)*
<p>Declares an event offered by a component.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferEvent.source">
<td><h3 id="OfferEvent.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code> or <code>void</code>. If set to <code>void</code>, then the target must offer or use
the capability with <code>optional</code> availability.</p>
</td>
</tr>
<tr id="OfferEvent.source_name">
<td><h3 id="OfferEvent.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name of the event being offered.</p>
</td>
</tr>
<tr id="OfferEvent.target">
<td><h3 id="OfferEvent.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target of the event. Must be <code>child</code> or <code>collection</code>.</p>
</td>
</tr>
<tr id="OfferEvent.target_name">
<td><h3 id="OfferEvent.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name under which the event is being offered.</p>
</td>
</tr>
<tr id="OfferEvent.filter">
<td><h3 id="OfferEvent.filter" class="add-link hide-from-toc">5</h3></td>
<td><code>filter</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Filter for the event. The structure of the filter depends on the event type. May be absent
for some events.</p>
</td>
</tr>
<tr id="OfferEvent.availability">
<td><h3 id="OfferEvent.availability" class="add-link hide-from-toc">6</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### OfferEventStream {#OfferEventStream data-text="OfferEventStream"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=268)*
<p>Declares an event stream offered by a component.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferEventStream.source">
<td><h3 id="OfferEventStream.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>framework</code>, <code>child</code>, or <code>void</code>. If set to <code>void</code>, then the
target must offer or use the capability with <code>optional</code> availability.</p>
</td>
</tr>
<tr id="OfferEventStream.source_name">
<td><h3 id="OfferEventStream.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name of the event being offered.</p>
</td>
</tr>
<tr id="OfferEventStream.scope">
<td><h3 id="OfferEventStream.scope" class="add-link hide-from-toc">3</h3></td>
<td><code>scope</code></td>
<td>
<code>vector&lt;<a class='link' href='#Ref'>Ref</a>&gt;</code>
</td>
<td><p>When an event is offered from framework, the scope is required and allows
one to define the child (or array of children) which the event is about.
When the event is offered from parent, the scope can be used to downscope
the event to a certain child scope, otherwise the event will carry the
scope coming from the parent.</p>
</td>
</tr>
<tr id="OfferEventStream.target">
<td><h3 id="OfferEventStream.target" class="add-link hide-from-toc">4</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The destination to which the event stream is offered.</p>
</td>
</tr>
<tr id="OfferEventStream.target_name">
<td><h3 id="OfferEventStream.target_name" class="add-link hide-from-toc">5</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name under which the event stream is being offered.</p>
</td>
</tr>
<tr id="OfferEventStream.filter">
<td><h3 id="OfferEventStream.filter" class="add-link hide-from-toc">6</h3></td>
<td><code>filter</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Filter for the event stream. Only present for DirectoryReady events
and CapabilityRequested events</p>
</td>
</tr>
<tr id="OfferEventStream.availability">
<td><h3 id="OfferEventStream.availability" class="add-link hide-from-toc">7</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### OfferProtocol {#OfferProtocol data-text="OfferProtocol"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=101)*
<p>Declares a protocol offered by a component to one of its children,
which may have been offered by the component's containing realm, the
component itself, or one of its other children.</p>
<p>To learn more about protocols, see:
https://fuchsia.dev/fuchsia-src/glossary#protocol</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferProtocol.source">
<td><h3 id="OfferProtocol.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, <code>child</code>, <code>framework</code>, or <code>void</code>. If set to <code>void</code>,
then the target must offer or use the capability with <code>optional</code>
availability.</p>
</td>
</tr>
<tr id="OfferProtocol.source_name">
<td><h3 id="OfferProtocol.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the protocol being offered.</p>
</td>
</tr>
<tr id="OfferProtocol.target">
<td><h3 id="OfferProtocol.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target. Must be <code>child</code> or <code>collection</code>.</p>
</td>
</tr>
<tr id="OfferProtocol.target_name">
<td><h3 id="OfferProtocol.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the capability is being offered.</p>
</td>
</tr>
<tr id="OfferProtocol.dependency_type">
<td><h3 id="OfferProtocol.dependency_type" class="add-link hide-from-toc">5</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this offer represents. A component which receives a
weak offer must support the offered capability being unavailable at any
point.</p>
</td>
</tr>
<tr id="OfferProtocol.availability">
<td><h3 id="OfferProtocol.availability" class="add-link hide-from-toc">6</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### OfferResolver {#OfferResolver data-text="OfferResolver"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=222)*
<p>Declares a resolver capability offered by a component to one of its children, which
may have been offered by the component's containing realm, the component itself,
or one of its other children.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferResolver.source">
<td><h3 id="OfferResolver.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="OfferResolver.source_name">
<td><h3 id="OfferResolver.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name of the resolver being offered.</p>
</td>
</tr>
<tr id="OfferResolver.target">
<td><h3 id="OfferResolver.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target of the capability. Must be <code>child</code> or
<code>collection</code>.</p>
</td>
</tr>
<tr id="OfferResolver.target_name">
<td><h3 id="OfferResolver.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name under which the capability is being offered.</p>
</td>
</tr>
</table>
### OfferRunner {#OfferRunner data-text="OfferRunner"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=203)*
<p>Declares a runner offered by a component to one of its children, which may
have been offered by the component's containing realm, the component itself,
or one of its other children.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferRunner.source">
<td><h3 id="OfferRunner.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="OfferRunner.source_name">
<td><h3 id="OfferRunner.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name of the runner being offered.</p>
</td>
</tr>
<tr id="OfferRunner.target">
<td><h3 id="OfferRunner.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target of the capability. Must be <code>child</code> or
<code>collection</code>.</p>
</td>
</tr>
<tr id="OfferRunner.target_name">
<td><h3 id="OfferRunner.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name under which the capability is being offered.</p>
</td>
</tr>
</table>
### OfferService {#OfferService data-text="OfferService"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=62)*
<p>Declares a service offered by a component to one of its children, which may
have been offered by the component's containing realm, the component itself,
or one of its other children.</p>
<p>To learn more about services, see:
https://fuchsia.dev/fuchsia-src/glossary#service</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferService.source">
<td><h3 id="OfferService.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, <code>child</code>, or <code>void</code>. If set to <code>void</code>, then the target
must offer or use the capability with <code>optional</code> availability.</p>
</td>
</tr>
<tr id="OfferService.source_name">
<td><h3 id="OfferService.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the service being offered.</p>
</td>
</tr>
<tr id="OfferService.target">
<td><h3 id="OfferService.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target. Must be <code>child</code> or <code>collection</code>.</p>
</td>
</tr>
<tr id="OfferService.target_name">
<td><h3 id="OfferService.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name under which the capability is being offered.</p>
</td>
</tr>
<tr id="OfferService.source_instance_filter">
<td><h3 id="OfferService.source_instance_filter" class="add-link hide-from-toc">5</h3></td>
<td><code>source_instance_filter</code></td>
<td>
<code>vector&lt;string&gt;</code>
</td>
<td><p>The list of allow listed instances to be offered. Instances of the service
not in this list will not be accessible by the target component.
If this is not set that means all instances from the source service are
offered.</p>
</td>
</tr>
<tr id="OfferService.renamed_instances">
<td><h3 id="OfferService.renamed_instances" class="add-link hide-from-toc">6</h3></td>
<td><code>renamed_instances</code></td>
<td>
<code>vector&lt;<a class='link' href='#NameMapping'>NameMapping</a>&gt;</code>
</td>
<td><p>List of renamed service instances.</p>
</td>
</tr>
<tr id="OfferService.availability">
<td><h3 id="OfferService.availability" class="add-link hide-from-toc">7</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### OfferStorage {#OfferStorage data-text="OfferStorage"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=175)*
<p>Declares a storage capability offered by a component to one of its children,
such as meta storage offered by the component's containing realm or cache
storage offered by the component itself.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="OfferStorage.source_name">
<td><h3 id="OfferStorage.source_name" class="add-link hide-from-toc">1</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the storage capability being offered</p>
</td>
</tr>
<tr id="OfferStorage.source">
<td><h3 id="OfferStorage.source" class="add-link hide-from-toc">2</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>storage</code>, or <code>void</code>. If set to <code>void</code>, then the target must
offer or use the capability with <code>optional</code> availability.</p>
</td>
</tr>
<tr id="OfferStorage.target">
<td><h3 id="OfferStorage.target" class="add-link hide-from-toc">3</h3></td>
<td><code>target</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>Reference to the target of the capability. Must be <code>child</code> or
<code>collection</code>.</p>
</td>
</tr>
<tr id="OfferStorage.target_name">
<td><h3 id="OfferStorage.target_name" class="add-link hide-from-toc">4</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name the storage capability is being offered as</p>
</td>
</tr>
<tr id="OfferStorage.availability">
<td><h3 id="OfferStorage.availability" class="add-link hide-from-toc">5</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the target
may use or offer the capability with either <code>required</code> or <code>optional</code>
availability. If set to <code>optional</code>, the target must use or offer the
capability with <code>optional</code> availability. The <code>same_as_target</code> value
causes this offer's availability to match the availability set in the
target.</p>
</td>
</tr>
</table>
### Program {#Program data-text="Program"}
*Defined in [fuchsia.component.decl/program.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/program.fidl;l=15)*
<p>A program declaration.</p>
<p>This declaration is set by executable components to designate the runner to
use and pass runner-specific program information to it.</p>
<p>To learn more about runners, see:
https://fuchsia.dev/fuchsia-src/glossary#runner</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Program.runner">
<td><h3 id="Program.runner" class="add-link hide-from-toc">1</h3></td>
<td><code>runner</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the runner to use to run the component. Must match a
<code>RunnerRegistration</code> in the component's environment.</p>
</td>
</tr>
<tr id="Program.info">
<td><h3 id="Program.info" class="add-link hide-from-toc">2</h3></td>
<td><code>info</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Information about the program to run when the component is executed. The
component manager provides the contents of this dictionary to the runner
when executing this program.</p>
<p>For instance, this might contain a path to the program's executable
image, or program arguments.</p>
<ul>
<li>The keys represent namespaced properties, delimited by &quot;.&quot;.</li>
<li>Properties may be nested in values, but only in the case of an object
vector.</li>
</ul>
</td>
</tr>
</table>
### Protocol {#Protocol data-text="Protocol"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=37)*
<p>Declares a protocol capability backed by this component.</p>
<p>To learn more about protocols, see:
https://fuchsia.dev/fuchsia-src/glossary#protocol</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Protocol.name">
<td><h3 id="Protocol.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this protocol.</p>
</td>
</tr>
<tr id="Protocol.source_path">
<td><h3 id="Protocol.source_path" class="add-link hide-from-toc">2</h3></td>
<td><code>source_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path to the protocol in the component's outgoing directory.</p>
</td>
</tr>
</table>
### Resolver {#Resolver data-text="Resolver"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=107)*
<p>Declares a resolver which is responsible for resolving component URLs to actual components.
See <code>fuchsia.component.resolution.Resolver</code> for the protocol resolvers are expected to implement.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Resolver.name">
<td><h3 id="Resolver.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this resolver.
Must be non-empty, unique among resolvers declared in the same <code>ComponentDecl</code>.</p>
</td>
</tr>
<tr id="Resolver.source_path">
<td><h3 id="Resolver.source_path" class="add-link hide-from-toc">2</h3></td>
<td><code>source_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path to the resolver protocol in the component's outgoing directory</p>
</td>
</tr>
</table>
### ResolverRegistration {#ResolverRegistration data-text="ResolverRegistration"}
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=63)*
<p>A mapping of URL scheme to resolver name.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="ResolverRegistration.resolver">
<td><h3 id="ResolverRegistration.resolver" class="add-link hide-from-toc">1</h3></td>
<td><code>resolver</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the resolver.</p>
</td>
</tr>
<tr id="ResolverRegistration.source">
<td><h3 id="ResolverRegistration.source" class="add-link hide-from-toc">2</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="ResolverRegistration.scheme">
<td><h3 id="ResolverRegistration.scheme" class="add-link hide-from-toc">3</h3></td>
<td><code>scheme</code></td>
<td>
<code><a class='link' href='#url_scheme'>url_scheme</a></code>
</td>
<td><p>The URL scheme the resolver is registered to handle.
Only one resolver may be registered to a particular URL scheme.
The URL scheme must start with a lowercase ASCII letter (a-z), and may contain
lowercase ASCII letters, digits, <code>+</code>, <code>-</code>, and <code>.</code>.</p>
</td>
</tr>
</table>
### Runner {#Runner data-text="Runner"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=96)*
<p>Declares a runner capability backed by a service.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Runner.name">
<td><h3 id="Runner.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this runner.
Must be non-empty, unique among runners declared in the same <code>ComponentDecl</code>.</p>
</td>
</tr>
<tr id="Runner.source_path">
<td><h3 id="Runner.source_path" class="add-link hide-from-toc">2</h3></td>
<td><code>source_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path to the runner protocol in the component's outgoing directory.</p>
</td>
</tr>
</table>
### RunnerRegistration {#RunnerRegistration data-text="RunnerRegistration"}
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=49)*
<p>A repository of the runners available in an environment.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RunnerRegistration.source_name">
<td><h3 id="RunnerRegistration.source_name" class="add-link hide-from-toc">1</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the runner capability as it's exposed to, offered, or
defined by this component.</p>
</td>
</tr>
<tr id="RunnerRegistration.source">
<td><h3 id="RunnerRegistration.source" class="add-link hide-from-toc">2</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the capability relative to the component itself. Must be
<code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="RunnerRegistration.target_name">
<td><h3 id="RunnerRegistration.target_name" class="add-link hide-from-toc">3</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name by which the runner is made available in this environment.</p>
</td>
</tr>
</table>
### Service {#Service data-text="Service"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=25)*
<p>Declares a service capability backed by this component.</p>
<p>To learn more about services, see:
https://fuchsia.dev/fuchsia-src/glossary#service</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Service.name">
<td><h3 id="Service.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this service.</p>
</td>
</tr>
<tr id="Service.source_path">
<td><h3 id="Service.source_path" class="add-link hide-from-toc">2</h3></td>
<td><code>source_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path to the service in the component's outgoing directory.</p>
</td>
</tr>
</table>
### Storage {#Storage data-text="Storage"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=62)*
<p>Declares a storage capability backed by a directory from which data, cache,
or meta storage can be offered.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="Storage.name">
<td><h3 id="Storage.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of this storage</p>
</td>
</tr>
<tr id="Storage.source">
<td><h3 id="Storage.source" class="add-link hide-from-toc">2</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the backing directory capability relative to the
component itself. Must be <code>parent</code>, <code>self</code>, or <code>child</code>.</p>
</td>
</tr>
<tr id="Storage.backing_dir">
<td><h3 id="Storage.backing_dir" class="add-link hide-from-toc">3</h3></td>
<td><code>backing_dir</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the directory capability from <code>source</code> that backs the
storage.</p>
</td>
</tr>
<tr id="Storage.subdir">
<td><h3 id="Storage.subdir" class="add-link hide-from-toc">4</h3></td>
<td><code>subdir</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The subdirectory of the source directory that will back the storage</p>
</td>
</tr>
<tr id="Storage.storage_id">
<td><h3 id="Storage.storage_id" class="add-link hide-from-toc">5</h3></td>
<td><code>storage_id</code></td>
<td>
<code><a class='link' href='#StorageId'>StorageId</a></code>
</td>
<td><p>This enum determines how to key a component's isolated storage directory.
Each option corresponds to a different key'ing strategy.
This field is required.</p>
</td>
</tr>
</table>
### UseDirectory {#UseDirectory data-text="UseDirectory"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=93)*
<p>Declares a directory used by a component, which was offered to it.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseDirectory.source">
<td><h3 id="UseDirectory.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the directory relative to the component itself. Must
be <code>parent</code>, <code>framework</code>, or <code>child</code>. If the availability is set to
<code>optional</code>, then this must be set to <code>parent</code>.</p>
</td>
</tr>
<tr id="UseDirectory.source_name">
<td><h3 id="UseDirectory.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the directory, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="UseDirectory.target_path">
<td><h3 id="UseDirectory.target_path" class="add-link hide-from-toc">3</h3></td>
<td><code>target_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path where the capability should be installed in the component's
namespace.</p>
<p>Must be an absolute path starting with /.</p>
</td>
</tr>
<tr id="UseDirectory.rights">
<td><h3 id="UseDirectory.rights" class="add-link hide-from-toc">4</h3></td>
<td><code>rights</code></td>
<td>
<code><a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Rights'>Rights</a></code>
</td>
<td><p>The rights required by the component to use this directory.</p>
</td>
</tr>
<tr id="UseDirectory.subdir">
<td><h3 id="UseDirectory.subdir" class="add-link hide-from-toc">5</h3></td>
<td><code>subdir</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The subdirectory of this directory to use instead of the root. Optional.</p>
</td>
</tr>
<tr id="UseDirectory.dependency_type">
<td><h3 id="UseDirectory.dependency_type" class="add-link hide-from-toc">6</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this use represents.</p>
<p>A component which offers a capability to a child from itself and uses a
capability from the same child, must mark the dependency as <code>weak</code>. A
<code>weak</code> dependency implies that the capability may become unavailable at
any point. Taking a strong dependency on a child's capability will
cause this the child to shut down before its parent. When using a weak
dependency, the parent shuts down before the child.</p>
</td>
</tr>
<tr id="UseDirectory.availability">
<td><h3 id="UseDirectory.availability" class="add-link hide-from-toc">7</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
### UseEvent {#UseEvent data-text="UseEvent"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=151)*
<p>Declares an event used by a component, which was offered to it.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseEvent.source">
<td><h3 id="UseEvent.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the event. Must be <code>realm</code> or <code>framework</code>. If the
availability is set to <code>optional</code>, then this must be set to <code>parent</code>.</p>
</td>
</tr>
<tr id="UseEvent.source_name">
<td><h3 id="UseEvent.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the event which was presented to this component.</p>
</td>
</tr>
<tr id="UseEvent.target_name">
<td><h3 id="UseEvent.target_name" class="add-link hide-from-toc">3</h3></td>
<td><code>target_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name which the component will use to refer to this event.</p>
</td>
</tr>
<tr id="UseEvent.filter">
<td><h3 id="UseEvent.filter" class="add-link hide-from-toc">4</h3></td>
<td><code>filter</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Filter for the event. The structure of the filter depends on the event type. May be absent
for some events.</p>
</td>
</tr>
<tr id="UseEvent.dependency_type">
<td><h3 id="UseEvent.dependency_type" class="add-link hide-from-toc">5</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this use represents.</p>
<p>A component which offers a capability to a child from itself and uses a
capability from the same child, must mark the dependency as <code>weak</code>. A
<code>weak</code> dependency implies that the capability may become unavailable at
any point. Taking a strong dependency on a child's capability will
cause this the child to shut down before its parent. When using a weak
dependency, the parent shuts down before the child.</p>
</td>
</tr>
<tr id="UseEvent.availability">
<td><h3 id="UseEvent.availability" class="add-link hide-from-toc">6</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
### UseEventStream {#UseEventStream data-text="UseEventStream"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=198)*
<p>Declares an EventStream used by a component.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseEventStream.source_name">
<td><h3 id="UseEventStream.source_name" class="add-link hide-from-toc">1</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The names of the event streams.</p>
</td>
</tr>
<tr id="UseEventStream.source">
<td><h3 id="UseEventStream.source" class="add-link hide-from-toc">2</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the event. Must be <code>parent</code>, <code>framework</code>, or <code>child</code>. If
the availability is set to <code>optional</code>, then this must be set to
<code>parent</code>.</p>
</td>
</tr>
<tr id="UseEventStream.scope">
<td><h3 id="UseEventStream.scope" class="add-link hide-from-toc">3</h3></td>
<td><code>scope</code></td>
<td>
<code>vector&lt;<a class='link' href='#Ref'>Ref</a>&gt;</code>
</td>
<td><p>When an event is used from framework, the scope is required to specify
the child (or array of children) which the event will be about.
When the event is used from parent, the scope can be used to downscope
the event to a certain child scope, otherwise the event will carry the
scope coming from the parent.</p>
</td>
</tr>
<tr id="UseEventStream.target_path">
<td><h3 id="UseEventStream.target_path" class="add-link hide-from-toc">4</h3></td>
<td><code>target_path</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The path where the capability should be installed in the component's namespace.
Must be an absolute path starting with /.</p>
</td>
</tr>
<tr id="UseEventStream.availability">
<td><h3 id="UseEventStream.availability" class="add-link hide-from-toc">5</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
<tr id="UseEventStream.filter">
<td><h3 id="UseEventStream.filter" class="add-link hide-from-toc">6</h3></td>
<td><code>filter</code></td>
<td>
<code><a class='link' href='../fuchsia.data/'>fuchsia.data</a>/<a class='link' href='../fuchsia.data/#Dictionary'>Dictionary</a></code>
</td>
<td><p>Filter for the event stream. The structure of the filter depends on the event stream type.
May be absent for some events.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div>
</td>
</tr>
</table>
### UseEventStreamDeprecated {#UseEventStreamDeprecated data-text="UseEventStreamDeprecated"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=183)*
<p>Declares a static EventStream used by a component.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseEventStreamDeprecated.name">
<td><h3 id="UseEventStreamDeprecated.name" class="add-link hide-from-toc">1</h3></td>
<td><code>name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>The name of the event stream.</p>
</td>
</tr>
<tr id="UseEventStreamDeprecated.subscriptions">
<td><h3 id="UseEventStreamDeprecated.subscriptions" class="add-link hide-from-toc">2</h3></td>
<td><code>subscriptions</code></td>
<td>
<code>vector&lt;<a class='link' href='#EventSubscription'>EventSubscription</a>&gt;[100]</code>
</td>
<td><p>The set of events to which this EventStream is subscribed.
Note: This vector must be non-empty.</p>
</td>
</tr>
<tr id="UseEventStreamDeprecated.availability">
<td><h3 id="UseEventStreamDeprecated.availability" class="add-link hide-from-toc">3</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
### UseProtocol {#UseProtocol data-text="UseProtocol"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=60)*
<p>Declares a protocol used by a component, which was offered to it.</p>
<p>A protocol is a service with a single instance, provided by a single FIDL
protocol.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseProtocol.source">
<td><h3 id="UseProtocol.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the protocol relative to the component itself.
Must be <code>parent</code>, <code>framework</code>, <code>debug</code>, <code>capability</code>, or <code>child</code>. If the
availability is set to <code>optional</code>, then this must be set to <code>parent</code>.</p>
</td>
</tr>
<tr id="UseProtocol.source_name">
<td><h3 id="UseProtocol.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the protocol, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="UseProtocol.target_path">
<td><h3 id="UseProtocol.target_path" class="add-link hide-from-toc">3</h3></td>
<td><code>target_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path where the capability should be installed in the component's
namespace.</p>
<p>Must be an absolute path starting with /.</p>
</td>
</tr>
<tr id="UseProtocol.dependency_type">
<td><h3 id="UseProtocol.dependency_type" class="add-link hide-from-toc">4</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this use represents.</p>
<p>A component which offers a capability to a child from itself and uses a
capability from the same child, must mark the dependency as <code>weak</code>. A
<code>weak</code> dependency implies that the capability may become unavailable at
any point. Taking a strong dependency on a child's capability will
cause this the child to shut down before its parent. When using a weak
dependency, the parent shuts down before the child.</p>
</td>
</tr>
<tr id="UseProtocol.availability">
<td><h3 id="UseProtocol.availability" class="add-link hide-from-toc">5</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
### UseService {#UseService data-text="UseService"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=24)*
<p>Declares a service used by a component, which was offered to it.</p>
<p>To learn more about services, see:
https://fuchsia.dev/fuchsia-src/glossary#service</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseService.source">
<td><h3 id="UseService.source" class="add-link hide-from-toc">1</h3></td>
<td><code>source</code></td>
<td>
<code><a class='link' href='#Ref'>Ref</a></code>
</td>
<td><p>The provider of the service relative to the component itself. Must
be <code>parent</code> or <code>framework</code>. If the availability is set to <code>optional</code>,
then this must be set to <code>parent</code>.</p>
</td>
</tr>
<tr id="UseService.source_name">
<td><h3 id="UseService.source_name" class="add-link hide-from-toc">2</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the service, by which it was presented to this
component.</p>
</td>
</tr>
<tr id="UseService.target_path">
<td><h3 id="UseService.target_path" class="add-link hide-from-toc">3</h3></td>
<td><code>target_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path where the capability should be installed in the component's
namespace.</p>
<p>Must be an absolute path starting with /.</p>
</td>
</tr>
<tr id="UseService.dependency_type">
<td><h3 id="UseService.dependency_type" class="add-link hide-from-toc">4</h3></td>
<td><code>dependency_type</code></td>
<td>
<code><a class='link' href='#DependencyType'>DependencyType</a></code>
</td>
<td><p>The dependency type this use represents.</p>
<p>A component which offers a capability to a child from itself and uses a
capability from the same child, must mark the dependency as <code>weak</code>. A
<code>weak</code> dependency implies that the capability may become unavailable at
any point. Taking a strong dependency on a child's capability will
cause this the child to shut down before its parent. When using a weak
dependency, the parent shuts down before the child.</p>
</td>
</tr>
<tr id="UseService.availability">
<td><h3 id="UseService.availability" class="add-link hide-from-toc">5</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
### UseStorage {#UseStorage data-text="UseStorage"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=132)*
<p>Declares storage used by a component, which was offered to it.</p>
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="UseStorage.source_name">
<td><h3 id="UseStorage.source_name" class="add-link hide-from-toc">1</h3></td>
<td><code>source_name</code></td>
<td>
<code><a class='link' href='#name'>name</a></code>
</td>
<td><p>Name identifying the storage, by which it was presented to this
component. If the availability is set to <code>optional</code>, then this must
be set to <code>parent</code>.</p>
</td>
</tr>
<tr id="UseStorage.target_path">
<td><h3 id="UseStorage.target_path" class="add-link hide-from-toc">2</h3></td>
<td><code>target_path</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The path where the capability should be installed in the component's
namespace.</p>
<p>Must be an absolute path starting with /.</p>
</td>
</tr>
<tr id="UseStorage.availability">
<td><h3 id="UseStorage.availability" class="add-link hide-from-toc">3</h3></td>
<td><code>availability</code></td>
<td>
<code><a class='link' href='#Availability'>Availability</a></code>
</td>
<td><p>The availability of this capability. If set to <code>required</code>, the component
is likely to malfunction if this capability is not provided. If set to
<code>optional</code>, the component can handle the capability's absence.</p>
</td>
</tr>
</table>
## **UNIONS**
### Capability [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Capability data-text="Capability"}
*Defined in [fuchsia.component.decl/capability.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/capability.fidl;l=9)*
<p>Declares a capability defined by this component.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Capability.service">
<td><h3 id="Capability.service" class="add-link hide-from-toc">1</h3></td>
<td><code>service</code></td>
<td>
<code><a class='link' href='#Service'>Service</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.protocol">
<td><h3 id="Capability.protocol" class="add-link hide-from-toc">2</h3></td>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#Protocol'>Protocol</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.directory">
<td><h3 id="Capability.directory" class="add-link hide-from-toc">3</h3></td>
<td><code>directory</code></td>
<td>
<code><a class='link' href='#Directory'>Directory</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.storage">
<td><h3 id="Capability.storage" class="add-link hide-from-toc">4</h3></td>
<td><code>storage</code></td>
<td>
<code><a class='link' href='#Storage'>Storage</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.runner">
<td><h3 id="Capability.runner" class="add-link hide-from-toc">5</h3></td>
<td><code>runner</code></td>
<td>
<code><a class='link' href='#Runner'>Runner</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.resolver">
<td><h3 id="Capability.resolver" class="add-link hide-from-toc">6</h3></td>
<td><code>resolver</code></td>
<td>
<code><a class='link' href='#Resolver'>Resolver</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.event">
<td><h3 id="Capability.event" class="add-link hide-from-toc">7</h3></td>
<td><code>event</code></td>
<td>
<code><a class='link' href='#Event'>Event</a></code>
</td>
<td></td>
</tr>
<tr id="Capability.event_stream">
<td><h3 id="Capability.event_stream" class="add-link hide-from-toc">8</h3></td>
<td><code>event_stream</code></td>
<td>
<code><a class='link' href='#EventStream'>EventStream</a></code>
</td>
<td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 8</span></div>
</td>
</tr>
</table>
### ConfigChecksum [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConfigChecksum data-text="ConfigChecksum"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=15)*
<p>The checksum produced for a configuration interface.
Two configuration interfaces are the same if their checksums are the same.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ConfigChecksum.sha256">
<td><h3 id="ConfigChecksum.sha256" class="add-link hide-from-toc">1</h3></td>
<td><code>sha256</code></td>
<td>
<code>uint8[32]</code>
</td>
<td><p>A SHA-256 hash produced over a component's config interface.</p>
</td>
</tr>
</table>
### ConfigValueSource [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConfigValueSource data-text="ConfigValueSource"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=33)*
<p>Strategies available for resolving configuration values.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="ConfigValueSource.package_path">
<td><h3 id="ConfigValueSource.package_path" class="add-link hide-from-toc">1</h3></td>
<td><code>package_path</code></td>
<td>
<code>string</code>
</td>
<td><p>The path within the component's package at which to find config value files.</p>
</td>
</tr>
</table>
### DebugRegistration [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DebugRegistration data-text="DebugRegistration"}
*Defined in [fuchsia.component.decl/environment.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/environment.fidl;l=79)*
<p>Declares a capability registered in the debug section of an environment.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="DebugRegistration.protocol">
<td><h3 id="DebugRegistration.protocol" class="add-link hide-from-toc">1</h3></td>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#DebugProtocolRegistration'>DebugProtocolRegistration</a></code>
</td>
<td></td>
</tr>
</table>
### Expose [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Expose data-text="Expose"}
*Defined in [fuchsia.component.decl/expose.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/expose.fidl;l=10)*
<p>Declares a capability exposed to either a component's containing realm or to the framework.
For example, a legacy service exposed by the component at runtime.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Expose.service">
<td><h3 id="Expose.service" class="add-link hide-from-toc">1</h3></td>
<td><code>service</code></td>
<td>
<code><a class='link' href='#ExposeService'>ExposeService</a></code>
</td>
<td></td>
</tr>
<tr id="Expose.protocol">
<td><h3 id="Expose.protocol" class="add-link hide-from-toc">2</h3></td>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#ExposeProtocol'>ExposeProtocol</a></code>
</td>
<td></td>
</tr>
<tr id="Expose.directory">
<td><h3 id="Expose.directory" class="add-link hide-from-toc">3</h3></td>
<td><code>directory</code></td>
<td>
<code><a class='link' href='#ExposeDirectory'>ExposeDirectory</a></code>
</td>
<td></td>
</tr>
<tr id="Expose.runner">
<td><h3 id="Expose.runner" class="add-link hide-from-toc">4</h3></td>
<td><code>runner</code></td>
<td>
<code><a class='link' href='#ExposeRunner'>ExposeRunner</a></code>
</td>
<td></td>
</tr>
<tr id="Expose.resolver">
<td><h3 id="Expose.resolver" class="add-link hide-from-toc">5</h3></td>
<td><code>resolver</code></td>
<td>
<code><a class='link' href='#ExposeResolver'>ExposeResolver</a></code>
</td>
<td></td>
</tr>
<tr id="Expose.event_stream">
<td><h3 id="Expose.event_stream" class="add-link hide-from-toc">6</h3></td>
<td><code>event_stream</code></td>
<td>
<code><a class='link' href='#ExposeEventStream'>ExposeEventStream</a></code>
</td>
<td></td>
</tr>
</table>
### LayoutConstraint [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LayoutConstraint data-text="LayoutConstraint"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=81)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="LayoutConstraint.max_size">
<td><h3 id="LayoutConstraint.max_size" class="add-link hide-from-toc">1</h3></td>
<td><code>max_size</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
</tr>
</table>
### LayoutParameter [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LayoutParameter data-text="LayoutParameter"}
*Defined in [fuchsia.component.decl/config.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=75)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="LayoutParameter.nested_type">
<td><h3 id="LayoutParameter.nested_type" class="add-link hide-from-toc">1</h3></td>
<td><code>nested_type</code></td>
<td>
<code><a class='link' href='#ConfigType'>ConfigType</a></code>
</td>
<td></td>
</tr>
</table>
### Offer [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Offer data-text="Offer"}
*Defined in [fuchsia.component.decl/offer.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/offer.fidl;l=12)*
<p>Declares a capability offered by a component to one of its children, which
may have been offered by the component's containing realm, the component
itself, or one of its other children.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Offer.service">
<td><h3 id="Offer.service" class="add-link hide-from-toc">1</h3></td>
<td><code>service</code></td>
<td>
<code><a class='link' href='#OfferService'>OfferService</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.protocol">
<td><h3 id="Offer.protocol" class="add-link hide-from-toc">2</h3></td>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#OfferProtocol'>OfferProtocol</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.directory">
<td><h3 id="Offer.directory" class="add-link hide-from-toc">3</h3></td>
<td><code>directory</code></td>
<td>
<code><a class='link' href='#OfferDirectory'>OfferDirectory</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.storage">
<td><h3 id="Offer.storage" class="add-link hide-from-toc">4</h3></td>
<td><code>storage</code></td>
<td>
<code><a class='link' href='#OfferStorage'>OfferStorage</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.runner">
<td><h3 id="Offer.runner" class="add-link hide-from-toc">5</h3></td>
<td><code>runner</code></td>
<td>
<code><a class='link' href='#OfferRunner'>OfferRunner</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.resolver">
<td><h3 id="Offer.resolver" class="add-link hide-from-toc">6</h3></td>
<td><code>resolver</code></td>
<td>
<code><a class='link' href='#OfferResolver'>OfferResolver</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.event">
<td><h3 id="Offer.event" class="add-link hide-from-toc">7</h3></td>
<td><code>event</code></td>
<td>
<code><a class='link' href='#OfferEvent'>OfferEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Offer.event_stream">
<td><h3 id="Offer.event_stream" class="add-link hide-from-toc">8</h3></td>
<td><code>event_stream</code></td>
<td>
<code><a class='link' href='#OfferEventStream'>OfferEventStream</a></code>
</td>
<td></td>
</tr>
</table>
### Ref [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Ref data-text="Ref"}
*Defined in [fuchsia.component.decl/relative_refs.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/relative_refs.fidl;l=8)*
<p>A reference to a capability source or destination relative to this
component.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Ref.parent">
<td><h3 id="Ref.parent" class="add-link hide-from-toc">1</h3></td>
<td><code>parent</code></td>
<td>
<code><a class='link' href='#ParentRef'>ParentRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.self">
<td><h3 id="Ref.self" class="add-link hide-from-toc">2</h3></td>
<td><code>self</code></td>
<td>
<code><a class='link' href='#SelfRef'>SelfRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.child">
<td><h3 id="Ref.child" class="add-link hide-from-toc">3</h3></td>
<td><code>child</code></td>
<td>
<code><a class='link' href='#ChildRef'>ChildRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.collection">
<td><h3 id="Ref.collection" class="add-link hide-from-toc">4</h3></td>
<td><code>collection</code></td>
<td>
<code><a class='link' href='#CollectionRef'>CollectionRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.framework">
<td><h3 id="Ref.framework" class="add-link hide-from-toc">5</h3></td>
<td><code>framework</code></td>
<td>
<code><a class='link' href='#FrameworkRef'>FrameworkRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.capability">
<td><h3 id="Ref.capability" class="add-link hide-from-toc">6</h3></td>
<td><code>capability</code></td>
<td>
<code><a class='link' href='#CapabilityRef'>CapabilityRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.debug">
<td><h3 id="Ref.debug" class="add-link hide-from-toc">7</h3></td>
<td><code>debug</code></td>
<td>
<code><a class='link' href='#DebugRef'>DebugRef</a></code>
</td>
<td></td>
</tr>
<tr id="Ref.void_type">
<td><h3 id="Ref.void_type" class="add-link hide-from-toc">8</h3></td>
<td><code>void_type</code></td>
<td>
<code><a class='link' href='#VoidRef'>VoidRef</a></code>
</td>
<td></td>
</tr>
</table>
### Use [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Use data-text="Use"}
*Defined in [fuchsia.component.decl/use.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/use.fidl;l=10)*
<p>Declares a capability used by a component, which was offered to it.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Use.service">
<td><h3 id="Use.service" class="add-link hide-from-toc">1</h3></td>
<td><code>service</code></td>
<td>
<code><a class='link' href='#UseService'>UseService</a></code>
</td>
<td></td>
</tr>
<tr id="Use.protocol">
<td><h3 id="Use.protocol" class="add-link hide-from-toc">2</h3></td>
<td><code>protocol</code></td>
<td>
<code><a class='link' href='#UseProtocol'>UseProtocol</a></code>
</td>
<td></td>
</tr>
<tr id="Use.directory">
<td><h3 id="Use.directory" class="add-link hide-from-toc">3</h3></td>
<td><code>directory</code></td>
<td>
<code><a class='link' href='#UseDirectory'>UseDirectory</a></code>
</td>
<td></td>
</tr>
<tr id="Use.storage">
<td><h3 id="Use.storage" class="add-link hide-from-toc">4</h3></td>
<td><code>storage</code></td>
<td>
<code><a class='link' href='#UseStorage'>UseStorage</a></code>
</td>
<td></td>
</tr>
<tr id="Use.event">
<td><h3 id="Use.event" class="add-link hide-from-toc">5</h3></td>
<td><code>event</code></td>
<td>
<code><a class='link' href='#UseEvent'>UseEvent</a></code>
</td>
<td></td>
</tr>
<tr id="Use.event_stream_deprecated">
<td><h3 id="Use.event_stream_deprecated" class="add-link hide-from-toc">6</h3></td>
<td><code>event_stream_deprecated</code></td>
<td>
<code><a class='link' href='#UseEventStreamDeprecated'>UseEventStreamDeprecated</a></code>
</td>
<td></td>
</tr>
<tr id="Use.event_stream">
<td><h3 id="Use.event_stream" class="add-link hide-from-toc">7</h3></td>
<td><code>event_stream</code></td>
<td>
<code><a class='link' href='#UseEventStream'>UseEventStream</a></code>
</td>
<td></td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="CONFIG_KEY_MAX_SIZE">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=8">CONFIG_KEY_MAX_SIZE</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td><p>Config keys can only consist of these many bytes</p>
</td>
</tr>
<tr id="MAX_CHILD_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=7">MAX_CHILD_NAME_LENGTH</a></td>
<td>
<code>1024</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_MONIKER_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=9">MAX_MONIKER_LENGTH</a></td>
<td>
<code>4096</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=6">MAX_NAME_LENGTH</a></td>
<td>
<code>100</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_EVENT_STREAM_SUBSCRIPTIONS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/events.fidl;l=7">MAX_NUM_EVENT_STREAM_SUBSCRIPTIONS</a></td>
<td>
<code>100</code>
</td>
<td><code>uint64</code></td>
<td><p>The maximum number of EventSubscriptions in an EventStream.</p>
</td>
</tr>
<tr id="MAX_PATH_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=8">MAX_PATH_LENGTH</a></td>
<td>
<code>1024</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_URL_SCHEME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=10">MAX_URL_SCHEME_LENGTH</a></td>
<td>
<code>100</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
</table>
## **ALIASES**
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="ConfigKey">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/config.fidl;l=11">ConfigKey</a></td>
<td>
<code>string</code>[<code><a class='link' href='#CONFIG_KEY_MAX_SIZE'>CONFIG_KEY_MAX_SIZE</a></code>]</td>
<td><p>The string identifier for a config field.</p>
</td>
</tr>
<tr id="child_name">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=13">child_name</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_CHILD_NAME_LENGTH'>MAX_CHILD_NAME_LENGTH</a></code>]</td>
<td></td>
</tr>
<tr id="name">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=12">name</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_NAME_LENGTH'>MAX_NAME_LENGTH</a></code>]</td>
<td></td>
</tr>
<tr id="url_scheme">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component.decl/types.fidl;l=14">url_scheme</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_URL_SCHEME_LENGTH'>MAX_URL_SCHEME_LENGTH</a></code>]</td>
<td></td>
</tr>
</table>