import { BivectorN } from '../math/bivector.js'; import { Rotor4 } from '../math/rotor4.js'; export type BaseMap = (state: Base) => Base; export type RotorCocycle = (state: Base) => BivectorN; export interface SkewProductFlowOptions { readonly id?: string; readonly baseMap: BaseMap; readonly cocycle: RotorCocycle; /** Scalar epsilon in `exp(epsilon B(x))`. Default 1. */ readonly coupling?: number; } export interface SkewProductState { readonly base: Base; readonly fiber: Rotor4; readonly step: number; } /** * A discrete compact-group extension `(x,R) -> (f(x), exp(epsilon B(x)) R)`. * * The base map owns its state representation. The fiber is always a `Rotor4`, * so each increment is an SO(4) isometry and pair-quaternion normalization is * the complete drift repair after composition. */ export declare class SkewProductFlow { readonly id: string; readonly baseMap: BaseMap; readonly cocycle: RotorCocycle; readonly coupling: number; constructor({ id, baseMap, cocycle, coupling }: SkewProductFlowOptions); initial(base: Base, fiber?: Rotor4): SkewProductState; /** The state-dependent fiber increment `exp(epsilon B(x))`. */ increment(base: Base): Rotor4; step(state: SkewProductState): SkewProductState; iterate(state: SkewProductState, count: number): SkewProductState; } /** Cover-independent Frobenius distance from a rotor's SO(4) matrix to identity. */ export declare function rotorIdentityResidual(rotor: Rotor4): number; export interface PeriodicOrbitHolonomyOptions { readonly period: number; readonly baseDistance: (left: Base, right: Base) => number; /** Maximum closure error accepted for the supplied periodic orbit. Default 1e-12. */ readonly closureTolerance?: number; /** SO(4) identity residual below which holonomy counts as identity. Default 1e-12. */ readonly identityTolerance?: number; } export interface PeriodicOrbitHolonomy { readonly flow: string; readonly period: number; readonly orbit: readonly Base[]; readonly returnedBase: Base; readonly closureError: number; readonly closureTolerance: number; readonly closed: boolean; readonly holonomy: Rotor4; readonly identityResidual: number; readonly identityTolerance: number; readonly nontrivial: boolean; /** A finite obstruction to the cocycle being a coboundary on this base system. */ readonly essentialWitness: boolean; } /** Ordered fiber product around a claimed periodic base orbit. */ export declare function periodicOrbitHolonomy(flow: SkewProductFlow, initialBase: Base, { period, baseDistance, closureTolerance, identityTolerance }: PeriodicOrbitHolonomyOptions): PeriodicOrbitHolonomy; //# sourceMappingURL=skew-product.d.ts.map