/*!
  Copyright 2018 Ron Buckton (rbuckton@chronicles.org)

  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.
 */
/** @module "iterable-query/fn" */
import { AsyncHierarchyIterable, PossiblyAsyncHierarchyIterable } from "../types";
/** @category Hierarchy */
export declare function rootAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function rootAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function ancestorsAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function ancestorsAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function ancestorsAndSelfAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function ancestorsAndSelfAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function descendantsAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function descendantsAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function descendantsAndSelfAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function descendantsAndSelfAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function parentsAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function parentsAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function selfAsync<TNode, T extends TNode, U extends T>(source: PossiblyAsyncHierarchyIterable<TNode, T>, predicate: (element: T) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function selfAsync<TNode, T extends TNode>(source: AsyncHierarchyIterable<T>, predicate?: (element: T) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode, T>;
/** @category Hierarchy */
export declare function siblingsAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function siblingsAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function siblingsAndSelfAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function siblingsAndSelfAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function siblingsBeforeSelfAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function siblingsBeforeSelfAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function siblingsAfterSelfAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function siblingsAfterSelfAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
/** @category Hierarchy */
export declare function childrenAsync<TNode, U extends TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate: (element: TNode) => element is U): AsyncHierarchyIterable<TNode, U>;
/** @category Hierarchy */
export declare function childrenAsync<TNode>(source: PossiblyAsyncHierarchyIterable<TNode>, predicate?: (element: TNode) => boolean | PromiseLike<boolean>): AsyncHierarchyIterable<TNode>;
//# sourceMappingURL=traversalAsync.d.ts.map