import "../Operator/index.js"; import * as St from "../Structural/index.js"; declare const _brand: unique symbol; export declare function isFreeAssociative(self: unknown): self is FreeAssociative; export declare class IEmpty { readonly _tag = "Empty"; readonly [_brand]: symbol; get [St.hashSym](): number; [St.equalsSym](that: unknown): boolean; } export declare class IElement { readonly element: A; readonly _tag = "Element"; readonly [_brand]: symbol; constructor(element: A); get [St.hashSym](): number; [St.equalsSym](that: unknown): boolean; } export declare class IConcat { readonly left: FreeAssociative; readonly right: FreeAssociative; readonly _tag = "Concat"; readonly [_brand]: symbol; constructor(left: FreeAssociative, right: FreeAssociative); } export declare type FreeAssociative = IEmpty | IElement | IConcat; export declare function init(): FreeAssociative; export declare function of(a: A): FreeAssociative; export declare function concat(r: FreeAssociative): (l: FreeAssociative) => FreeAssociative; export declare function concat_(l: FreeAssociative, r: FreeAssociative): FreeAssociative; export declare function append(a: A): (_: FreeAssociative) => FreeAssociative; export declare function append_(_: FreeAssociative, a: A): FreeAssociative; export declare function prepend(a: A): (_: FreeAssociative) => FreeAssociative; export declare function prepend_(_: FreeAssociative, a: A): FreeAssociative; export declare function toArray(_: FreeAssociative): readonly A[]; export {}; //# sourceMappingURL=index.d.ts.map