import { Context } from "../Entities";
import { YMapEntity, YMapGroupEntity } from "../YMapEnities";
type VerticalPosition = "top" | "bottom";
type ComputedVerticalPosition = "top" | "center" | "bottom";
type HorizontalPosition = "left" | "right";
type ComputedHorizontalPosition = "left" | "center" | "right";
type Orientation = "horizontal" | "vertical";
export type YMapControlContext = {
    position: [
        ComputedVerticalPosition,
        ComputedHorizontalPosition,
        Orientation
    ];
};
export declare const ControlContext: Context<YMapControlContext>;
/**
 * Describes controls position.
 */
type Position = VerticalPosition | HorizontalPosition | `${VerticalPosition} ${HorizontalPosition}` | `${HorizontalPosition} ${VerticalPosition}`;
/**
 * YMapControls props
 */
export type YMapControlsProps = {
    /** Controls position. */
    position: Position;
    /** Controls orientation. */
    orientation?: Orientation;
};
export declare function prepareProps(props: YMapControlsProps): [
    ComputedVerticalPosition,
    ComputedHorizontalPosition,
    Orientation
] | null;
/**
 * DOM container for grouping a number of controls to group and position them
 * @example
 *```javascript
 * const map = new YMap(document.getElementById('map-root'), {
 *     location: [37.622504, 55.753215],
 *     mode: 'raster'
 * });
 * const controls = new YMapControls({position: 'top left horizontal'});
 * const button = text => new YMapControlButton({
 *     text: 'Click me',
 *     onClick: () => {
 *         alert('Click');
 *     }
 * });
 * map.addChild(controls);
 * ```
 */
export declare class YMapControls extends YMapGroupEntity<YMapControlsProps> {
    private _element?;
    private _detachDom?;
    constructor(props: YMapControlsProps, children?: YMapEntity<unknown>[]);
    protected _onAttach(): void;
    protected _onUpdate(diffProps: Partial<YMapControlsProps>): void;
    protected _onDetach(): void;
}
export {};
