<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>
