/**
 * <!-- skip-example -->
 * Combines several repository providers into one.
 * @param {MultiGroupProvider[]} providers
 * @property {MultiGroupProvider[]} providers
 * @example
 *   const provider = new AggregationProvider([
 *     new GithubProvider(),
 *   new BitbucketProvider()
 * ]);
 *  const repository1 = await provider.repository(
 *    'https://github.com/arlac77/aggregation-repository-provider'
 *  );
 * const repository2 = await provider.repository(
 *  'https://arlac77@bitbucket.org/arlac77/sync-test-repository.git'
 * );
 * // repository1 -> github
 * // repository2 -> bitbucket
 */
export class AggregationProvider extends MultiGroupProvider {
    /**
     * Creates a new provider for a given list of provider factories.
     * Factories can be import urls with additional instance identifier.
     * ```txt
     * IDENTIFIER(my-repository-provider)
     * ```
     * @param {(new()=>MultiGroupProvider)[]|string[]} factories
     * @param {Object} [options] additional options
     * @param {Object} [env] taken from process.env
     * @return {Promise<MultiGroupProvider>} newly created provider
     */
    static initializeWithProviders(factories?: (new () => MultiGroupProvider)[] | string[], options?: any, env?: any): Promise<MultiGroupProvider>;
    constructor(providers: any, options: any);
    setProviders(providers: any): void;
    _providers: any;
    providers(name: any): AsyncGenerator<any, void, any>;
    lookup(type: any, name: any): Promise<any>;
    /**
     * Retrieve named pull request in one of the given providers.
     * They are consulted in the order of the propviders given to the constructor.
     * @param {string} name
     * @return {Promise<PullRequest>}
     */
    pullRequest(name: string): Promise<PullRequest>;
    /**
     * Retrieve named tag in one of the given providers.
     * They are consulted in the order of the propviders given to the constructor.
     * @param {string} name
     * @return {Promise<Tag>}
     */
    tag(name: string): Promise<Tag>;
    /**
     * List provider objects of a given type collected from all providers.
     *
     * @param {string} type name of the method to deliver typed iterator projects,milestones,hooks,repositories,branches,tags
     * @param {string[]|string|undefined} patterns group / repository filter
     * @return {AsyncIterable<Repository|PullRequest|Branch|Tag|Project|Milestone|Hook>} all matching repositories of the providers
     */
    list(type: string, patterns: string[] | string | undefined): AsyncIterable<Repository | PullRequest | Branch | Tag | Project | Milestone | Hook>;
}
export default AggregationProvider;
import { MultiGroupProvider } from "repository-provider";
import { PullRequest } from "repository-provider";
import { Tag } from "repository-provider";
import { Repository } from "repository-provider";
import { Branch } from "repository-provider";
import { Project } from "repository-provider";
import { Milestone } from "repository-provider";
import { Hook } from "repository-provider";
