/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { AxiosPromise } from 'axios';
import { GoogleApis } from '../..';
import { BodyResponseCallback, GlobalOptions, MethodOptions } from '../../lib/api';
/**
 * Tasks API
 *
 * Lets you manage your tasks and task lists.
 *
 * @example
 * const google = require('googleapis');
 * const tasks = google.tasks('v1');
 *
 * @namespace tasks
 * @type {Function}
 * @version v1
 * @variation v1
 * @param {object=} options Options for Tasks
 */
export declare class Tasks {
    _options: GlobalOptions;
    google: GoogleApis;
    root: this;
    tasklists: Resource$Tasklists;
    tasks: Resource$Tasks;
    constructor(options: GlobalOptions, google: GoogleApis);
    getRoot(): this;
}
export interface Schema$Task {
    /**
     * Completion date of the task (as a RFC 3339 timestamp). This field is
     * omitted if the task has not been completed.
     */
    completed: string;
    /**
     * Flag indicating whether the task has been deleted. The default if False.
     */
    deleted: boolean;
    /**
     * Due date of the task (as a RFC 3339 timestamp). Optional.
     */
    due: string;
    /**
     * ETag of the resource.
     */
    etag: string;
    /**
     * Flag indicating whether the task is hidden. This is the case if the task
     * had been marked completed when the task list was last cleared. The default
     * is False. This field is read-only.
     */
    hidden: boolean;
    /**
     * Task identifier.
     */
    id: string;
    /**
     * Type of the resource. This is always &quot;tasks#task&quot;.
     */
    kind: string;
    /**
     * Collection of links. This collection is read-only.
     */
    links: any[];
    /**
     * Notes describing the task. Optional.
     */
    notes: string;
    /**
     * Parent task identifier. This field is omitted if it is a top-level task.
     * This field is read-only. Use the &quot;move&quot; method to move the task
     * under a different parent or to the top level.
     */
    parent: string;
    /**
     * String indicating the position of the task among its sibling tasks under
     * the same parent task or at the top level. If this string is greater than
     * another task&#39;s corresponding position string according to
     * lexicographical ordering, the task is positioned after the other task under
     * the same parent task (or at the top level). This field is read-only. Use
     * the &quot;move&quot; method to move the task to another position.
     */
    position: string;
    /**
     * URL pointing to this task. Used to retrieve, update, or delete this task.
     */
    selfLink: string;
    /**
     * Status of the task. This is either &quot;needsAction&quot; or
     * &quot;completed&quot;.
     */
    status: string;
    /**
     * Title of the task.
     */
    title: string;
    /**
     * Last modification time of the task (as a RFC 3339 timestamp).
     */
    updated: string;
}
export interface Schema$TaskList {
    /**
     * ETag of the resource.
     */
    etag: string;
    /**
     * Task list identifier.
     */
    id: string;
    /**
     * Type of the resource. This is always &quot;tasks#taskList&quot;.
     */
    kind: string;
    /**
     * URL pointing to this task list. Used to retrieve, update, or delete this
     * task list.
     */
    selfLink: string;
    /**
     * Title of the task list.
     */
    title: string;
    /**
     * Last modification time of the task list (as a RFC 3339 timestamp).
     */
    updated: string;
}
export interface Schema$TaskLists {
    /**
     * ETag of the resource.
     */
    etag: string;
    /**
     * Collection of task lists.
     */
    items: Schema$TaskList[];
    /**
     * Type of the resource. This is always &quot;tasks#taskLists&quot;.
     */
    kind: string;
    /**
     * Token that can be used to request the next page of this result.
     */
    nextPageToken: string;
}
export interface Schema$Tasks {
    /**
     * ETag of the resource.
     */
    etag: string;
    /**
     * Collection of tasks.
     */
    items: Schema$Task[];
    /**
     * Type of the resource. This is always &quot;tasks#tasks&quot;.
     */
    kind: string;
    /**
     * Token used to access the next page of this result.
     */
    nextPageToken: string;
}
export declare class Resource$Tasklists {
    root: Tasks;
    constructor(root: Tasks);
    getRoot(): Tasks;
    /**
     * tasks.tasklists.delete
     * @desc Deletes the authenticated user's specified task list.
     * @alias tasks.tasklists.delete
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    delete(params?: any, options?: MethodOptions): AxiosPromise<void>;
    delete(params?: any, options?: MethodOptions | BodyResponseCallback<void>, callback?: BodyResponseCallback<void>): void;
    /**
     * tasks.tasklists.get
     * @desc Returns the authenticated user's specified task list.
     * @alias tasks.tasklists.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$TaskList>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TaskList>, callback?: BodyResponseCallback<Schema$TaskList>): void;
    /**
     * tasks.tasklists.insert
     * @desc Creates a new task list and adds it to the authenticated user's task
     * lists.
     * @alias tasks.tasklists.insert
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {().TaskList} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    insert(params?: any, options?: MethodOptions): AxiosPromise<Schema$TaskList>;
    insert(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TaskList>, callback?: BodyResponseCallback<Schema$TaskList>): void;
    /**
     * tasks.tasklists.list
     * @desc Returns all the authenticated user's task lists.
     * @alias tasks.tasklists.list
     * @memberOf! ()
     *
     * @param {object=} params Parameters for request
     * @param {string=} params.maxResults Maximum number of task lists returned on one page. Optional. The default is 100.
     * @param {string=} params.pageToken Token specifying the result page to return. Optional.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$TaskLists>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TaskLists>, callback?: BodyResponseCallback<Schema$TaskLists>): void;
    /**
     * tasks.tasklists.patch
     * @desc Updates the authenticated user's specified task list. This method
     * supports patch semantics.
     * @alias tasks.tasklists.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.tasklist Task list identifier.
     * @param {().TaskList} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    patch(params?: any, options?: MethodOptions): AxiosPromise<Schema$TaskList>;
    patch(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TaskList>, callback?: BodyResponseCallback<Schema$TaskList>): void;
    /**
     * tasks.tasklists.update
     * @desc Updates the authenticated user's specified task list.
     * @alias tasks.tasklists.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.tasklist Task list identifier.
     * @param {().TaskList} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    update(params?: any, options?: MethodOptions): AxiosPromise<Schema$TaskList>;
    update(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TaskList>, callback?: BodyResponseCallback<Schema$TaskList>): void;
}
export declare class Resource$Tasks {
    root: Tasks;
    constructor(root: Tasks);
    getRoot(): Tasks;
    /**
     * tasks.tasks.clear
     * @desc Clears all completed tasks from the specified task list. The affected
     * tasks will be marked as 'hidden' and no longer be returned by default when
     * retrieving all tasks for a task list.
     * @alias tasks.tasks.clear
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    clear(params?: any, options?: MethodOptions): AxiosPromise<void>;
    clear(params?: any, options?: MethodOptions | BodyResponseCallback<void>, callback?: BodyResponseCallback<void>): void;
    /**
     * tasks.tasks.delete
     * @desc Deletes the specified task from the task list.
     * @alias tasks.tasks.delete
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.task Task identifier.
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    delete(params?: any, options?: MethodOptions): AxiosPromise<void>;
    delete(params?: any, options?: MethodOptions | BodyResponseCallback<void>, callback?: BodyResponseCallback<void>): void;
    /**
     * tasks.tasks.get
     * @desc Returns the specified task.
     * @alias tasks.tasks.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.task Task identifier.
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$Task>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Task>, callback?: BodyResponseCallback<Schema$Task>): void;
    /**
     * tasks.tasks.insert
     * @desc Creates a new task on the specified task list.
     * @alias tasks.tasks.insert
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.parent Parent task identifier. If the task is created at the top level, this parameter is omitted. Optional.
     * @param {string=} params.previous Previous sibling task identifier. If the task is created at the first position among its siblings, this parameter is omitted. Optional.
     * @param {string} params.tasklist Task list identifier.
     * @param {().Task} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    insert(params?: any, options?: MethodOptions): AxiosPromise<Schema$Task>;
    insert(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Task>, callback?: BodyResponseCallback<Schema$Task>): void;
    /**
     * tasks.tasks.list
     * @desc Returns all tasks in the specified task list.
     * @alias tasks.tasks.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.completedMax Upper bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date.
     * @param {string=} params.completedMin Lower bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date.
     * @param {string=} params.dueMax Upper bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date.
     * @param {string=} params.dueMin Lower bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date.
     * @param {string=} params.maxResults Maximum number of task lists returned on one page. Optional. The default is 100.
     * @param {string=} params.pageToken Token specifying the result page to return. Optional.
     * @param {boolean=} params.showCompleted Flag indicating whether completed tasks are returned in the result. Optional. The default is True.
     * @param {boolean=} params.showDeleted Flag indicating whether deleted tasks are returned in the result. Optional. The default is False.
     * @param {boolean=} params.showHidden Flag indicating whether hidden tasks are returned in the result. Optional. The default is False.
     * @param {string} params.tasklist Task list identifier.
     * @param {string=} params.updatedMin Lower bound for a task's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$Tasks>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Tasks>, callback?: BodyResponseCallback<Schema$Tasks>): void;
    /**
     * tasks.tasks.move
     * @desc Moves the specified task to another position in the task list. This
     * can include putting it as a child task under a new parent and/or move it to
     * a different position among its sibling tasks.
     * @alias tasks.tasks.move
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.parent New parent task identifier. If the task is moved to the top level, this parameter is omitted. Optional.
     * @param {string=} params.previous New previous sibling task identifier. If the task is moved to the first position among its siblings, this parameter is omitted. Optional.
     * @param {string} params.task Task identifier.
     * @param {string} params.tasklist Task list identifier.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    move(params?: any, options?: MethodOptions): AxiosPromise<Schema$Task>;
    move(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Task>, callback?: BodyResponseCallback<Schema$Task>): void;
    /**
     * tasks.tasks.patch
     * @desc Updates the specified task. This method supports patch semantics.
     * @alias tasks.tasks.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.task Task identifier.
     * @param {string} params.tasklist Task list identifier.
     * @param {().Task} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    patch(params?: any, options?: MethodOptions): AxiosPromise<Schema$Task>;
    patch(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Task>, callback?: BodyResponseCallback<Schema$Task>): void;
    /**
     * tasks.tasks.update
     * @desc Updates the specified task.
     * @alias tasks.tasks.update
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.task Task identifier.
     * @param {string} params.tasklist Task list identifier.
     * @param {().Task} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    update(params?: any, options?: MethodOptions): AxiosPromise<Schema$Task>;
    update(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Task>, callback?: BodyResponseCallback<Schema$Task>): void;
}
