import { DependencyKey, IContainer } from '../container/IContainer';
import { InjectionToken } from './InjectionToken';
import { IRegistration } from '../registration/IRegistration';
import { BindToken } from './BindToken';
import { ArgsFn, ProviderOptions } from '../provider/IProvider';
export declare class GroupAliasToken<T = any> extends InjectionToken<T[]> implements BindToken<T> {
    readonly token: DependencyKey;
    private readonly _getArgsFn;
    private readonly _isLazy;
    constructor(token: DependencyKey, { getArgsFn, isLazy }?: {
        getArgsFn?: ArgsFn;
        isLazy?: boolean;
    });
    select<R>(fn: (target: T[]) => R[]): (s: IContainer) => R[];
    resolve(s: IContainer, { args, lazy }?: ProviderOptions): T[];
    bindTo(r: IRegistration<T>): void;
    args(...newArgs: unknown[]): GroupAliasToken<T>;
    argsFn(fn: (s: IContainer) => unknown[]): GroupAliasToken<T>;
    lazy(): GroupAliasToken<T>;
}
export declare const toGroupAlias: <T>(token: DependencyKey) => GroupAliasToken<T>;
