import { Result } from 'neverthrow';
export interface NonEmptyString {
    readonly _tag: 'NonEmptyString';
    readonly value: string;
}
export declare const NonEmptyString: {
    readonly from: (s: string) => Result<NonEmptyString, string>;
    readonly value: (s: NonEmptyString) => string;
};
export type PositiveNumber = number & {
    readonly _tag: 'PositiveNumber';
};
export declare const PositiveNumber: {
    readonly from: (n: number) => Result<PositiveNumber, string>;
    readonly plus: (a: PositiveNumber, b: PositiveNumber) => PositiveNumber;
    readonly plusRaw: (base: PositiveNumber, delta: number) => Result<PositiveNumber, string>;
    readonly minus: (a: PositiveNumber, b: PositiveNumber) => Result<PositiveNumber, string>;
    readonly minusRaw: (base: PositiveNumber, delta: number) => Result<PositiveNumber, string>;
    readonly compareTo: (a: PositiveNumber, b: PositiveNumber) => -1 | 0 | 1;
    readonly value: (n: PositiveNumber) => number;
};
export type ID<T> = string & {
    readonly _tag: 'ID';
    readonly _phantom?: T;
};
export declare const ID: {
    readonly generate: <T = unknown>() => ID<T>;
    readonly value: <T>(id: ID<T>) => string;
};
export type NonEmptyArray<T> = [T, ...T[]];
export declare const NonEmptyArray: {
    readonly from: <T>(xs: T[]) => Result<NonEmptyArray<T>, string>;
};
//# sourceMappingURL=primitive.d.ts.map