/**
 * CWMS Data API
 * CWMS REST API for Data Retrieval
 *
 * The version of the OpenAPI document: 2.3.2-2025.03.19
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { SeasonalValueBean } from './SeasonalValueBean';
/**
 *
 * @export
 * @interface LocationLevel
 */
export interface LocationLevel {
    /**
     * Owning office of object.
     * @type {string}
     * @memberof LocationLevel
     */
    officeId: string;
    /**
     * Name of the location level
     * @type {string}
     * @memberof LocationLevel
     */
    locationLevelId: string;
    /**
     * TimeSeries ID (e.g. from the times series catalog) to use as the location level. Mutually exclusive with seasonalValues and siParameterUnitsConstantValue
     * @type {string}
     * @memberof LocationLevel
     */
    seasonalTimeSeriesId?: string;
    /**
     * Generic name of this location level. Common names are 'Top of Dam', 'Streambed', 'Bottom of Dam'.
     * @type {string}
     * @memberof LocationLevel
     */
    specifiedLevelId?: string;
    /**
     * To indicate if single or aggregate value
     * @type {string}
     * @memberof LocationLevel
     */
    parameterTypeId?: LocationLevelParameterTypeIdEnum;
    /**
     * Data Type such as Stage, Elevation, or others.
     * @type {string}
     * @memberof LocationLevel
     */
    parameterId?: string;
    /**
     * Single value for this location level. Mutually exclusive with seasonableTimeSeriesId and seasonValues.
     * @type {number}
     * @memberof LocationLevel
     */
    constantValue?: number;
    /**
     * Units the provided levels are in
     * @type {string}
     * @memberof LocationLevel
     */
    levelUnitsId?: string;
    /**
     * The date/time at which this location level configuration takes effect.
     * @type {Date}
     * @memberof LocationLevel
     */
    levelDate?: Date;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    levelComment?: string;
    /**
     * The start point of provided seasonal values
     * @type {Date}
     * @memberof LocationLevel
     */
    intervalOrigin?: Date;
    /**
     *
     * @type {number}
     * @memberof LocationLevel
     */
    intervalMonths?: number;
    /**
     *
     * @type {number}
     * @memberof LocationLevel
     */
    intervalMinutes?: number;
    /**
     * Indicating whether or not to interpolate between seasonal values.
     * @type {string}
     * @memberof LocationLevel
     */
    interpolateString?: LocationLevelInterpolateStringEnum;
    /**
     * 0 if parameterTypeId is Inst. Otherwise duration indicating the time window of the aggregate value.
     * @type {string}
     * @memberof LocationLevel
     */
    durationId?: string;
    /**
     *
     * @type {number}
     * @memberof LocationLevel
     */
    attributeValue?: number;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    attributeUnitsId?: string;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    attributeParameterTypeId?: string;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    attributeParameterId?: string;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    attributeDurationId?: string;
    /**
     *
     * @type {string}
     * @memberof LocationLevel
     */
    attributeComment?: string;
    /**
     * List of Repeating seasonal values. The values repeater after the specified interval. A yearly interval seasonable could have 12 different values, one for each month for example. Mutually exclusive with seasonalTimeSeriesId and siParameterUnitsConstantValue
     * @type {Array<SeasonalValueBean>}
     * @memberof LocationLevel
     */
    seasonalValues?: Array<SeasonalValueBean>;
}
/**
 * @export
 */
export declare const LocationLevelParameterTypeIdEnum: {
    readonly Inst: "Inst";
    readonly Ave: "Ave";
    readonly Min: "Min";
    readonly Max: "Max";
    readonly Total: "Total";
};
export type LocationLevelParameterTypeIdEnum = typeof LocationLevelParameterTypeIdEnum[keyof typeof LocationLevelParameterTypeIdEnum];
/**
 * @export
 */
export declare const LocationLevelInterpolateStringEnum: {
    readonly T: "T";
    readonly F: "F";
};
export type LocationLevelInterpolateStringEnum = typeof LocationLevelInterpolateStringEnum[keyof typeof LocationLevelInterpolateStringEnum];
/**
 * Check if a given object implements the LocationLevel interface.
 */
export declare function instanceOfLocationLevel(value: object): boolean;
export declare function LocationLevelFromJSON(json: any): LocationLevel;
export declare function LocationLevelFromJSONTyped(json: any, ignoreDiscriminator: boolean): LocationLevel;
export declare function LocationLevelToJSON(value?: LocationLevel | null): any;
