type empty = null | undefined; export declare abstract class Option { abstract get(): T; abstract expect(err: Error): T; abstract orElse(fn: () => T): T; abstract orDefault(t: T): T; abstract map(fn: (a: T) => Y): Option; abstract filter(fn: (a: T) => boolean): Option; abstract or(another: Option): Option; abstract ifPresent(fn: (t: T) => void): void; abstract isPresent(): boolean; isAbsent(): boolean; static none(): None; static some(value: Y): Some; static fromNullable(valueOrNull: Y | empty): None | Some; } export declare class Some extends Option { value: T; constructor(t: T); get(): T; expect(_err: Error): T; orElse(_fn: () => T): T; map(fn: (a: T) => Y): Option; filter(fn: (a: T) => boolean): Option; orDefault(_t: T): T; or(another: Option): Option; ifPresent(fn: (t: T) => void): void; isPresent(): boolean; } export declare class None extends Option { get(): T; expect(err: Error): T; orElse(fn: () => T): T; map(fn: (a: T) => Y): Option; filter(fn: (a: T) => boolean): Option; orDefault(t: T): T; or(another: Option): Option; ifPresent(fn: (t: T) => void): void; isPresent(): boolean; } export {};