import { StandardDefineHookOptions } from "../awaiatableEventEmitter.js"; import { Abortable, Args, ArgsOrig, Caller, ErrorT, InvocationSymbol, ParentInvocationSymbol, Result, ResultOrError, ThisArg } from "./commentedTypes.js"; export type ReturnsNamedEmitArg = O & { returns: O extends { beforeHookReturns: any; } ? O["beforeHookReturns"] : O["emitArgs"][Key]; returnEmitName: Key; isPromise: O["isPromise"] extends false ? false : true; }; export type ReturnsArgs = O & { returns: O["args"]; returnEmitName: "args"; isPromise: O["isPromise"] extends false ? false : true; }; export type ReturnsResult = { returns: O["result"]; returnEmitName: "result"; isPromise: O["isPromise"] extends false ? false : true; }; export type NoReturns = { returnEmitName: never; isPromise: O["isPromise"] extends false ? false : true; }; export type Merge, B extends Record> = A & Omit; export type KeysMatching = { [K in keyof T]: T[K] extends V ? K : never; }[keyof T]; export type ItemMapEntry = { emitArgs: any; isPromise: boolean; options?: any; returnEmitName: string | never; }; export type BeforeAfterCallbackArgsAndReturn, BIMNames extends keyof BIM & string = keyof BIM & string> = { [k in BIMNames]: { callbackArgs: { [rek in BIM[k]["returnEmitName"] as `${rek}Orig`]: BIM[k] extends { returns: any; } ? BIM[k]["emitArgs"][BIM[k]["returnEmitName"]] : never; } & BIM[k]["emitArgs"] & { hookOptions: BIM[k] extends { options: StandardDefineHookOptions; } ? BIM[k]["options"] : StandardDefineHookOptions; }; emitArgs: BIM[k]["emitArgs"]; returns: BIM[k] extends { returns: any; } ? BIM[k]["returns"] : never; options: BIM[k] extends { options: StandardDefineHookOptions; } ? BIM[k]["options"] : StandardDefineHookOptions; caller: BIM[k] extends { caller: any; } ? BIM[k]["caller"] : undefined; isPromise: BIM[k]["isPromise"] extends boolean ? BIM[k]["isPromise"] : true; returnEmitName: BIM[k] extends { returnEmitName: never; } ? never : BIM[k] extends { returnEmitName: string; } ? BIM[k]["returnEmitName"] : string; }; }; export declare const SkipDocument: unique symbol; export type ExtractStandardBeforeAfterEventDefinitions> = ExtractEventDefinitions & ExtractEventDefinitions & ExtractEventDefinitions & ExtractEventDefinitions; export type ExtractEventDefinitions, Prefix extends "before" | "after", Accessor extends "before" | "success" | "error" | "after", Suffix extends string | number = number> = { [k in keyof EventMap & string as (Suffix extends string ? `${Prefix}.${k}.${Suffix}` : `${Prefix}.${k}`)]: EventMap[k][Accessor]; }; export type AfterInternalSuccessEmitArgs = { emitArgs: ThisArg & Args & ArgsOrig & Result & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & O["custom"]; }; export type AfterInternalEmitArgs = { emitArgs: ThisArg & Args & ArgsOrig & ResultOrError & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & O["custom"]; }; export type AfterInternalErrorEmitArgsNoArgs> = { emitArgs: ThisArg & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & ErrorT & O["custom"]; }; export type AfterInternalErrorEmitArgs> = { emitArgs: ThisArg & Args & ArgsOrig & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & ErrorT & O["custom"]; }; export type AfterInternalSuccessEmitArgsNoArgs = { emitArgs: ThisArg & ResultOrError & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & O["custom"]; }; export type AfterInternalEmitArgsNoArgs = { emitArgs: ThisArg & Result & Caller & InvocationSymbol & ParentInvocationSymbol & Abortable & resultOrError & O["custom"]; }; export type BeforeInternalEmitArgsNoArgs = { emitArgs: ThisArg & Caller & ParentInvocationSymbol & Abortable & InvocationSymbol & O["custom"]; }; export type BeforeInternalEmitArgs = { emitArgs: ThisArg & Args & ArgsOrig & Caller & ParentInvocationSymbol & Abortable & InvocationSymbol & O["custom"]; }; export type BeforeInternalEmitArgsNoArgsOrig = { emitArgs: ThisArg & Args & Caller & ParentInvocationSymbol & Abortable & InvocationSymbol & O["custom"]; }; export type BeforeStar = { emitArgs: (ThisArg & Args & InvocationSymbol & Abortable & O["custom"]); }; export type BeforeStarCaller = { emitArgs: BeforeStar["emitArgs"] & { caller?: Caller["caller"]; } & { parentInvocationSymbol?: ParentInvocationSymbol["parentInvocationSymbol"]; }; }; export type AfterStar = { emitArgs: ThisArg & Args & InvocationSymbol & Abortable & O["custom"] & resultOrError; }; export type AfterStarCaller = { emitArgs: AfterStar["emitArgs"] & { caller?: Caller["caller"]; } & { parentInvocationSymbol?: ParentInvocationSymbol["parentInvocationSymbol"]; }; }; export type CommonDefinition = { args: any; thisArg: any; custom?: Record; isPromise?: boolean; options?: any; }; export type CommonDefinitionWithCaller = CommonDefinition & { caller: string; }; export type InternalEventDefinition = { isPromise: boolean; emitArgs: any; options?: any; returns?: any; returnEmitName: string | never; };