import Joi from 'joi';
import { fileExists } from './custom-validators/file-exists';
import { RateCard, RateCardSchema } from './rate-card';

/** Configuration for attaching Native Rating to a carrier */
export interface NativeRatingConfiguration {
  /** @description Default rate card to use for rating */
  DefaultRateCardId?: string;
  /** @description Can users manage their own rates */
  SupportsUserManagedRates?: boolean;
  /** Path to rating logic and rate card data for this carrier */
  Path?: string;
  /** Array of rate cards for the carrier */
  RateCards?: RateCard[];
}

export const NativeRatingConfigurationSchema = Joi.object({
  DefaultRateCardId: Joi.string().optional(),
  SupportsUserManagedRates: Joi.boolean().optional(),
  Path: Joi.string().optional().custom(fileExists, 'implementation path exists'),
  RateCards: Joi.array().optional().items(RateCardSchema).unique('Id'),
});
