import { InjectFlags, InjectionToken, Type } from '@angular/core'; import { LinkedList } from '@abp/utils'; import { O } from 'ts-toolbelt'; export declare abstract class ActionList> extends LinkedList { } export declare abstract class ActionData { abstract getInjected: (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => T; index?: number; abstract record: R; get data(): ReadonlyActionData; } export declare type ReadonlyActionData = O.Readonly, 'data'>>; export declare abstract class Action { readonly permission: string; readonly visible: ActionPredicate; readonly action: ActionCallback; constructor(permission: string, visible?: ActionPredicate, action?: ActionCallback); } export declare type ActionCallback = (data: Omit, 'data'>) => R; export declare type ActionPredicate = (data?: Omit, 'data'>) => boolean; export declare abstract class ActionsFactory> { protected abstract _ctor: Type; private contributorCallbacks; get(name: string): C; } export declare abstract class Actions { private readonly callbackList; protected abstract _ctor: Type; get actions(): L; constructor(callbackList: ActionContributorCallback[]); addContributor(contributeCallback: ActionContributorCallback): void; clearContributors(): void; } export declare type ActionContributorCallbacks> = Record[]>; export declare type ActionContributorCallback> = (actionList: L) => any;