import "../_dnt.polyfills.js"; import { Guard, SmartExclude } from "./is.js"; import { Run, Rune, RunicArgs, Runner } from "./Rune.js"; /** @ts-ignore: assume it's a valid key */ type GetPath = P extends [infer K, ...infer Q] ? GetPath : T; type EnsurePath = never extends P ? P extends [infer K, ...infer Q] ? [K & keyof T, ...EnsurePath] | [keyof T, ...PropertyKey[]] : [(keyof T)?] : P; export declare class ValueRune extends Rune { static new(ctor: new (runner: Runner, ...args: A) => Run, ...args: A): Rune.ValueRune; map(fn: (value: T) => T2 | Promise): ValueRune; access

(this: ValueRune, ...keys: never extends P ? RunicArgs]> : { [K in keyof P]: P[K] | Rune; }): ValueRune; }>, U | RunicArgs.U>; handle(guard: Guard, alt: (rune: ValueRune) => Rune): ValueRune | T3, U | U2>; unhandle(fn: Guard): ValueRune, U | U2>; throws(...guards: { [K in keyof U2]: Guard; }): ValueRune; rehandle(guard: Guard): ValueRune>; rehandle(guard: Guard, alt: (rune: ValueRune) => Rune): ValueRune | U3>; lazy(): Rune.ValueRune; filter(fn: (value: T) => boolean): ValueRune; filter(fn: (value: T) => value is T2): ValueRune; final(): Rune.ValueRune; reduce(init: T2, fn: (last: T2, value: T) => T2 | Promise): ValueRune; collect(): Rune.ValueRune; dbg(...prefix: RunicArgs): Rune.ValueRune, Rune.U>; chain(fn: (result: ValueRune) => Rune): ValueRune; match(this: ValueRune, fn: (match: Match) => ExhaustiveMatch): ValueRune; } type ExhaustiveMatch = Match; declare class Match { readonly value: ValueRune; conditions: [(x: M) => boolean, ValueRune][]; constructor(value: ValueRune); when(guard: Guard, fn: (value: ValueRune) => ValueRune): Match, T | T2, U | U2>; else(fn: (value: ValueRune) => ValueRune): ExhaustiveMatch; } export {};