import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities.js";
import type { InitializableCollection } from "../support/InitializableCollectionProxy.js";
import type { SublayerLike } from "../support/esri.js";
import type { KMLLayerExtension } from "./KMLLayerExtension.js";
import type { SublayerExtensionProperties, SublayerProperties } from "./_SublayerExtension.js";
import { SublayerExtension, SubSublayerExtensionCollection } from "./_SublayerExtension.js";
import type { KMLSublayer } from "./support/_kml.js";
/**
 * Properties that can be passed into the constructor for
 * {@link KMLSublayerExtension}.
 */
export interface KMLSublayerExtensionProperties extends SublayerExtensionProperties {
    /**
     * See {@link mapping/_SublayerExtension!SublayerExtension.sublayer}.
     */
    sublayer?: KMLSublayer | SublayerProperties;
    /**
     * See
     * {@link mapping/_SublayerExtension!SublayerExtension.sublayerExtensions}.
     */
    sublayerExtensions?: (KMLSublayerExtension | KMLSublayerExtensionProperties)[];
}
/**
 * A collection of sublayer extensions belonging to a
 * {@link mapping/KMLLayerExtension!KMLLayerExtension} or a
 * {@link KMLSublayerExtension}.
 */
export interface KMLSublayerExtensionCollection extends InitializableCollection<KMLSublayerExtensionProperties, KMLSublayerExtension> {
    /**
     * Get the sublayer extension for a given id.
     *
     * @param id The id of the sublayer extension.
     * @returns The sublayer extension.
     */
    findById(id: string): KMLSublayerExtension;
    /**
     * Get the corresponding sublayer extension for a given sublayer id.
     *
     * @param id The id of the sublayer.
     * @returns The corresponding sublayer extension.
     */
    findBySublayerId(id: number): KMLSublayerExtension;
    /**
     * Gets the corresponding sublayer extension for a given sublayer.
     *
     * @param sublayer A sublayer.
     * @returns The corresponding sublayer extension.
     */
    forSublayer(sublayer: KMLSublayer): KMLSublayerExtension;
}
/**
 * Extends the capabilities of an Esri KMLSublayer object.
 */
export declare class KMLSublayerExtension extends SublayerExtension<KMLSublayerExtensionProperties> {
    get sublayer(): KMLSublayer;
    get layerExtension(): KMLLayerExtension;
    get sublayerExtensions(): KMLSublayerExtensionCollection;
    get supportsSublayers(): boolean;
    get hasFeatures(): boolean;
    get canChangeScale(): boolean;
    constructor(properties?: KMLSublayerExtensionProperties);
    /**
     * @inheritDoc
     */
    protected _capabilities(): QuerySourceCapabilities;
    /**
     * @inheritDoc
     */
    protected _isSupportedSublayer(sublayer: SublayerLike): boolean;
    protected _createSublayerExtension(properties?: KMLSublayerExtensionProperties): KMLSublayerExtension;
    /**
     * @inheritDoc
     */
    protected _createSublayer(_properties: SublayerProperties): KMLSublayer;
    /**
     * @inheritDoc
     */
    protected _applySublayerProperties(properties: SublayerProperties, sublayer: KMLSublayer): Promise<void>;
    protected _createSublayerExtensionCollection(): SubSublayerExtensionCollection;
    /**
     * @inheritDoc
     */
    protected _serializeSublayer(_sublayer: KMLSublayer): SublayerProperties;
}
