type TTakeVariant = (Input extends `${Variant}${infer Rest extends string}` ? [Variant, Rest] : []); /** Takes one of the given variants or fail */ export type TTake = (Variants extends [infer ValueLeft extends string, ...infer ValueRight extends string[]] ? TTakeVariant extends [infer Take extends string, infer Rest extends string] ? [Take, Rest] : TTake : []); /** Takes one of the given variants or fail */ export declare function Take(variants: [...Variants], input: Input): TTake; export {};