import type { None, Option, Some } from "."; import type { Args, GenericFn, GenericResolver } from ".."; /** * Flatten an {@link Option} of an {@link Option} into an {@link Option}. * * Sig: `(o: Option>) => Option` */ export type Flatten>> = O extends Some> ? O : None; interface Resolver extends GenericResolver<[Option>], Option> { on1: ([o]: Args) => [[], typeof o extends Option> ? Option : never]; on_r: ([, r]: Args) => [Option ? T : never>>]; } /** * [Fn] Flatten an {@link Option} of an {@link Option} into an {@link Option}. * * Sig: `(o: Option>) => Option` */ export default interface FlattenFn extends GenericFn { def: ([o]: Args) => Flatten; }