// atproto-room — the attestation-gated, encrypted multi-writer room engine.
//
// The keet-model room substrate extracted from hyper-proto-peer: N attested devices (or mods) are
// EQUAL writers of one encrypted Autobase whose linearized view IS the domain state (a DID's repo
// records, or a labeler's label intents). Admission is cryptographic + in-apply (a joiner proves
// attestation to the room's root identity); a Lease elects the single active signer that
// materializes the view into one canonical signed atproto artifact (commit chain / label feed).
//
// Consumers: hyper-proto-peer (SwarmDevice = repo devices) and the co-authored labeler.
//
// NOTE: importing this barrel pulls in the Bare-only StateBase (bare-fs/path/process). For the
// runtime-agnostic intent layers alone (RepoBase / LabelBase / Lease / signer), import the
// lib/*.js subpath directly to avoid the Bare dependency.
export { StateBaseV3 } from './lib/state-base.js'
export { RepoBase, recordKey, splitKey } from './lib/repo-base.js'
export { Lease, LEASE_KEY } from './lib/lease.js'
export { materialize, buildCommitWrite } from './lib/signer.js'
export { LabelBase, LABEL_NS } from './lib/label-base.js'
export { LabelRoom, SIGNED_NS } from './lib/label-room.js'
export { LabelSigner, materializeLabel } from './lib/label-signer.js'
export {
makeAttest,
makeVerifyAttest,
encodeReceipt,
receiptEpoch,
attestDeviceChain,
deviceKeetKeyPair,
rootIdentityPublicKey
} from './lib/membership.js'
export { serveMembrane, deserializeEntry, projectRepo, projectFirehose, revTime } from './lib/serve-membrane.js'