export type UntapCallback = () => void; export type SyncTapablePlugin = { name: string; fn: (context: Context, payload: Payload, result: Result) => Result; }; export type PromiseTapablePlugin = { name: string; options: { type: 'promise'; }; fn: (context: Context, payload: Payload, result: Result) => Promise; }; export type AsyncFn = (error: Error | undefined, result: Result) => void; export type AsyncTapablePlugin = { name: string; options: { type: 'async'; }; fn: (context: Context, payload: Payload, result: Result, done: AsyncFn) => void; }; export type SyncWrapper = (context: Context, payload: Payload, next: (payload: Payload) => Result) => Result; export type SyncTapableHookInstance = { tap(name: string, fn: (context: Context, payload: Payload, result: Result) => Result): UntapCallback; call(payload: Payload): Result; wrap(fn: SyncWrapper): void; }; export type AsyncWrapper = (context: Context, payload: Payload, next: (payload: Payload) => Promise) => Promise; export type AsyncTapableHookInstance = { tapAsync(name: string, fn: (context: Context, payload: Payload, result: Result, done: AsyncFn) => void): UntapCallback; tapPromise(name: string, fn: (context: Context, payload: Payload, result: Result) => Promise): UntapCallback; tap(name: string, fn: (context: Context, payload: Payload, result: Result) => Result): UntapCallback; callPromise(payload: Payload): Promise; wrap(fn: AsyncWrapper): void; }; export type AsyncParallelTapableHookInstance = { tapAsync(name: string, fn: (context: Context, payload: Payload, result: void, done: AsyncFn) => void): UntapCallback; tapPromise(name: string, fn: (context: Context, payload: Payload, result: void) => Promise): UntapCallback; tap(name: string, fn: (context: Context, payload: Payload, result: void) => void): UntapCallback; callPromise(payload: Payload): Promise; wrap(fn: AsyncWrapper): void; }; export type TapableFactory = { createSync(name: string): SyncTapableHookInstance; createAsync(name: string): AsyncTapableHookInstance; createAsyncParallel(name: string): AsyncParallelTapableHookInstance; }; //# sourceMappingURL=types.d.ts.map