/**
 * AdvancedBilling
 *
 * This file was automatically generated for Maxio by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { expandoObject, lazy, nullable, optional, Schema } from '../schema.js';
import {
  PriceEndingQuantity,
  priceEndingQuantitySchema,
} from './containers/priceEndingQuantity.js';
import {
  PriceStartingQuantity,
  priceStartingQuantitySchema,
} from './containers/priceStartingQuantity.js';
import {
  PriceUnitPrice,
  priceUnitPriceSchema,
} from './containers/priceUnitPrice.js';

export interface Price {
  startingQuantity: PriceStartingQuantity;
  endingQuantity?: PriceEndingQuantity | null;
  /** The price can contain up to 8 decimal places. i.e. 1.00 or 0.0012 or 0.00000065 */
  unitPrice: PriceUnitPrice;
  [key: string]: unknown;
}

export const priceSchema: Schema<Price> = lazy(() =>
  expandoObject({
    startingQuantity: ['starting_quantity', priceStartingQuantitySchema],
    endingQuantity: [
      'ending_quantity',
      optional(nullable(priceEndingQuantitySchema)),
    ],
    unitPrice: ['unit_price', priceUnitPriceSchema],
  })
);
