export type Nullable = T | null | undefined; export type Option = T | Some | undefined; export declare class Some { value: T; constructor(value: T); toJSON(): T; toString(): string; GetHashCode(): number; Equals(other: Option): boolean; CompareTo(other: Option): number; } export declare function value(x: Option): T; export declare function unwrap(opt: Option): T | undefined; export declare function some(x: T): Option; export declare function ofNullable(x: Nullable): Option; export declare function toNullable(x: Option): Nullable; export declare function flatten(x: Option>): T | Some | undefined; export declare function toArray(opt: Option): T[]; export declare function defaultArg(opt: Option, defaultValue: T): T; export declare function defaultArgWith(opt: Option, defThunk: () => T): T; export declare function orElse(opt: Option, ifNone: Option): Option; export declare function orElseWith(opt: Option, ifNoneThunk: () => Option): Option; export declare function filter(predicate: (arg: T) => boolean, opt: Option): Option; export declare function map(mapping: (arg: T) => U, opt: Option): Option; export declare function map2(mapping: (arg1: T1, arg2: T2) => Option, opt1: Option, opt2: Option): Option; export declare function map3(mapping: (arg1: T1, arg2: T2, arg3: T3) => Option, opt1: Option, opt2: Option, opt3: Option): Option; export declare function bind(binder: (arg: T) => Option, opt: Option): Option; export declare function tryOp(op: (x: T) => U, arg: T): Option;