import { IBaseFleioObjectModel } from '../../base-model/base-fleio-object.model';
import { IPricingPlanModel } from '../../openstack/model/pricing-plan.model';
import { IRoleModel } from '@fleio-api/client-user/roles/model/role.model';
import { IClientCreditModel } from '@fleio-api/billing/model/client-credit.model';

export interface IClientModel extends IBaseFleioObjectModel {
  has_dynamic_usage_services: boolean;
  enough_credit: boolean;
  name: string;
  display?: string;
  first_name: string;
  last_name: string;
  company: string;
  city: string;
  country: string;
  state: string;
  date_created: Date;
  currency: string; // TODO: we should use currency model here and in backend
  currencies: Array<string>;
  phone: string;
  country_name: string;
  long_name: string;
  email: string;
  vat_id: number;
  status: string;
  uptodate_credit: number;
  suspend_instead_of_terminate: boolean;
  configuration_id: string;
  configuration_name: string;
  group_name: string;
  has_billing_agreement: boolean;
  outofcredit_datetime: Date;
  address1?: string;
  address2?: string;
  zip_code?: number;
  tax_exempt?: boolean;
  tax_exempt_automation?: string;
  custom_fields?: object;
  openstack_billing_plans?: Array<IPricingPlanModel>;
  credits: IClientCreditModel[];
  roles?: IRoleModel[];
  confirm_vies_api_down?: boolean; // optional parameter when saving client to acknowledge VIES API is not available
  external_billing_id?: string;
  do_not_process: boolean;
}
