import { InjectionToken } from './InjectionToken';
import type { IContainer } from '../container/IContainer';
import { Instance } from '../utils/basic';
export type InstancePredicate = (dep: unknown) => boolean;
export declare class GroupInstanceToken extends InjectionToken<Instance[]> {
    private predicate;
    private isCascade;
    constructor(predicate: InstancePredicate);
    select<R>(fn: (target: Instance) => R): (s: IContainer) => R[];
    args(...deps: unknown[]): this;
    argsFn(getArgsFn: (s: IContainer) => unknown[]): InjectionToken<Instance[]>;
    lazy(): InjectionToken<Instance[]>;
    cascade(isTrue: boolean): this;
    resolve(c: IContainer): Instance[];
}
