UNPKG

@ecoflow-api/rest-client

Version:

A rest client for the Ecoflow API for NodeJS

1,142 lines (1,139 loc) 604 kB
import { AnySchema, SmartPlugSn, SmartPlugQuotaAll, PowerStreamSerialNumber, PowerStreamQuotaAll, Delta2SerialNumber, Delta2QuotaAll, EnergyManagementParams, GlacierSerialNumber, GlacierQuotaAll, SmartHomePanelSerialNumber, ShpQuotaAll, ShpSplitPhaseInfoCfgList, ChSta, ShpScheduledChargingJobCfg, ShpScheduledDischargingJobCfg, DeltaProSerialNumber, DeltaProQuotaAll, inferSchema, DeviceListResponse, SetCommandResponse, QuotaAllResponse } from '@ecoflow-api/schemas'; import * as zod from 'zod'; /** * Device abstract class. */ declare abstract class Device<SerialNumber extends string, ParsedProperties> { protected restClient: RestClient; readonly sn: SerialNumber; constructor(restClient: RestClient, serialNumber: SerialNumber); /** * Parses the properties of the device. */ protected abstract parseProperties(data: any): ParsedProperties; /** * Sends a command with the given payload. */ protected sendCommand(payload: any, schema: AnySchema): Promise<{ code: "0"; message: "Success"; eagleEyeTraceId: string; tid: string; } | { code: string; message: string; eagleEyeTraceId: string; tid: string; }>; /** * Retrieves the properties of the device asynchronously. */ getProperties(): Promise<ParsedProperties>; } /** * Represents an unknown device. */ declare class UnknownDevice extends Device<string, Record<string, any>> { /** * Simply return the data as is as we don't know the device hence the properties as well. */ protected parseProperties(data: any): any; } /** * Represents a smart plug device. * @extends Device */ declare class SmartPlug extends Device<SmartPlugSn, SmartPlugQuotaAll> { #private; constructor(restClient: RestClient, sn: SmartPlugSn); protected parseProperties(data: any): zod.objectOutputType<{ "2_1.brightness": zod.ZodNumber; "2_1.country": zod.ZodNumber; "2_1.current": zod.ZodNumber; "2_1.errCode": zod.ZodNumber; "2_1.freq": zod.ZodNumber; "2_1.maxCur": zod.ZodNumber; "2_1.switchSta": zod.ZodBoolean; "2_1.temp": zod.ZodNumber; "2_1.town": zod.ZodNumber; "2_1.updateTime": zod.ZodString; "2_1.volt": zod.ZodNumber; "2_1.warnCode": zod.ZodNumber; "2_1.watts": zod.ZodNumber; "2_2.task1": zod.ZodObject<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; "2_2.task2": zod.ZodObject<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; }, zod.ZodTypeAny, "passthrough">>; "2_2.task3": zod.ZodObject<{ taskIndex: zod.ZodNumber; type: zod.ZodNumber; timeRange: zod.ZodObject<{ isConfig: zod.ZodBoolean; isEnabled: zod.ZodOptional<zod.ZodBoolean>; timeData: zod.ZodNumber; timeMode: zod.ZodNumber; startTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; stopTime: zod.ZodObject<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">, zod.objectInputType<{ sec: zod.ZodNumber; week: zod.ZodNumber; min: zod.ZodNumber; hour: zod.ZodNumber; month: zod.ZodNumber; year: zod.ZodNumber; day: zod.ZodNumber; }, zod.ZodTypeAny, "passthrough">>; }, "passthrough", zod.ZodTypeAny, zod.objectOutputType<{ isConfig: zod.ZodBoolean; isEnab