/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
/**
 * Utilities for helping implement various application component design patterns.
 * @alpha
 */
export declare namespace Component {
    /**
     * Function which takes in a lazy configuration and returns a collection of schema types.
     * @remarks
     * This allows the schema to reference items from the configuration, which could include themselves recursively.
     * @alpha
     */
    type ComponentSchemaCollection<TConfig, TSchema> = (lazyConfiguration: () => TConfig) => LazyArray<TSchema>;
    /**
     * {@link AllowedTypes} where all of the allowed types' schema implement `T` and are lazy.
     * @alpha
     */
    type LazyArray<T> = readonly (() => T)[];
    /**
     * Combine multiple {@link Component.ComponentSchemaCollection}s into a single {@link AllowedTypes} array.
     * @remarks
     *
     * @alpha
     */
    function composeComponentSchema<TConfig, TItem>(allComponents: readonly ComponentSchemaCollection<TConfig, TItem>[], lazyConfiguration: () => TConfig): (() => TItem)[];
}
//# sourceMappingURL=component.d.ts.map