import { OptionalValue } from "./optional-value.js";
import { Option } from "./option.js";
import { AreEqual, FlattenOption } from "./types.js";
export declare class Some<T> extends OptionalValue<T> {
    value: T;
    constructor(value: T);
    isPresent(): boolean;
    isAbsent(): boolean;
    unwrap(): T;
    map<M>(fn: (a: T) => M): Option<M>;
    filter(fn: (a: T) => boolean): Option<T>;
    expect(_err: Error): T;
    unwrapOr<U>(_defaultValue: U): T;
    unwrapOrElse(_defaultFn: () => T): T;
    flatten(): Option<FlattenOption<T>>;
    zip<U>(another: OptionalValue<U>): Option<[T, U]>;
    zipWithSome<U>(some: Some<U>): Option<[U, T]>;
    and<V>(another: Option<V>): Option<V>;
    or(self: Option<T>, _another: Option<T>): Option<T>;
    xor(another: OptionalValue<T>): Option<T>;
    xorWithNone(): Option<T>;
    xorWithSome(_some: Some<T>): Option<T>;
    andThen<U>(fn: (t: T) => Option<U>): Option<U>;
    orElse(_fn: () => Option<T>): Option<T>;
    getOrInsert(_value: T): OptionalValue<T>;
    getOrInsertWith(_fn: () => T): OptionalValue<T>;
    takeValue(): Option<T>;
    isSomeAnd(andFn: (t: T) => boolean): boolean;
    ifSome(param: (t: T) => void): void;
    ifNone(_fn: () => void): void;
    toArray(): T[];
    equalsWith(another: OptionalValue<T>, equality: AreEqual<T>): boolean;
}
