import type { EntityProperties } from "../Entity.js";
import { EntityBase } from "../Entity.js";
import { ItemType } from "../ItemType.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { Feature } from "./Feature.js";
import { FeatureSet } from "./FeatureSet.js";
/**
 * Properties that can be used to construct or update an instance of
 * FeatureStream.
 */
export interface FeatureStreamProperties extends EntityProperties {
    /**
     * A human readable title describing the feature results.
     */
    title?: string;
    /**
     * The features in the feature stream.
     */
    features?: Iterable<Feature> | AsyncIterable<Feature>;
}
/**
 * A read-only stream of features.
 */
export declare class FeatureStream extends EntityBase<FeatureStreamProperties> implements AsyncIterable<Feature> {
    /**
     * A human readable title describing the feature results.
     */
    title: string;
    /**
     * @inheritDoc
     */
    protected readonly _itemType = ItemType.FEATURE_STREAM;
    private readonly _features;
    constructor(arg?: Iterable<Feature> | AsyncIterable<Feature> | FeatureStreamProperties);
    /**
     * Provides AsyncIterable functionality.
     */
    [Symbol.asyncIterator](): AsyncIterator<Feature>;
    /**
     * Reads the stream into an array.
     */
    toArray(): Promise<Feature[]>;
    /**
     * Reads the stream into a FeatureSet.
     */
    toFeatureSet(): Promise<FeatureSet>;
    protected _getSerializableProperties(): PropertyDefs<FeatureStreamProperties>;
}
