type ExposedPromiseKeys = 'then' | 'finally' | 'catch'; type Promisish = Pick, keyof Promise & ExposedPromiseKeys>; declare abstract class Executable implements Promisish { private promise; protected abstract execute(): Promise; protected isExecuting(): boolean; then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike) | undefined | null): Promise; catch(onrejected?: ((reason: unknown) => TResult | PromiseLike) | undefined | null): Promise; finally(onfinally?: (() => void) | undefined | null): Promise; } type Keys = keyof T & string; type Filtered = T extends null | undefined ? T : Omit, E>; type FilterExec = (includes: Keys[] | undefined, excludes: Keys[] | undefined) => Promise[]>; export declare class FilteredQuery extends Executable[]> { private readonly exec; private includes; private excludes; constructor(exec: FilterExec); protected execute(): Promise[]>; include>(includes: NI[] | null): FilteredQuery; exclude>(excludes: NE[] | null): FilteredQuery; } export {};