import { Taxonomy } from "./taxonomy.js";
import { Id, Kind, Schema } from "./types.js";
/** Tracks what kind and specimen data is associated with each item id. */
export declare class Clade<Sc extends Schema> {
    #private;
    taxonomy: Taxonomy<Sc>;
    onChange: import("@e280/stz").Sub<[]>;
    constructor(taxonomy: Taxonomy<Sc>);
    getSpecimen<K extends Kind<Sc> = Kind<Sc>>(id: string): [K, Sc["specimens"][K]];
    setSpecimen<K extends Kind<Sc>>(id: string, kind: K, specimen: Sc["specimens"][K]): void;
    query<K extends Kind<Sc> = Kind<Sc>>(id: Id): {
        kind: K;
        taxon: Sc["taxon"];
        specimen: Sc["specimens"][K];
    };
}
