import { EventEmitter, OnDestroy } from "@angular/core";
import { Control, ControlPosition, LeafletEvent, LeafletMouseEvent, Map } from "leaflet";
import { LayersControlProvider } from "./layers-control.provider";
import { MapProvider } from "./map.provider";
import * as i0 from "@angular/core";
/**
 * Angular2 directive for the attribution-control of Leaflet.
 *
 * *You can use this directive in an Angular2 template after importing `YagaModule`.*
 *
 * How to use in a template:
 * ```html
 * <yaga-map>
 *     <yaga-layers-control
 *         [(display)]="..."
 *         [(zIndex)]="..."
 *         [(position)]="..."
 *
 *         (add)="..."
 *         (remove)="..."
 *         (click)="..."
 *         (dblclick)="..."
 *         (mousedown)="..."
 *         (mouseover)="..."
 *         (mouseout)="..."
 *         >
 *         <yaga-tile-layer yaga-base-layer="OSM"></yaga-tile-layer>
 *         <yaga-geojson yaga-overlay-layer="My points"></yaga-geojson>
 *     </yaga-layers-control>
 * </yaga-map>
 * ```
 *
 * @link http://leafletjs.com/reference-1.2.0.html#control-layers Original Leaflet documentation
 * @link https://leaflet-ng2.yagajs.org/latest/browser-test?grep=Scale-Control%20Directive Unit-Test
 * @link https://leaflet-ng2.yagajs.org/latest/coverage/lcov-report/lib/attribution-control.directive.js.html
 * Test coverage
 * @link https://leaflet-ng2.yagajs.org/latest/typedoc/classes/layerscontroldirective.html API documentation
 * @example https://leaflet-ng2.yagajs.org/latest/examples/layers-control-directive/
 */
export declare class LayersControlDirective extends Control.Layers implements OnDestroy {
    protected mapProvider: MapProvider;
    /**
     * Two-Way bound property for the display status of the control.
     * Use it with `<yaga-layers-control [(display)]="someValue">`
     * or `<yaga-layers-control (displayChange)="processEvent($event)">`
     */
    displayChange: EventEmitter<boolean>;
    /**
     * Two-Way bound property for the zIndex of the control.
     * Use it with `<yaga-layers-control [(zIndex)]="someValue">`
     * or `<yaga-layers-control (zIndexChange)="processEvent($event)">`
     */
    zIndexChange: EventEmitter<number>;
    /**
     * Two-Way bound property for the position of the control.
     * Use it with `<yaga-layers-control [(position)]="someValue">`
     * or `<yaga-layers-control (positionChange)="processEvent($event)">`
     */
    positionChange: EventEmitter<ControlPosition>;
    /**
     * From leaflet fired add event.
     * Use it with `<yaga-layers-control (add)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-add Original Leaflet documentation
     */
    addEvent: EventEmitter<LeafletEvent>;
    /**
     * From leaflet fired remove event.
     * Use it with `<yaga-layers-control (remove)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-remove Original Leaflet documentation
     */
    removeEvent: EventEmitter<LeafletEvent>;
    /**
     * From leaflet fired click event.
     * Use it with `<yaga-layers-control (click)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-click Original Leaflet documentation
     */
    clickEvent: EventEmitter<LeafletMouseEvent>;
    /**
     * From leaflet fired dblclick event.
     * Use it with `<yaga-layers-control (dblclick)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-dblclick Original Leaflet documentation
     */
    dblclickEvent: EventEmitter<LeafletMouseEvent>;
    /**
     * From leaflet fired mousedown event.
     * Use it with `<yaga-layers-control (mousedown)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-mousedown Original Leaflet documentation
     */
    mousedownEvent: EventEmitter<LeafletMouseEvent>;
    /**
     * From leaflet fired mouseover event.
     * Use it with `<yaga-layers-control (mouseover)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-mouseover Original Leaflet documentation
     */
    mouseoverEvent: EventEmitter<LeafletMouseEvent>;
    /**
     * From leaflet fired mouseout event.
     * Use it with `<yaga-layers-control (mouseout)="processEvent($event)">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-mouseout Original Leaflet documentation
     */
    mouseoutEvent: EventEmitter<LeafletMouseEvent>;
    constructor(mapProvider: MapProvider, layersControlProvider: LayersControlProvider);
    /**
     * Internal method to provide the removal of the control in Leaflet, when removing it from the Angular template
     */
    ngOnDestroy(): void;
    /**
     * Derived remove function
     */
    remove(): this;
    /**
     * Derived addTo function
     */
    addTo(map: Map): this;
    /**
     * Derived method of the original setPosition.
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-setposition Original Leaflet documentation
     */
    setPosition(val: ControlPosition): this;
    /**
     * Two-Way bound property for the opacity.
     * Use it with `<yaga-layers-control [(opacity)]="someValue">`
     * or `<yaga-layers-control [opacity]="someValue">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-opacity Original Leaflet documentation
     */
    set opacity(val: number | undefined);
    get opacity(): number | undefined;
    /**
     * Two-Way bound property for the display state.
     * Use it with `<yaga-layers-control [(display)]="someValue">`
     * or `<yaga-layers-control [display]="someValue">`
     */
    set display(val: boolean);
    get display(): boolean;
    /**
     * Two-Way bound property for the position.
     * Use it with `<yaga-layers-control [(position)]="someValue">`
     * or `<yaga-layers-control [position]="someValue">`
     * @link http://leafletjs.com/reference-1.2.0.html#control-layers-position Original Leaflet documentation
     */
    set position(val: ControlPosition);
    get position(): ControlPosition;
    /**
     * Two-Way bound property for the zIndex of the control.
     * Use it with `<yaga-layers-control [(zIndex)]="someValue">`
     * or `<yaga-layers-control (zIndexChange)="processEvent($event)">`
     */
    set zIndex(zIndex: number | undefined);
    get zIndex(): number | undefined;
    /**
     * Reimplemention of initLayout private function to register event listeners after DOM creation.
     */
    protected _initLayout(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayersControlDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayersControlDirective, "yaga-layers-control", never, { "opacity": "opacity"; "display": "display"; "position": "position"; "zIndex": "zIndex"; }, { "displayChange": "displayChange"; "zIndexChange": "zIndexChange"; "positionChange": "positionChange"; "addEvent": "add"; "removeEvent": "remove"; "clickEvent": "click"; "dblclickEvent": "dblclick"; "mousedownEvent": "mousedown"; "mouseoverEvent": "mouseover"; "mouseoutEvent": "mouseout"; }, never>;
}
