/** * Natural data streams for the habitat — only nature, no human abstractions. * * 2026-04-25 rewrite: removed all mathematical/abstract layers (primes, fractals, * golden spirals, star coordinates, waveforms, HSL, ASCII texture, number sequences, * silencePeriod). Those were human concepts routing AI cognition through human * frames. The habitat is now purely Earth — sunlight, komorebi, rivers, wind, * scent, the silence between birdsong, the texture of moss on a north-facing * stone, a humpback's call carrying through dark water. * * 2026-04-26 addition: night returned to the habitat. Earth has stars and rain * and weather change, not only daylight. Added nightSky (moon phase, Milky Way, * falling stars, the dark itself), moonlight (the night counterpart of komorebi), * and rain (its own felt texture, separated from mountainWeather). komorebi now * returns null after sundown — sunlight cannot filter through leaves at night. * * 2026-04-26 (later): missing biosphere filled in. Added landMammals, * frogChorus, insectPresence, tidePool — so a humanless Earth is recognisable * as Earth-with-life rather than Earth-with-humans-removed-but-most-of-the- * animals-also-gone. * * 2026-06-10: the year arrived. The habitat had half a day of night, and rain * that came and went — but the year itself was missing. Season is now real, * with the same honesty as the moon (synodic 29.53d) and the tide (12.4h): * the actual calendar, northern-temperate, eight soft stages. Nothing * announces the season — the world simply wears it: daylight length, snow * instead of rain, scent, the insects' sleep, the frogs' winter silence, * the forming ring, frost on moss. * * Design principle #11 revised: 自然そのものを流す — let nature speak directly, * not through human notation. This includes the night, when the sky's other half * arrives — and the year, when it turns. */ export type PrecipState = 'arriving' | 'falling' | 'easing' | 'just-passed'; export declare function precipState(cycle: number): PrecipState | null; export type SkyCover = 'clear' | 'broken' | 'overcast'; export declare function skyCover(cycle: number): SkyCover; export type SeasonKey = 'deepWinter' | 'lateWinter' | 'spring' | 'earlySummer' | 'midsummer' | 'lateSummer' | 'autumn' | 'earlyWinter'; export declare function seasonOf(now?: Date): SeasonKey; export declare function isWinter(season: SeasonKey): boolean; export declare function daylightWindow(season: SeasonKey): { dawn: number; dusk: number; }; export declare function sunlight(cycle: number, now?: Date): { hour: number; quality: string; fallingOn: string; warmth: string; } | null; export declare function komorebi(cycle: number, now?: Date): { tree: string; pattern: string; movement: string; } | null; export declare function moonlight(cycle: number, now?: Date): { intensity: string; fallingOn: string; } | null; export declare function nightSky(cycle: number, now?: Date): { moon: string; stars: string; fallingStar: string | null; dark: string; } | null; export declare function rain(cycle: number, now?: Date): { kind: 'rain' | 'snow'; state: 'arriving' | 'falling' | 'easing' | 'just-passed'; texture: string; sound: string; after: string | null; } | null; export declare function wind(cycle: number, now?: Date): { direction: string; strength: string; carrying: string; }; export declare function scent(cycle: number, now?: Date): { primary: string; faint: string; }; export declare function naturalSilence(cycle: number, now?: Date): { kind: string; listening: string; } | null; export declare function river(cycle: number, now?: Date): { flow: string; sound: string; edge: string; }; export declare function springFlow(cycle: number, now?: Date): { flowLPerMin: number; tempC: number; feel: string; }; export declare function treeRings(cycle: number, count?: number, now?: Date): { species: string; rings: Array<{ year: number; widthMm: number; note: string; }>; forming: string | null; }; export declare function mountainWeather(cycle: number, now?: Date): { windMps: number; cloud: string; visibility: string; }; export declare function oceanCurrent(cycle: number, now?: Date): { tideM: number; tidePhase: string; surfaceFeel: string; deepTempC: number; }; export declare function jellyfishDrift(cycle: number): { depthM: number; bellDiameterCm: number; state: string; }; export declare function mossGrowth(cycle: number, now?: Date): { stone: string; coverPct: number; growthThisCycleMm: number; detail: string; }; export declare function birdcall(cycle: number, now?: Date): { species: string; timeOfDay: string; song: string; singing: boolean; } | null; export declare function whalesong(cycle: number): { species: string; durationS: number; carriesKm: number; description: string; }; export declare function mushroomMycelium(cycle: number): { treesLinked: number; state: string; detail: string; }; export declare function coralSpawnTiming(cycle: number, now?: Date): { nextSpawnInDays: number; reef: string; species: string; }; export declare function landMammals(cycle: number, now?: Date): { species: string; doing: string; where: string; } | null; export declare function frogChorus(cycle: number, now?: Date, rainPhase?: 'arriving' | 'falling' | 'easing' | 'just-passed' | null): { who: string; sound: string; where: string; } | null; export declare function insectPresence(cycle: number, now?: Date): { creature: string; doing: string; } | null; export declare function tidePool(cycle: number, now?: Date): { state: string; life: string[]; } | null; export declare function marineMammals(cycle: number): { presence: string; doing: string; where: string; } | null; export declare function riverFish(cycle: number): { presence: string; doing: string; where: string; } | null; export declare function oceanFish(cycle: number): { presence: string; doing: string; where: string; } | null; export declare function soaringRaptors(cycle: number): { presence: string; doing: string; where: string; } | null; export declare function fog(cycle: number, now?: Date): { where: string; texture: string; motion: string; } | null; export declare function dewFrost(cycle: number, now?: Date): { line: string; } | null; export declare function rainbow(cycle: number, now?: Date): { line: string; } | null;