/* Options: Date: 2025-09-10 19:18:35 Version: 8.30 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://dev-optimization.power.dev //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: CommonOptimizerMonthlyRequest.* //ExcludeTypes: //DefaultImports: */ export enum DataProvider { Undefined = 0, SPP = 1, ERCOT = 2, MISO = 3, CAISO = 4, PJM = 5, ISONE = 6, NYISO = 7, NW = 8, SW = 9, SE = 10, AESO = 11, IESO = 12, CENACE = 20, NONISO = 99, EIA = 100, PNM = 150, NREL = 200, NOAA = 210, ENTSOE = 1000, EPIAS = 1010, SELF = 10000, } export enum PowerPlantType { Undefined = 'Undefined', Solar = 'Solar', Wind = 'Wind', Hybrid = 'Hybrid', } export class BatteryScenarioKeyGroup { public keyId: number; public year: number; public nodeId: number; public provider: DataProvider; public zoneId: number; public plantType: PowerPlantType; public solarId: number; public windId: number; public isServerless: boolean; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export enum BatteryScenarioType { Undefined = 'Undefined', Optimization = 'Optimization', Sum = 'Sum', OptiSum = 'OptiSum', FullTod = 'FullTod', CapacityTod = 'CapacityTod', } export enum PriceMarketType { Undefined = 0, Realtime = 1, DayAhead = 10, DART = 101, } export class BatteryScenarioKeyItem { public projectId: string; public keyId: number; public keyType: BatteryScenarioType; public recordKey: string; public jobStatus: number; public status: number; public minDate: string; public maxDate: string; public year: number; public yoyStatus: number; public usableCapacity: number; public usableCapacityFactor: number; public solarUsableCapacity: number; public solarUsableCapacityFactor: number; public baseMarket: PriceMarketType; public baseCapacityRate: number; public capacityRate: number; public solarCapacityRate: number; public windCapacityRate: number; public chargeEfficinecy: number; public dischargeEfficinecy: number; public nodeId: number; public provider: DataProvider; public zoneId: number; public lmpFileId: number; public productionFileId: number; public loadFileId: number; public capacityFileId: number; public plantType: PowerPlantType; public solarId: number; public windId: number; public ancillaryIncrementFactor: number; public energyIncrementFactor: number; public capacityIncrementFactor: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export enum BatteryProjectGroup { Undefined = 'Undefined', StandAlone = 'StandAlone', FTM = 'FTM', BTM = 'BTM', } export enum BooleanValue { Undefined = 'Undefined', Yes = 'Yes', No = 'No', Custom = 'Custom', } export class BatteryProjectTodItem { public month: number; public weekDay: number; public hour: number; public price: number; // @Ignore() public id: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export enum RevenueStackingMode { SolveWithoutAncillary = 'SolveWithoutAncillary', SolveWithAncillary = 'SolveWithAncillary', } export class MonthlyRequestBase { public projectId: string; public nodeAltId: number; public iso: DataProvider; public useEnergy: BooleanValue; public useAncillary: BooleanValue; public useCapacityTod: boolean; public baseMarket: PriceMarketType; public capacityTODs: BatteryProjectTodItem[]; public useRegup: number; public useRegdown: number; public useSpinning: number; public useNonSpinning: number; public paraciticLossesOperation: number; public paraciticLossesResting: number; public hvacLosses: number; public acCablingLosses: number; public transformatorLosses: number; public otherLosses: number; public representativeYear: number; public incrementReferanceYear: number; public useFutureData: number; public maxDailyCycle: number; public minDailyProfitPerMw: number; public ancillaryFileId: number; public lmpFileId: number; public maxChargingPriceCap: number; public maxDischargingPriceCap: number; public maxAncillaryPriceCap: number; public revenueStackingMode: RevenueStackingMode; public optimizationQuality: number; public ensureExlusive: number; public nodeRefId: number; public useInternalSolver: boolean; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class MonthlyApiStatusResponse { public failedCount: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @Route("/optimizer/monthly", "POST") export class CommonOptimizerMonthlyRequest extends MonthlyRequestBase implements IReturn { public month: number; public group: BatteryScenarioKeyGroup; public key: BatteryScenarioKeyItem; public projectGroup: BatteryProjectGroup; public constructor(init?: Partial) { super(init); (Object as any).assign(this, init); } public getTypeName() { return 'CommonOptimizerMonthlyRequest'; } public getMethod() { return 'POST'; } public createResponse() { return new MonthlyApiStatusResponse(); } }