import { Subject } from 'rxjs';
import { ViewContainerRef, NgZone, OnDestroy, AfterViewInit, OnInit, InjectionToken, EventEmitter } from '@angular/core';
import { Overlay } from '@angular/cdk/overlay';
import { Directionality } from '@angular/cdk/bidi';
import { DateAdapter } from '@angular/material/core';
import { MatDialog } from '@angular/material/dialog';
import { MatDatepicker, MatDatepickerInput } from '@angular/material/datepicker';
import { MatDaterangepickerContent } from '../datepicker-content/datepicker-content.component';
export interface CustomRange<D> {
    name: string;
    startDate: D | Date;
    endDate: D | Date;
}
export declare const MAT_DEFAULT_DATES_RANGES: InjectionToken<CustomRange<any>[]>;
export declare class MatDaterangepicker<D> extends MatDatepicker<D> implements OnInit, AfterViewInit, OnDestroy {
    private _drOverlay;
    private _drNgZone;
    private _drViewContainerRef;
    private _drScrollStrategy;
    _drDateAdapter: DateAdapter<D>;
    private _drDir;
    private _drDocument;
    _customRanges: CustomRange<D>[];
    applyButton: boolean;
    dualView: boolean;
    showCustomRanges: boolean;
    apply: EventEmitter<any>;
    customRanges: any[];
    /** The currently selected date. */
    get _selectedRangeEnd(): D | null;
    set _selectedRangeEnd(value: D | null);
    private _validSelectedRangeEnd;
    /** Emits new selected date when selected date changes. */
    readonly _selectedChangedRangeEnd: Subject<D>;
    readonly _clearRangeEnd: Subject<D>;
    _range: boolean;
    _datepickerInputRangeEnd: MatDatepickerInput<D>;
    private _inputRangeEndSubscription;
    private _drDialog;
    constructor(_drDialog: MatDialog, _drOverlay: Overlay, _drNgZone: NgZone, _drViewContainerRef: ViewContainerRef, _drScrollStrategy: any, _drDateAdapter: DateAdapter<D>, _drDir: Directionality, _drDocument: any, _customRanges: CustomRange<D>[]);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    forwardContentValues(instance: MatDaterangepickerContent<D>): void;
    ngOnDestroy(): void;
    selectRangeEnd(date: D): void;
    _userSelection(): void;
    applyRange(): void;
    clearRange(): void;
    _getViews(): number[];
    _registerInputRangeEnd(input: MatDatepickerInput<D>): void;
    _unregisterInputRangeEnd(input?: MatDatepickerInput<D>): void;
    private _selectRangeEnd;
    private _setCustomRanges;
}
