declare type IHookActionFunction = (...args: Args) => Promise; declare type IHookFilterFunction = (...args: Args) => Promise; declare type IHookFilterSyncFunction = (...args: Args) => Args[0]; interface IHookFilter { id: string; function: IHookFilterFunction; priority: number; } interface IHookFilterSync { id: string; function: IHookFilterSyncFunction; priority: number; } interface IHookAction { id: string; function: IHookActionFunction; } interface IHookCache { actions: { [key: string]: IHookAction[]; }; filters: { [key: string]: IHookFilter[]; }; syncFilters: { [key: string]: IHookFilterSync[]; }; } export { IHookActionFunction, IHookFilterFunction, IHookFilterSyncFunction, IHookFilterSync, IHookAction, IHookFilter, IHookCache, };