type NoReturnType = void | undefined | null;
type Destructor = () => NoReturnType;
type AsyncDestructor = () => Promise<ReturnType<Destructor>>;
type AsyncEffect = (signal: AbortSignal) => Promise<AsyncDestructor | NoReturnType>;
type ResizeEffect = (width: number, height: number) => Destructor | NoReturnType;

export type { AsyncEffect as A, Destructor as D, NoReturnType as N, ResizeEffect as R };
