/**
 * -------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.
 * See License in the project root for license information.
 * -------------------------------------------------------------------------------------------
 */
import { PlannerTask } from '@microsoft/microsoft-graph-types';
import { OutlookTask } from '@microsoft/microsoft-graph-types-beta';
import { MgtTemplatedComponent } from '../templatedComponent';
import '../mgt-person/mgt-person';
import '../sub-components/mgt-arrow-options/mgt-arrow-options';
import '../sub-components/mgt-dot-options/mgt-dot-options';
import '../sub-components/mgt-flyout/mgt-flyout';
/**
 * Defines how a person card is shown when a user interacts with
 * a person component
 *
 * @export
 * @enum {number}
 */
export declare enum TasksSource {
    /**
     * Use Microsoft Planner
     */
    planner = 0,
    /**
     * Use Microsoft To-Do
     */
    todo = 1
}
/**
 * component enables the user to view, add, remove, complete, or edit tasks. It works with tasks in Microsoft Planner or Microsoft To-Do.
 *
 * @export
 * @class MgtTasks
 * @extends {MgtBaseComponent}
 */
export declare class MgtTasks extends MgtTemplatedComponent {
    /**
     * determines whether todo, or planner functionality for task component
     *
     * @readonly
     * @memberof MgtTasks
     */
    get res(): {
        BASE_SELF_ASSIGNED: string;
        BUCKETS_SELF_ASSIGNED: string;
        BUCKET_NOT_FOUND: string;
        PLANS_SELF_ASSIGNED: string;
        PLAN_NOT_FOUND: string;
    };
    /**
     * Array of styles to apply to the element. The styles should be defined
     * using the `css` tag function.
     */
    static get styles(): import("lit-element").CSSResult[];
    /**
     * Get whether new task view is visible
     *
     * @memberof MgtTasks
     */
    get isNewTaskVisible(): boolean;
    /**
     * Set whether new task is visible
     *
     * @memberof MgtTasks
     */
    set isNewTaskVisible(value: boolean);
    /**
     * determines if tasks are un-editable
     * @type {boolean}
     */
    readOnly: boolean;
    /**
     * determines which task source is loaded, either planner or todo
     * @type {string}
     */
    dataSource: TasksSource;
    /**
     * if set, the component will only show tasks from either this plan or group
     * @type {string}
     */
    targetId: string;
    /**
     * if set, the component will only show tasks from this bucket or folder
     * @type {string}
     */
    targetBucketId: string;
    /**
     * if set, the component will first show tasks from this plan or group
     *
     * @type {string}
     * @memberof MgtTasks
     */
    initialId: string;
    /**
     * if set, the component will first show tasks from this bucket or folder
     *
     * @type {string}
     * @memberof MgtTasks
     */
    initialBucketId: string;
    /**
     * sets whether the header is rendered
     *
     * @type {boolean}
     * @memberof MgtTasks
     */
    hideHeader: boolean;
    /**
     * allows developer to define specific group id
     */
    groupId: string;
    /**
     * Optional filter function when rendering tasks
     *
     * @memberof MgtTasks
     */
    taskFilter: (task: PlannerTask | OutlookTask) => boolean;
    private _isNewTaskVisible;
    private _newTaskBeingAdded;
    private _newTaskName;
    private _newTaskDueDate;
    private _newTaskGroupId;
    private _newTaskFolderId;
    private _groups;
    private _folders;
    private _tasks;
    private _hiddenTasks;
    private _loadingTasks;
    private _inTaskLoad;
    private _hasDoneInitialLoad;
    private _todoDefaultSet;
    private _currentGroup;
    private _currentFolder;
    private _currentTask;
    private isPeoplePickerVisible;
    private _me;
    private providerUpdateCallback;
    private handleWindowClick;
    constructor();
    /**
     * updates provider state
     *
     * @memberof MgtTasks
     */
    connectedCallback(): void;
    /**
     * removes updates on provider state
     *
     * @memberof MgtTasks
     */
    disconnectedCallback(): void;
    /**
     * Synchronizes property values when attributes change.
     *
     * @param {*} name
     * @param {*} oldValue
     * @param {*} newValue
     * @memberof MgtTasks
     */
    attributeChangedCallback(name: string, oldVal: string, newVal: string): void;
    /**
     * Invoked when the element is first updated. Implement to perform one time
     * work on the element after update.
     *
     * Setting properties inside this method will trigger the element to update
     * again after this update cycle completes.
     *
     * * @param _changedProperties Map of changed properties with old values
     */
    protected firstUpdated(): void;
    /**
     * Invoked on each update to perform rendering tasks. This method must return
     * a lit-html TemplateResult. Setting properties inside this method will *not*
     * trigger the element to update.
     */
    protected render(): import("lit-element").TemplateResult;
    /**
     * loads tasks from dataSource
     *
     * @returns
     * @memberof MgtTasks
     */
    private loadTasks;
    private _loadTargetTodoTasks;
    private _loadTargetPlannerTasks;
    private _loadAllTasks;
    private _loadTasksForGroup;
    private addTask;
    private completeTask;
    private uncompleteTask;
    private removeTask;
    private assignPeople;
    private onAddTaskClick;
    private renderPlanOptions;
    private renderNewTask;
    private showPeoplePicker;
    private hidePeoplePicker;
    private getPeoplePicker;
    private getMgtPeople;
    private renderTask;
    private renderAssignedPeople;
    private handleTaskClick;
    private renderLoadingTask;
    private renderPlannerIcon;
    private renderBucketIcon;
    private renderCalendarIcon;
    private getTaskSource;
    private getPlanTitle;
    private getFolderName;
    private isTaskInSelectedGroupFilter;
    private isTaskInSelectedFolderFilter;
    private dateToInputValue;
}
