/// <reference types="node" />
import { DeepPartial, Optionals } from "jaz-ts-utils";
import Jimp from "jimp";
export declare type SpringMap = {
    fileName: string;
    fileNameWithExt: string;
    scriptName: string;
    minHeight: number;
    maxHeight: number;
    mapInfo?: DeepPartial<MapInfo>;
    smd?: SMD;
    smf?: SMF;
    textureMap?: Jimp;
    heightMap: Jimp;
    miniMap: Jimp;
    metalMap: Jimp;
    typeMap: Jimp;
    specularMap?: Jimp;
};
export declare type SMD = {
    description: string;
    tidalStrength: number;
    gravity: number;
    maxMetal: number;
    extractorRadius: number;
    mapHardness: number;
    minWind: number;
    maxWind: number;
    minHeight?: number;
    maxHeight?: number;
    startPositions: Array<{
        x: number;
        z: number;
    }>;
};
export declare type SMF = {
    magic: string;
    version: number;
    id: number;
    mapWidth: number;
    mapWidthUnits: number;
    mapHeight: number;
    mapHeightUnits: number;
    squareSize: number;
    texelsPerSquare: number;
    tileSize: number;
    minDepth: number;
    maxDepth: number;
    heightMapIndex: number;
    typeMapIndex: number;
    tileIndexMapIndex: number;
    miniMapIndex: number;
    metalMapIndex: number;
    featureMapIndex: number;
    noOfExtraHeaders: number;
    extraHeaders: Array<SMFExtraHeader>;
    numOfTileFiles: number;
    numOfTilesInAllFiles: number;
    numOfTilesInThisFile: number;
    smtFileName: string;
    heightMap: Jimp;
    typeMap: Jimp;
    miniMap: Jimp;
    metalMap: Jimp;
    tileIndexMap: number[];
    features: any;
    heightMapValues: number[];
};
export declare type SMFExtraHeader = {
    size: number;
    type: number;
    data: Buffer;
};
export declare type WaterOptions = {
    textureMap: Jimp;
    heightMapValues: number[];
    minHeight: number;
    maxHeight: number;
    rgbColor?: {
        r: number;
        g: number;
        b: number;
    };
    rgbModifier?: {
        r: number;
        g: number;
        b: number;
    };
};
export declare type MapInfo = {
    fileName: string;
    scriptName: string;
    name: string;
    shortname: string;
    description: string;
    author: string;
    version: string;
    mapfile: string;
    modtype: number;
    depend: any;
    replace: any;
    maphardness: number;
    notDeformable: boolean;
    gravity: number;
    tidalStrength: number;
    maxMetal: number;
    extractorRadius: number;
    voidGround: boolean;
    voidWater: boolean;
    autoShowMetal: boolean;
    smf: Smf;
    sound: Sound;
    resources: Resources;
    splats: Splats;
    atmosphere: Atmosphere;
    grass: Grass;
    lighting: Lighting;
    water: Water;
    teams: Team[];
    terrainTypes: TerrainType[];
    custom: Custom;
    mapWidthUnits: number;
    mapHeightUnits: number;
    minDepth: number;
    maxDepth: number;
    smtFileName: string;
};
export declare type Smf = {
    minheight: number;
    maxheight: number;
    smtFileName0: string;
};
export declare type Passfilter = {
    gainlf: number;
    gainhf: number;
};
export declare type Sound = {
    preset: string;
    passfilter: Passfilter;
    reverb: any;
};
export declare type Resources = {
    detailTex: string;
    splatDetailTex: string;
    splatDistrTex: string;
    splatDetailNormalDiffuseAlpha: number;
    splatDetailNormalTex1: string;
    splatDetailNormalTex2: string;
    splatDetailNormalTex3: string;
    splatDetailNormalTex4: string;
    detailNormalTex: string;
    specularTex: string;
};
export declare type Splats = {
    TexScales: number[];
    TexMults: number[];
};
export declare type Atmosphere = {
    minWind: number;
    maxWind: number;
    fogEnd: number;
    fogStart: number;
    skyBox: string;
    cloudColor: number[];
    fogColor: number[];
    skyColor: number[];
    sunColor: number[];
    skyDir: number[];
    cloudDensity: number;
};
export declare type Grass = {
    bladeWaveScale: number;
    bladeWidth: number;
    bladeHeight: number;
    bladeAngle: number;
    bladeColor: number[];
};
export declare type Lighting = {
    groundShadowDensity: number;
    unitShadowDensity: number;
    groundAmbientColor: number[];
    groundDiffuseColor: number[];
    groundSpecularColor: number[];
    sunDir: number[];
    unitAmbientColor: number[];
    unitDiffuseColor: number[];
    unitSpecularColor: number[];
    groundambientcolor: number[];
    grounddiffusecolor: number[];
    groudspecularcolor: number[];
    groundshadowdensity: number;
    unitshadowdensity: number;
    specularsuncolor: number[];
    specularExponent: number;
};
export declare type Water = {
    ambientFactor: number;
    blurBase: number;
    blurExponent: number;
    diffuseFactor: number;
    foamTexture: string;
    forceRendering: boolean;
    fresnelMax: number;
    fresnelMin: number;
    fresnelPower: number;
    hasWaterPlane: boolean;
    normalTexture: string;
    numTiles: number;
    perlinAmplitude: number;
    perlinLacunarity: number;
    perlinStartFreq: number;
    reflectionDistortion: number;
    repeatX: number;
    repeatY: number;
    shoreWaves: boolean;
    specularFactor: number;
    specularPower: number;
    texture: string;
    diffuseColor: number[];
    planeColor: number[];
    specularColor: number[];
    damage: number;
    absorb: number[];
    basecolor: number[];
    mincolor: number[];
    surfacecolor: number[];
    surfaceAlpha: number;
    windSpeed: number;
};
export declare type StartPos = {
    x: number;
    z: number;
};
export declare type Team = {
    startPos: StartPos;
};
export declare type MoveSpeeds = {
    tank: number;
    kbot: number;
    hover: number;
    ship: number;
};
export declare type TerrainType = {
    name: string;
    hardness: number;
    receiveTracks: boolean;
    moveSpeeds: MoveSpeeds;
};
export declare type Fog = {
    color: number[];
    height: string;
    fogatten: number;
};
export declare type Precipitation = {
    density: number;
    size: number;
    speed: number;
    windscale: number;
    texture: string;
};
export declare type Custom = {
    fog: Fog;
    precipitation: Precipitation;
};
export declare const defaultWaterOptions: Optionals<WaterOptions>;
