import { Equals } from "@tsplus/stdlib/structure/Equals";
import { Hash } from "@tsplus/stdlib/structure/Hash";
import { pipe } from "@tsplus/stdlib/data/Function";
import { HKT } from "@tsplus/stdlib/prelude/HKT";
import { Chunk } from "@tsplus/stdlib/collections/Chunk/definition";
export declare const TreeTypeId: unique symbol;
export type TreeTypeId = typeof TreeTypeId;
export type Forest = Tree.Forest;
/**
* @tsplus type Tree
* @tsplus companion Tree.Ops
*/
export declare class Tree implements Equals {
readonly value: A;
readonly forest: Forest;
readonly [TreeTypeId]: TreeTypeId;
constructor(value: A, forest: Forest);
[Equals.sym](this: this, other: unknown): boolean;
[Hash.sym](this: this): number;
}
export interface TreeF extends HKT {
readonly type: Tree;
}
export declare namespace Tree {
type HKT = TreeF;
type Forest = Chunk>;
}
/**
* @tsplus type Tree.Aspects
*/
export interface TreeAspects {
}
/**
* @tsplus static Tree.Ops $
* @tsplus location "@tsplus/stdlib/collections/Tree/definition"
*/
export declare const TreeAspects: TreeAspects;
/**
* @tsplus static Tree.Ops __call
* @tsplus location "@tsplus/stdlib/collections/Tree/definition"
*/
export declare function make(value: A, forest?: Forest): Tree;
/**
* Type guard
* @tsplus static Tree.Ops isTree
* @tsplus location "@tsplus/stdlib/collections/Tree/definition"
*/
export declare function isTree(t: unknown): t is Tree;
//# sourceMappingURL=definition.d.ts.map