export interface ICreateCompany {
  domain: string;
  name: string;
  reportTimeZone: string;
  status: string;
  uuid: string;
}

export interface IUserAgency {
  companyId: string;
  companyUuid: string;
}

export interface IUserList {
  _embedded: {
    users: IUser[];
  };
}

export interface IUser {
  uuid: string;
  email: string;
  givenName: string;
  familyName: string;
  companyUuid: string;
  companyName: string;
  companyDomain: string;
  agencyUuid: string;
  enabled: boolean;
  companyDelegate: boolean;
  admin: boolean;
  superAdmin: boolean;
  travelXen: boolean;
  travelOps: boolean;
  liquidAdmin: boolean;
  contract: boolean;
  vip: boolean;
  programManager: boolean;
}

export interface IPassenger {
  uuid: string;
  contact: {
    email: string;
  };
  givenName: string;
  familyName: string;
}

export interface IPaymentMethod {
  uuid: string;
  userUuid: string;
  isDefault: boolean;
  corporate: boolean;
  creditCardType: string;
}

export interface AccountToOnboard {
  country: string;
  currency: string;
  id: string;
  shippableCountries: string[];
  status: string;
}

export interface IAccount {
  id: string;
  companyUuid: string;
  currency: string;
  country: string;
  requirementError: boolean;
  requirementErrors: [];
  name: string;
  taxId: string;
  taxIdProvided: boolean;
  vatId: string;
  vatIdProvided: boolean;
  companyVerificationDocumentProvided: boolean;
  mcc: string;
  website: string;
  phoneNumber: string;
  address: {
    line1: string;
    line2: string;
    city: string;
    state: string;
    postalCode: string;
    country: string;
  };
  tosAccepted: boolean;
  creditLimitDisplay: number;
  datePhysicalCardLaunched: string;
  onboardingUserUuid: string;
  stripeAccountId: string;
  physicalCardLaunched: boolean;
  _links: {
    self: {
      href: string;
    };
  };
}

export interface ILiquidCompanyInfoData {
  line1: string;
  line2: string;
  city: string;
  state: string;
  postalCode: string;
  country: string;
  name: string;
  taxId: string;
  phoneNumber: string;
}

export interface IAddress {
  line1: string;
  line2: string;
  city: string;
  state: string;
  postalCode: string;
  country: string;
}

export interface IPersonalInfoData {
  birthdate: string;
  email: string;
  familyName: string;
  givenName: string;
  phoneNumber: string;
  ssn: string;
  title: string;
  address: IAddress;
}

export interface IBankAccountParams {
  accountHolderName: string;
  routingNumber: string;
  accountNumber: string;
}

export interface IOnboardingPerson {
  birthdate: string;
  email: string;
  familyName: string;
  givenName: string;
  phoneNumber: string;
  ssnLast4: string;
  ssnLast4Provided?: boolean;
  title: string;
  address: IAddress;
  relationship?: RelationshipOwner;
  id?: string;
  idDocumentBackProvided?: boolean;
  idDocumentFrontProvided?: boolean;
  idNumber?: number;
  idNumberProvided?: boolean;
}

export interface RelationshipOwner {
  director: boolean;
  owner: boolean;
  executive: boolean;
  percentOwnership: number;
  representative: boolean;
}
