import * as Chunk from "../../Collections/Immutable/Chunk";
import * as List from "../../Collections/Immutable/List";
import type * as SS from "../../Collections/Immutable/SortedSet";
import * as E from "../../Either";
import type * as Fiber from "../../Fiber";
import type { Tag } from "../../Has";
import * as St from "../../Structural";
import type { AtomicReference } from "../../Support/AtomicReference";
import { Int } from "../Int";
/**
 * A type of annotation.
 */
export declare class TestAnnotation<V> implements St.HasHash, St.HasEquals {
    readonly identifier: string;
    readonly initial: V;
    readonly combine: (x: V, y: V) => V;
    readonly tag: Tag<V>;
    constructor(identifier: string, initial: V, combine: (x: V, y: V) => V, tag: Tag<V>);
    get [St.hashSym](): number;
    [St.equalsSym](that: unknown): boolean;
}
export declare type FibersAnnotation = E.Either<Int, Chunk.Chunk<AtomicReference<SS.SortedSet<Fiber.Runtime<unknown, unknown>>>>>;
export declare const FibersAnnotation: Tag<FibersAnnotation>;
export declare const fibers: TestAnnotation<FibersAnnotation>;
export declare type LocationAnnotation = List.List<Fiber.SourceLocation>;
export declare const LocationAnnotation: Tag<LocationAnnotation>;
export declare const location: TestAnnotation<LocationAnnotation>;
//# sourceMappingURL=index.d.ts.map