import type { QuerySourceCapabilities } from "../data/QuerySourceCapabilities.js";
import type { Schema } from "../data/Schema.js";
import type { InitializableCollection } from "../support/InitializableCollectionProxy.js";
import type { GeometryType, MapNotesSublayer, SublayerLike } from "../support/esri.js";
import type { MapNotesLayerExtension } from "./MapNotesLayerExtension.js";
import type { SublayerExtensionProperties, SublayerProperties } from "./_SublayerExtension.js";
import { SublayerExtension, SublayerSchema, SubSublayerExtensionCollection } from "./_SublayerExtension.js";
/**
 * Properties that can be passed into the constructor for
 * {@link MapNotesSublayerExtension}.
 */
export interface MapNotesSublayerExtensionProperties extends SublayerExtensionProperties {
    /**
     * See {@link mapping/_SublayerExtension!SublayerExtension.sublayer}.
     */
    sublayer?: MapNotesSublayer | SublayerProperties;
}
/**
 * A collection of sublayer extensions belonging to a
 * {@link mapping/MapNotesLayerExtension!MapNotesLayerExtension} or a
 * {@link MapNotesSublayerExtension}.
 */
export interface MapNotesSublayerExtensionCollection extends InitializableCollection<MapNotesSublayerExtensionProperties, MapNotesSublayerExtension> {
    /**
     * Get the sublayer extension for a given id.
     *
     * @param id The id of the sublayer extension.
     * @returns The sublayer extension.
     */
    findById(id: string): MapNotesSublayerExtension;
    /**
     * 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): MapNotesSublayerExtension;
    /**
     * Gets the corresponding sublayer extension for a given sublayer.
     *
     * @param sublayer A sublayer.
     * @returns The corresponding sublayer extension.
     */
    forSublayer(sublayer: MapNotesSublayer): MapNotesSublayerExtension;
}
/**
 * Extends the capabilities of an Esri MapNotesSublayer object.
 */
export declare class MapNotesSublayerExtension extends SublayerExtension<MapNotesSublayerExtensionProperties> {
    get sublayer(): MapNotesSublayer;
    get layerExtension(): MapNotesLayerExtension;
    get sublayerExtensions(): MapNotesSublayerExtensionCollection;
    get canChangeScale(): boolean;
    get canChangeOpacity(): boolean;
    get canToggleVisibility(): boolean;
    get hasFeatures(): boolean;
    constructor(properties?: MapNotesSublayerExtensionProperties);
    /**
     * @inheritDoc
     */
    protected _capabilities(): QuerySourceCapabilities;
    protected _createSchema(): Schema;
    protected _onInitialize(): Promise<void>;
    /**
     * @inheritDoc
     */
    protected _isSupportedSublayer(sublayer: SublayerLike): boolean;
    /**
     * @inheritDoc
     */
    protected _createSublayer(_properties: SublayerProperties): MapNotesSublayer;
    /**
     * @inheritDoc
     */
    protected _applySublayerProperties(properties: SublayerProperties, sublayer: MapNotesSublayer): Promise<void>;
    protected _createSublayerExtensionCollection(): SubSublayerExtensionCollection;
    /**
     * @inheritDoc
     */
    protected _serializeSublayer(_sublayer: MapNotesSublayer): SublayerProperties;
}
/**
 * An implementation of Schema that allows for schema properties to directly
 * mirror equivalent properties on a MapNotesSublayer.
 */
export declare class MapNotesSublayerExtensionSchema extends SublayerSchema {
    /**
     * @inheritDoc
     */
    protected readonly _sublayerExtension: MapNotesSublayerExtension;
    get geometryType(): GeometryType;
    set geometryType(value: GeometryType);
    private _getDefaultGeometryType;
}
