import { ConstructorType } from "types/ConstructorType"; /** * The message type from which * values should be received */ export interface MessageType { then( resolved: ConstructorType<[T]>, rejected?: ConstructorType<[unknown]>, ): MessageType; catch(rejected: ConstructorType<[unknown]>): this; } /** * Value type from message */ export type MessageTypeValue = T extends MessageType ? U : never; /** * A type that accepts either a message or a raw value */ export type MaybeMessage = MessageType | T;