export interface OptionMatch { Some: ((val: T) => U) | U; None: (() => U) | U; } export interface ResultMatch { Ok: ((val: T) => U) | U; Err: ((err: E) => U) | U; } interface IteratorResult { done: boolean; value: RustOption; } interface Iterator { next(): IteratorResult; [Symbol.iterator](): Iterator; } declare class RustOptionBase { protected value: T | undefined; constructor(val: T | undefined); valueOf(): T | undefined; } export declare class RustOption extends RustOptionBase { static Some(val: any): RustOption; static get None(): RustOption; private constructor(); isSome(): boolean; isNone(): boolean; unwrap(): T; unwrapOr(def: T): T; unwrapOrElse(fn: () => T): T; map(fn: (val: T) => U): RustOption; mapOr(def: U, fn: (val: T) => U): U; mapOrElse(fnNone: () => U, fnSome: (val: T) => U): U; match(fn: OptionMatch): U; contains(val: T): boolean; expect(msg: string): T; iter(): Iterator; okOr(err: E): RustResult; okOrElse(err: () => E): RustResult; and(v: RustOption): RustOption; andThen(fn: (val: T) => RustOption): RustOption; or(v: RustOption): RustOption; orElse(fn: () => RustOption): RustOption; xor(v: RustOption): RustOption; filter(fn: (val: T) => boolean): RustOption; getOrInsert(val: T): T; getOrInsertWith(fn: () => T): T; take(): RustOption; replace(val: T): RustOption; cloned(): RustOption; expectNone(msg: string): void; unwrapNone(): void; flatten(): RustOption; [Symbol.iterator](): Iterator; toJSON(): object; equals(v: RustOption): boolean; } export declare class RustResult { private value; private error; static Ok(val: any): RustResult; static Err(err: any): RustResult; private constructor(); isOk(): boolean; isErr(): boolean; ok(): RustOption; err(): RustOption; unwrap(): T; unwrapErr(): E; unwrapOr(def: T): T; unwrapOrElse(fn: (err: E) => T): T; map(fn: (val: T) => U): RustResult; mapErr(fn: (err: E) => U): RustResult; mapOr(def: U, fn: (val: T) => U): U; mapOrElse(fnErr: (err: E) => U, fnOk: (val: T) => U): U; match(fn: ResultMatch): U; contains(val: T): boolean; containsErr(err: E): boolean; expect(msg: string): T; expectErr(msg: string): E; iter(): Iterator; and(v: RustResult): RustResult; andThen(fn: (val: T) => RustResult): RustResult; or(v: RustResult): RustResult; orElse(fn: (err: E) => RustResult): RustResult; cloned(): RustResult; transpose(): RustOption>; [Symbol.iterator](): Iterator; toString(): string; toJSON(): object; equals(v: RustResult): boolean; } interface RustOptionBase { transpose: () => RustResult, E>; toString(): string; } export {};