export interface ArcadeVehicleDynamicsInput {
    readonly elapsedSeconds: number;
    readonly throttle?: number;
    readonly brake?: number;
    readonly steer?: number;
    readonly handbrake?: boolean;
    readonly nitro?: boolean;
    readonly maxSpeedKph?: number;
    readonly acceleration?: number;
    readonly brakeForce?: number;
    readonly gripFactor?: number;
    readonly driftFactor?: number;
}
export interface ArcadeVehicleDynamicsSample {
    readonly speedKph: number;
    readonly rpm: number;
    readonly nitro: number;
    readonly steerAngle: number;
    readonly driftSlip: number;
    readonly grip: number;
    readonly wheelSpin: number;
    readonly suspensionCompression: readonly [number, number, number, number];
}
export type PacejkaTirePreset = "street" | "sport" | "racing" | "offroad";
export type RacingAiDifficulty = "easy" | "medium" | "hard";
export type DrivetrainDifferential = "open" | "limited-slip" | "locked" | "electronic";
export interface PacejkaTireCoefficients {
    readonly b: number;
    readonly c: number;
    readonly d: number;
    readonly e: number;
}
export interface PacejkaTireForceInput {
    readonly longitudinalVelocity: number;
    readonly lateralVelocity?: number;
    readonly angularVelocity: number;
    readonly normalForce: number;
    readonly steeringAngle?: number;
    readonly camberAngle?: number;
    readonly radius?: number;
    readonly width?: number;
    readonly maxLoad?: number;
    readonly loadSensitivity?: number;
    readonly rollingResistance?: number;
    readonly longitudinal?: PacejkaTireCoefficients | PacejkaTirePreset;
    readonly lateral?: PacejkaTireCoefficients | PacejkaTirePreset;
}
export interface PacejkaTireForceSample {
    readonly longitudinalForce: number;
    readonly lateralForce: number;
    readonly combinedForce: number;
    readonly slipRatio: number;
    readonly slipAngle: number;
    readonly aligningTorque: number;
    readonly optimalSlipRatio: number;
    readonly optimalSlipAngle: number;
    readonly preset: {
        readonly longitudinal: PacejkaTirePreset | "custom";
        readonly lateral: PacejkaTirePreset | "custom";
    };
}
export interface RacingAiDriverInput {
    readonly difficulty?: RacingAiDifficulty;
    readonly elapsedSeconds: number;
    readonly progress: number;
    readonly speedKph: number;
    readonly targetSpeedKph?: number;
    readonly trackCurvature?: number;
    readonly opponentDistance?: number;
    readonly opponentAhead?: boolean;
    readonly playerGapSeconds?: number;
}
export interface RacingAiDriverSample {
    readonly difficulty: RacingAiDifficulty;
    readonly throttle: number;
    readonly brake: number;
    readonly steer: number;
    readonly targetSpeedKph: number;
    readonly lookaheadDistance: number;
    readonly reactionTime: number;
    readonly aggressiveness: number;
    readonly overtaking: boolean;
    readonly overtakeOffset: number;
    readonly rubberbandBoost: number;
}
export interface VehicleDrivetrainInput {
    readonly speedKph: number;
    readonly throttle?: number;
    readonly clutch?: number;
    readonly gearRatios?: readonly number[];
    readonly finalDriveRatio?: number;
    readonly idleRpm?: number;
    readonly maxRpm?: number;
    readonly peakTorque?: number;
    readonly peakTorqueRpm?: number;
    readonly upshiftRpm?: number;
    readonly downshiftRpm?: number;
    readonly differential?: DrivetrainDifferential;
    readonly frontRearSplit?: number;
    readonly lockingFactor?: number;
    readonly dragCoefficient?: number;
    readonly frontalArea?: number;
    readonly downforceCoefficient?: number;
}
export interface VehicleDrivetrainSample {
    readonly gear: number;
    readonly gearRatio: number;
    readonly engineRpm: number;
    readonly engineTorque: number;
    readonly wheelTorque: number;
    readonly frontTorque: number;
    readonly rearTorque: number;
    readonly dragForce: number;
    readonly downforce: number;
    readonly shiftState: "hold" | "upshift" | "downshift";
    readonly differential: DrivetrainDifferential;
}
export interface VehicleEffectEmitterInput {
    readonly speedKph: number;
    readonly throttle?: number;
    readonly steer?: number;
    readonly handbrake?: boolean;
    readonly nitroActive?: boolean;
    readonly wheelOnGround?: readonly [boolean, boolean, boolean, boolean];
}
export interface VehicleEffectEmitterSample {
    readonly tireSmokeRates: readonly [number, number, number, number];
    readonly totalTireSmokeRate: number;
    readonly nitroFlameRate: number;
    readonly visibleEffectEmitters: number;
    readonly smokeReason: "none" | "handbrake" | "launch-wheelspin" | "high-speed-steer";
}
export interface VehicleDamageInput {
    readonly health?: number;
    readonly impactSpeedKph?: number;
    readonly collisionSeverity?: number;
    readonly repair?: number;
}
export interface VehicleDamageSample {
    readonly health: number;
    readonly damage: number;
    readonly impactDamage: number;
    readonly visualDamageLevel: "none" | "scratched" | "dented" | "critical";
    readonly disabled: boolean;
}
export declare function sampleArcadeVehicleDynamics(input: ArcadeVehicleDynamicsInput): ArcadeVehicleDynamicsSample;
export declare function sampleVehicleDamage(input: VehicleDamageInput): VehicleDamageSample;
export declare function sampleVehicleEffectEmitters(input: VehicleEffectEmitterInput): VehicleEffectEmitterSample;
export declare function sampleVehicleDrivetrain(input: VehicleDrivetrainInput): VehicleDrivetrainSample;
export declare function sampleRacingAiDriver(input: RacingAiDriverInput): RacingAiDriverSample;
export declare function samplePacejkaTireForces(input: PacejkaTireForceInput): PacejkaTireForceSample;
//# sourceMappingURL=VehicleDynamics.d.ts.map