import { InjectFlags, InjectionToken, Type } from '@angular/core'; import { LinkedList } from '@abp/utils'; import { O } from 'ts-toolbelt'; import { ePropType } from '../enums'; export declare abstract class PropList> extends LinkedList { } export declare abstract class PropData { abstract getInjected: (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => T; index?: number; abstract record: R; get data(): ReadonlyPropData; } export declare type ReadonlyPropData = O.Readonly, 'data'>>; export declare abstract class Prop { readonly type: ePropType; readonly name: string; readonly displayName: string; readonly permission: string; readonly visible: PropPredicate; readonly isExtra: boolean; constructor(type: ePropType, name: string, displayName: string, permission: string, visible?: PropPredicate, isExtra?: boolean); } export declare type PropCallback = (data: Omit, 'data'>, auxData?: any) => R; export declare type PropPredicate = (data?: Omit, 'data'>, auxData?: any) => boolean; export declare abstract class PropsFactory> { protected abstract _ctor: Type; private contributorCallbacks; get(name: string): C; } export declare abstract class Props { private readonly callbackList; protected abstract _ctor: Type; get props(): L; constructor(callbackList: PropContributorCallback[]); addContributor(contributeCallback: PropContributorCallback): void; clearContributors(): void; } export declare type PropContributorCallbacks> = Record[]>; export declare type PropContributorCallback> = (propList: L) => any;