/**
 * Shell Card Management APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import {
  array,
  boolean,
  lazy,
  number,
  object,
  optional,
  Schema,
} from '../schema';
import { Payers, payersSchema } from './payers';

export interface PayerRequest {
  /**
   * List of Payer entity.
   * Optional.
   * Note:
   * •    Max number of payers allowed in the input is 10, if it exceeds in the input it will throw an error.
   * •    This value is configurable. Initial configuration will be 1000 and will change to 10 once SFH changes are integrated.
   */
  payers?: Payers[];
  /** Returns only the high-level basic details of payers. Set this field to ‘true’ when only the basic details are required to get the result quicker. */
  returnBasicDetailsOnly?: boolean;
  /** Include address related fields on the response. Set this field to ‘False’ when Address fields are not required to get the result quicker. */
  includeAddresses?: boolean;
  /** Include the Finance Currency, used for Finance Widget, in the response */
  includeBonusParameters?: boolean;
  /** Page Number */
  currentPage?: number;
  /**
   * Page Size – Number of records to show on a page
   * Default value 50
   * Return 250 rows only in the response if -1 is supplied as page size.
   * Note:
   * •    Max page size is 250, if the user provided value is more than 250 then it will throw error.
   * •    This value is configurable.
   */
  pageSize?: number;
}

export const payerRequestSchema: Schema<PayerRequest> = object({
  payers: ['Payers', optional(array(lazy(() => payersSchema)))],
  returnBasicDetailsOnly: ['ReturnBasicDetailsOnly', optional(boolean())],
  includeAddresses: ['IncludeAddresses', optional(boolean())],
  includeBonusParameters: ['IncludeBonusParameters', optional(boolean())],
  currentPage: ['CurrentPage', optional(number())],
  pageSize: ['PageSize', optional(number())],
});
