import { BasicInfoAtomType, EntityEidType, ICoordinates, TransformAtomType, VisibleAtomType } from './data-type';
export interface IGenerateRiverSurface {
    path: string;
    offset: Array<number>;
}
export interface IGenerateRiverSurfaceFromRemote {
    tifUrl: string;
    dbfUrl: string;
    prjUrl: string;
    shpUrl: string;
    shxUrl: string;
    offset: Array<number>;
}
export interface IExpandRiverSurface {
    width: number;
}
export interface IEid {
    eid: string | null;
}
export interface IEntity {
    object: Record<string, any>;
}
export interface IRaiseRiverSurface {
    targetHeight?: number;
    duration?: number;
}
export interface IUpdateRiverMaterial {
    reverseDirection?: boolean;
    speed?: number;
    rippleScale?: number;
}
export interface IMaterialEntity {
    materialObject: Record<string, any>;
}
export interface IReplaceRiverMaterial {
    eid: string | null;
    materialEid: string;
}
export interface ILoadRiverSectionData {
    path: string;
}
export interface ILoadRiverSectionDataFromRemote {
    url: string;
}
export interface IRaiseRiverSection {
    sections: Array<{
        index: string;
        destHeight: string;
        duration: string;
    }>;
}
export interface IConfigFloodPeakSegments {
    segments: Array<{
        segmentIndex: string;
        headHeight: string;
        normalHeight: string;
        duration: string;
    }>;
}
export interface IPlayFloodPeak {
    mode: number;
}
export interface IJumpToFloodPeakTime {
    time: number;
}
export interface IJumpToFloodPeakSegment {
    segmentIndex: number;
}
export interface ISetFloodPeakSpeedMultiplier {
    multiplier: number;
}
export interface ISetTraceChannel {
    channels: Array<{
        name: string;
        response: string;
    }>;
}
export interface IGetRiverHeight {
    coordinates: ICoordinates;
}
/**
 * @interface SectionAtomType
 * @param {Array<string>} sections
 * @param {Array<string>} floodPeakSegments
 * @param {number} floodPeakDuration
 * @param {number} floodPeakSpeedMultiplier
 */
export interface SectionAtomType {
    sections: Array<string>;
    floodPeakSegments: Array<string>;
    floodPeakDuration: number;
    floodPeakSpeedMultiplier: number;
}
/**
 * @interface MaterialInstanceParamsAtomType
 * @param {boolean} reverseDirection
 * @param {boolean} useFlowWater
 * @param {number} speed
 * @param {number} scale
 */
export interface MaterialInstanceParamsAtomType {
    reverseDirection: boolean;
    useFlowWater: boolean;
    speed: number;
    scale: number;
}
export interface ChangedMaterialInfo {
    componentName: string;
    materialIndex: number;
    mIEid: string;
}
export interface MaterialAtomType {
    changedMaterialInfo: Array<ChangedMaterialInfo>;
    bReceivesDecals: boolean;
}
export interface WimDynamicWaterType extends EntityEidType, Partial<BasicInfoAtomType>, Partial<TransformAtomType>, Partial<VisibleAtomType> {
    section?: Partial<SectionAtomType>;
    materialInstanceParams?: Partial<MaterialInstanceParamsAtomType>;
    material?: Partial<MaterialAtomType>;
}
export interface IGenerate {
    BasicInfoAtom?: Partial<BasicInfoAtomType>;
    SectionAtom?: Partial<SectionAtomType>;
    MaterialInstanceParamsAtom?: Partial<MaterialInstanceParamsAtomType>;
    MaterialAtom?: Partial<MaterialAtomType>;
}
