import { ArrayAssertions } from '../forArrays/ArrayAssertions'; import { CommonAssertions } from '../forAny/CommonAssertions'; import { FunctionAssertions } from '../forFunctions/FunctionAssertions'; import { MapAssertions } from '../forMaps/MapAssertions'; import { NumberAssertions } from '../forNumbers/NumberAssertions'; import { ObjectAssertions } from '../forObjects/ObjectAssertions'; import { Result } from 'defekt'; import { ResultAssertions } from '../forResults/ResultAssertions'; import { SetAssertions } from '../forSets/SetAssertions'; import { StringAssertions } from '../forStrings/StringAssertions'; type CombinedAssertions = CommonAssertions & (TValue extends Set ? SetAssertions : TValue extends Map ? MapAssertions : TValue extends (infer TContent)[] ? ArrayAssertions : TValue extends Result ? ResultAssertions : TValue extends number ? NumberAssertions : TValue extends string ? StringAssertions : TValue extends (...args: any[]) => any ? FunctionAssertions : TValue extends object ? ObjectAssertions : CommonAssertions); export type { CombinedAssertions };