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 {};
