import { ChargingLimitSourceEnum, ChargingProfileKindEnum, ChargingProfilePurposeEnum, ChargingRateUnitEnum, OCPP2_0_1, RecurrencyKindEnum, type ChargingProfileDto, type ChargingScheduleDto } from '@citrineos/base';
/**
 * Input type for creating/updating a ChargingProfile via the repository.
 * Mirrors OCPP2_0_1.ChargingProfileType but uses native enum types.
 */
export interface ChargingProfileInput {
    id: number;
    stackLevel: number;
    chargingProfilePurpose: keyof typeof ChargingProfilePurposeEnum;
    chargingProfileKind: keyof typeof ChargingProfileKindEnum;
    recurrencyKind?: keyof typeof RecurrencyKindEnum | null;
    validFrom?: string | null;
    validTo?: string | null;
    chargingSchedule: [ChargingScheduleInput] | [ChargingScheduleInput, ChargingScheduleInput] | [ChargingScheduleInput, ChargingScheduleInput, ChargingScheduleInput];
    transactionId?: string | null;
}
/**
 * Input type for creating a ChargingSchedule via the repository.
 * Mirrors OCPP2_0_1.ChargingScheduleType but uses native enum types.
 */
export interface ChargingScheduleInput {
    id: number;
    startSchedule?: string | null;
    duration?: number | null;
    chargingRateUnit: keyof typeof ChargingRateUnitEnum;
    chargingSchedulePeriod: [ChargingSchedulePeriodInput, ...ChargingSchedulePeriodInput[]];
    minChargingRate?: number | null;
    salesTariff?: SalesTariffInput | null;
}
export interface ChargingSchedulePeriodInput {
    startPeriod: number;
    limit: number;
    numberPhases?: number | null;
    phaseToUse?: number | null;
}
export interface SalesTariffInput {
    id: number;
    salesTariffDescription?: string | null;
    numEPriceLevels?: number | null;
    salesTariffEntry: [OCPP2_0_1.SalesTariffEntryType, ...OCPP2_0_1.SalesTariffEntryType[]];
}
/**
 * Input type for creating a CompositeSchedule via the repository.
 * Mirrors OCPP2_0_1.CompositeScheduleType but uses native enum types.
 */
export interface CompositeScheduleInput {
    chargingSchedulePeriod: [ChargingSchedulePeriodInput, ...ChargingSchedulePeriodInput[]];
    evseId: number;
    duration: number;
    scheduleStart: string;
    chargingRateUnit: keyof typeof ChargingRateUnitEnum;
}
export declare class ChargingProfileMapper {
    static toChargingProfileKindEnumType(kind: keyof typeof ChargingProfileKindEnum): OCPP2_0_1.ChargingProfileKindEnumType;
    static fromChargingProfileKindEnumType(kind: OCPP2_0_1.ChargingProfileKindEnumType): keyof typeof ChargingProfileKindEnum;
    static toChargingProfilePurposeEnumType(purpose: keyof typeof ChargingProfilePurposeEnum): OCPP2_0_1.ChargingProfilePurposeEnumType;
    static fromChargingProfilePurposeEnumType(purpose: OCPP2_0_1.ChargingProfilePurposeEnumType): keyof typeof ChargingProfilePurposeEnum;
    static toRecurrencyKindEnumType(kind?: keyof typeof RecurrencyKindEnum | null): OCPP2_0_1.RecurrencyKindEnumType | undefined;
    static fromRecurrencyKindEnumType(kind?: OCPP2_0_1.RecurrencyKindEnumType | null): keyof typeof RecurrencyKindEnum | undefined;
    static toChargingRateUnitEnumType(unit: keyof typeof ChargingRateUnitEnum): OCPP2_0_1.ChargingRateUnitEnumType;
    static fromChargingRateUnitEnumType(unit: OCPP2_0_1.ChargingRateUnitEnumType): keyof typeof ChargingRateUnitEnum;
    static toChargingLimitSourceEnumType(source?: keyof typeof ChargingLimitSourceEnum | null): OCPP2_0_1.ChargingLimitSourceEnumType | undefined;
    static fromChargingLimitSourceEnumType(source?: OCPP2_0_1.ChargingLimitSourceEnumType | null): keyof typeof ChargingLimitSourceEnum | undefined;
    /**
     * Converts OCPP2_0_1.ChargingProfileType to a native ChargingProfileInput.
     */
    static fromChargingProfileType(chargingProfile: OCPP2_0_1.ChargingProfileType): ChargingProfileInput;
    /**
     * Converts OCPP2_0_1.ChargingScheduleType to a native ChargingScheduleInput.
     */
    static fromChargingScheduleType(schedule: OCPP2_0_1.ChargingScheduleType): ChargingScheduleInput;
    /**
     * Converts OCPP2_0_1.CompositeScheduleType to a native CompositeScheduleInput.
     */
    static fromCompositeScheduleType(compositeSchedule: OCPP2_0_1.CompositeScheduleType): CompositeScheduleInput;
    /**
     * Converts a native ChargingProfile (Sequelize model) to OCPP2_0_1.ChargingProfileType.
     */
    static toChargingProfileType(chargingProfile: ChargingProfileDto, transactionId?: string | null): OCPP2_0_1.ChargingProfileType;
    /**
     * Converts a native ChargingScheduleDto to OCPP2_0_1.ChargingScheduleType.
     */
    static toChargingScheduleType(schedule: ChargingScheduleDto): OCPP2_0_1.ChargingScheduleType;
}
