/**
 * Container-level decorator that wires up the kos-ui-sdk container
 * indexing system. Composes with the upstream `@kosContainerAware`
 * (or with legacy `@kosChild`-based containers) — it only needs an
 * `itemsProperty` pointing at the array of items the container
 * exposes.
 *
 * Three responsibilities:
 *
 *   1. Wraps `init` so the decorator-declared collection is written
 *      onto the container's own `KosContext`. Items resolve the
 *      value via `KosContext.get(INDEX_COLLECTION_KEY)`, which
 *      auto-walks the parent chain.
 *
 *   2. Registers a `SubscriptionHandlers` entry for
 *      `KosContainerIndexEvents.REQUEST_SEED`. When a consumer
 *      publishes that topic, the container reads its current items,
 *      maps them via `INDEX_RECORD_SYMBOL`, and emits one SEED
 *      event. Lets subscribe order stop mattering.
 *
 *   3. Wraps `unload` to emit one PURGE per distinct collection in
 *      the current items, so consumers can drop the collection's
 *      records at container teardown.
 *
 * Membership detection (ADDED, REMOVED) is owned by
 * `KosModelContainer` itself, not this decorator — the events fire
 * at the moment of mutation, with no diffing or property-watching
 * involved.
 *
 * Modeled on `kos-studio-state-aware`: class decorator, options
 * object, `target.prototype[ModelEffects]` / `[SubscriptionHandlers]`
 * registration pattern.
 *
 * @kosService core.indexing
 * @kosApiLevel 22
 */
export interface KosContainerIndexAwareOptions {
    /**
     * Name of the property on the container that exposes its items
     * as an array. May be a `@kosContainerAware`-injected `data` /
     * `models` getter, or a legacy custom getter (e.g.
     * `virtualMachines` on a container with a `@kosChild`-managed
     * collection).
     *
     * Used for SEED re-emission and PURGE. Membership add/remove
     * events come from `KosModelContainer` directly and do not
     * depend on this property.
     */
    itemsProperty: string;
    /**
     * Collection tag written onto the container's own `KosContext`
     * so child items can resolve it via auto-walk. Optional when
     * items declare their own `collection` via `@kosIndexAware`
     * (heterogeneous containers).
     */
    collection?: string;
}
/**
 * Class decorator that wires a container model into the kos-ui-sdk
 * indexing system.
 *
 * @example Homogeneous container — single collection
 * ```ts
 * @kosModel("image-container-model")
 * @kosContainerAware<IImageModel>()
 * @kosContainerIndexAware({ itemsProperty: "data", collection: "images" })
 * class ImageContainerModelImpl implements IKosDataModel { ... }
 * ```
 *
 * @example Heterogeneous container — items declare their own collection
 * ```ts
 * @kosModel("virtual-machine-container-model")
 * @kosContainerIndexAware({ itemsProperty: "virtualMachines" })
 * class VirtualMachineContainerModelImpl implements IKosDataModel { ... }
 * ```
 *
 * @category KOS Model Decorator
 * @kosService core.indexing
 * @kosApiLevel 22
 */
export declare function kosContainerIndexAware(options: KosContainerIndexAwareOptions): ClassDecorator;
//# sourceMappingURL=kos-container-index-aware.d.ts.map