import { Ord, Equal } from "@effect-ts-app/core/Prelude";
import { NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
import { Option as OptionLegacy } from "@effect-ts/core";
import { Option } from "./Prelude.js";
import { Set } from "./Set.js";
export interface NonEmptyBrand {
readonly NonEmpty: unique symbol;
}
/**
* @tsplus type ets/NESet
*/
export type NonEmptySet = Set & NonEmptyBrand;
declare class Wrapper {
wrapped(ord: Ord, eq?: Equal): {
insert: (a: A) => (set: NonEmptySet) => NonEmptySet;
insert_: (set: NonEmptySet, a: A) => NonEmptySet;
remove: (a: A) => (set: Set) => Option.None | Option.Some>;
remove_: (set: Set, a: A) => Option.None | Option.Some>;
reduce: (b: B, f: (b: B, a: A) => B) => (fa: Set) => B;
reduce_: (fa: Set, b: B_1, f: (b: B_1, a: A) => B_1) => B_1;
replace: (a: A) => (set: NonEmptySet) => NonEmptySet;
replace_: (set: NonEmptySet, a: A) => NonEmptySet;
toArray: (s: NonEmptySet) => readonly [A, ...A[]];
fromArray: (as: readonly A[]) => Option.None | Option.Some>;
fromNonEmptyArray: (arr: readonly [A, ...A[]]) => NonEmptySet;
from: (it: Iterable) => Option.None | Option.Some>;
of: (a: A) => NonEmptySet;
concat_: (set: NonEmptySet, it: Iterable) => Option.None | Option.Some>;
concat: (it: Iterable) => (set: NonEmptySet) => Option.None | Option.Some>;
map: (f: (x: A_1) => A_1) => (set: NonEmptySet) => NonEmptySet;
map_: (set: NonEmptySet, f: (x: A_2) => A_2) => NonEmptySet;
filterMap: (f: (a: A) => Option) => (fa: Set) => Option.None | Option.Some>;
filterMap_: (fa: Set, f: (a: A_3) => OptionLegacy.Option) => Option.None | Option.Some>;
};
}
export interface NonEmptySetSchemaExtensions extends ReturnType["wrapped"]> {
}
export declare const make: (ord: Ord, eq?: Equal) => NonEmptySetSchemaExtensions;
export declare function fromSet(set: Set): Option.None | Option.Some>;
export * from "@effect-ts/core/Collections/Immutable/Set";
//# sourceMappingURL=NonEmptySetBase.d.ts.map