// Generated from Fairmint/OpenCapTable/Types.daml
/* eslint-disable @typescript-eslint/camelcase */
/* eslint-disable @typescript-eslint/no-namespace */
/* eslint-disable @typescript-eslint/no-use-before-define */
import * as jtv from '@mojotech/json-type-validation';
import * as damlTypes from '@daml/types';

export declare type OcfConversionTrigger = {
  conversion_right: OcfAnyConversionRight;
  trigger_id: string;
  type_: OcfConversionTriggerType;
  nickname: damlTypes.Optional<string>;
  trigger_condition: damlTypes.Optional<string>;
  trigger_date: damlTypes.Optional<damlTypes.Time>;
  trigger_description: damlTypes.Optional<string>;
};

export declare const OcfConversionTrigger:
  damlTypes.Serializable<OcfConversionTrigger> & {
  }
;


export declare type OcfAnyConversionRight =
  |  { tag: 'OcfRightConvertible'; value: OcfConvertibleConversionRight }
  |  { tag: 'OcfRightWarrant'; value: OcfWarrantConversionRight }
  |  { tag: 'OcfRightStockClass'; value: OcfStockClassConversionRight }
;

export declare const OcfAnyConversionRight:
  damlTypes.Serializable<OcfAnyConversionRight> & {
  }
;


export declare type OcfConversionTriggerType =
  | 'OcfTriggerTypeTypeAutomaticOnCondition'
  | 'OcfTriggerTypeTypeAutomaticOnDate'
  | 'OcfTriggerTypeTypeElectiveInRange'
  | 'OcfTriggerTypeTypeElectiveOnCondition'
  | 'OcfTriggerTypeTypeElectiveAtWill'
  | 'OcfTriggerTypeTypeUnspecified'
;

export declare const OcfConversionTriggerType:
  damlTypes.Serializable<OcfConversionTriggerType> & {
  }
& { readonly keys: OcfConversionTriggerType[] } & { readonly [e in OcfConversionTriggerType]: e }
;


export declare type OcfConvertibleConversionRight = {
  conversion_mechanism: OcfConvertibleConversionMechanism;
  type_: string;
  converts_to_future_round: damlTypes.Optional<boolean>;
  converts_to_stock_class_id: damlTypes.Optional<string>;
};

export declare const OcfConvertibleConversionRight:
  damlTypes.Serializable<OcfConvertibleConversionRight> & {
  }
;


export declare type OcfConvertibleConversionMechanism =
  |  { tag: 'OcfConvMechSAFE'; value: OcfSAFEConversionMechanism }
  |  { tag: 'OcfConvMechNote'; value: OcfNoteConversionMechanism }
  |  { tag: 'OcfConvMechCustom'; value: OcfCustomConversionMechanism }
  |  { tag: 'OcfConvMechPercentCapitalization'; value: OcfPercentCapitalizationConversionMechanism }
  |  { tag: 'OcfConvMechFixedAmount'; value: OcfFixedAmountConversionMechanism }
  |  { tag: 'OcfConvMechSharePriceBased'; value: OcfSharePriceBasedConversionMechanism }
  |  { tag: 'OcfConvMechValuationBased'; value: OcfValuationBasedConversionMechanism }
  |  { tag: 'OcfConvMechRatio'; value: OcfRatio }
;

export declare const OcfConvertibleConversionMechanism:
  damlTypes.Serializable<OcfConvertibleConversionMechanism> & {
  }
;


export declare type OcfConvertibleType =
  | 'OcfConvertibleNote'
  | 'OcfConvertibleSafe'
  | 'OcfConvertibleSecurity'
;

export declare const OcfConvertibleType:
  damlTypes.Serializable<OcfConvertibleType> & {
  }
& { readonly keys: OcfConvertibleType[] } & { readonly [e in OcfConvertibleType]: e }
;


export declare type OcfWarrantConversionRight = {
  conversion_mechanism: OcfWarrantConversionMechanism;
  type_: string;
  converts_to_future_round: damlTypes.Optional<boolean>;
  converts_to_stock_class_id: damlTypes.Optional<string>;
};

export declare const OcfWarrantConversionRight:
  damlTypes.Serializable<OcfWarrantConversionRight> & {
  }
;


export declare type OcfWarrantConversionMechanism =
  |  { tag: 'OcfWarrantMechanismCustom'; value: OcfWarrantConversionMechanism.OcfWarrantMechanismCustom }
  |  { tag: 'OcfWarrantMechanismPercentCapitalization'; value: OcfWarrantConversionMechanism.OcfWarrantMechanismPercentCapitalization }
  |  { tag: 'OcfWarrantMechanismFixedAmount'; value: OcfWarrantConversionMechanism.OcfWarrantMechanismFixedAmount }
  |  { tag: 'OcfWarrantMechanismValuationBased'; value: OcfWarrantConversionMechanism.OcfWarrantMechanismValuationBased }
  |  { tag: 'OcfWarrantMechanismSharePriceBased'; value: OcfWarrantConversionMechanism.OcfWarrantMechanismSharePriceBased }
;

export declare const OcfWarrantConversionMechanism:
  damlTypes.Serializable<OcfWarrantConversionMechanism> & {
  OcfWarrantMechanismCustom: damlTypes.Serializable<OcfWarrantConversionMechanism.OcfWarrantMechanismCustom>;
  OcfWarrantMechanismPercentCapitalization: damlTypes.Serializable<OcfWarrantConversionMechanism.OcfWarrantMechanismPercentCapitalization>;
  OcfWarrantMechanismFixedAmount: damlTypes.Serializable<OcfWarrantConversionMechanism.OcfWarrantMechanismFixedAmount>;
  OcfWarrantMechanismValuationBased: damlTypes.Serializable<OcfWarrantConversionMechanism.OcfWarrantMechanismValuationBased>;
  OcfWarrantMechanismSharePriceBased: damlTypes.Serializable<OcfWarrantConversionMechanism.OcfWarrantMechanismSharePriceBased>;
  }
;


export namespace OcfWarrantConversionMechanism {
  type OcfWarrantMechanismCustom = {
    custom_conversion_description: string;
  };
} //namespace OcfWarrantConversionMechanism


export namespace OcfWarrantConversionMechanism {
  type OcfWarrantMechanismPercentCapitalization = {
    converts_to_percent: damlTypes.Numeric;
    capitalization_definition: damlTypes.Optional<string>;
    capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
  };
} //namespace OcfWarrantConversionMechanism


export namespace OcfWarrantConversionMechanism {
  type OcfWarrantMechanismFixedAmount = {
    converts_to_quantity: damlTypes.Numeric;
  };
} //namespace OcfWarrantConversionMechanism


export namespace OcfWarrantConversionMechanism {
  type OcfWarrantMechanismValuationBased = {
    valuation_type: string;
    valuation_amount: damlTypes.Optional<OcfMonetary>;
    capitalization_definition: damlTypes.Optional<string>;
    capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
  };
} //namespace OcfWarrantConversionMechanism


export namespace OcfWarrantConversionMechanism {
  type OcfWarrantMechanismSharePriceBased = {
    description: string;
    discount: boolean;
    discount_percentage: damlTypes.Optional<damlTypes.Numeric>;
    discount_amount: damlTypes.Optional<OcfMonetary>;
  };
} //namespace OcfWarrantConversionMechanism


export declare type OcfNoteConversionMechanism = {
  compounding_type: OcfCompoundingType;
  day_count_convention: OcfDayCountType;
  interest_accrual_period: OcfAccrualPeriodType;
  interest_payout: OcfInterestPayoutType;
  interest_rates: OcfInterestRate[];
  capitalization_definition: damlTypes.Optional<string>;
  capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
  conversion_discount: damlTypes.Optional<damlTypes.Numeric>;
  conversion_mfn: damlTypes.Optional<boolean>;
  conversion_valuation_cap: damlTypes.Optional<OcfMonetary>;
  exit_multiple: damlTypes.Optional<OcfRatio>;
};

export declare const OcfNoteConversionMechanism:
  damlTypes.Serializable<OcfNoteConversionMechanism> & {
  }
;


export declare type OcfSAFEConversionMechanism = {
  conversion_mfn: boolean;
  capitalization_definition: damlTypes.Optional<string>;
  capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
  conversion_discount: damlTypes.Optional<damlTypes.Numeric>;
  conversion_timing: damlTypes.Optional<string>;
  conversion_valuation_cap: damlTypes.Optional<OcfMonetary>;
  exit_multiple: damlTypes.Optional<OcfRatio>;
};

export declare const OcfSAFEConversionMechanism:
  damlTypes.Serializable<OcfSAFEConversionMechanism> & {
  }
;


export declare type OcfValuationBasedConversionMechanism = {
  valuation_type: OcfValuationBasedFormulaType;
  capitalization_definition: damlTypes.Optional<string>;
  capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
  valuation_amount: damlTypes.Optional<OcfMonetary>;
};

export declare const OcfValuationBasedConversionMechanism:
  damlTypes.Serializable<OcfValuationBasedConversionMechanism> & {
  }
;


export declare type OcfValuationBasedFormulaType =
  | 'OcfValuationCap'
  | 'OcfValuationFixed'
  | 'OcfValuationActual'
;

export declare const OcfValuationBasedFormulaType:
  damlTypes.Serializable<OcfValuationBasedFormulaType> & {
  }
& { readonly keys: OcfValuationBasedFormulaType[] } & { readonly [e in OcfValuationBasedFormulaType]: e }
;


export declare type OcfSharePriceBasedConversionMechanism = {
  description: string;
  discount: boolean;
  discount_amount: damlTypes.Optional<OcfMonetary>;
  discount_percentage: damlTypes.Optional<damlTypes.Numeric>;
};

export declare const OcfSharePriceBasedConversionMechanism:
  damlTypes.Serializable<OcfSharePriceBasedConversionMechanism> & {
  }
;


export declare type OcfPercentCapitalizationConversionMechanism = {
  converts_to_percent: damlTypes.Numeric;
  capitalization_definition: damlTypes.Optional<string>;
  capitalization_definition_rules: damlTypes.Optional<OcfCapitalizationDefinitionRules>;
};

export declare const OcfPercentCapitalizationConversionMechanism:
  damlTypes.Serializable<OcfPercentCapitalizationConversionMechanism> & {
  }
;


export declare type OcfFixedAmountConversionMechanism = {
  converts_to_quantity: damlTypes.Numeric;
};

export declare const OcfFixedAmountConversionMechanism:
  damlTypes.Serializable<OcfFixedAmountConversionMechanism> & {
  }
;


export declare type OcfCustomConversionMechanism = {
  custom_conversion_description: string;
};

export declare const OcfCustomConversionMechanism:
  damlTypes.Serializable<OcfCustomConversionMechanism> & {
  }
;


export declare type OcfConversionMechanism =
  | 'OcfConversionMechanismRatioConversion'
  | 'OcfConversionMechanismPercentCapitalizationConversion'
  | 'OcfConversionMechanismFixedAmountConversion'
  | 'OcfConversionMechanismValuationBasedConversion'
  | 'OcfConversionMechanismSharePriceBasedConversion'
  | 'OcfConversionMechanismSAFEConversion'
  | 'OcfConversionMechanismNoteConversion'
  | 'OcfConversionMechanismCustomConversion'
;

export declare const OcfConversionMechanism:
  damlTypes.Serializable<OcfConversionMechanism> & {
  }
& { readonly keys: OcfConversionMechanism[] } & { readonly [e in OcfConversionMechanism]: e }
;


export declare type OcfStockClassConversionRight = {
  conversion_mechanism: OcfConversionMechanism;
  conversion_trigger: OcfConversionTrigger;
  converts_to_stock_class_id: string;
  type_: string;
  ceiling_price_per_share: damlTypes.Optional<OcfMonetary>;
  conversion_price: damlTypes.Optional<OcfMonetary>;
  custom_description: damlTypes.Optional<string>;
  discount_rate: damlTypes.Optional<damlTypes.Numeric>;
  expires_at: damlTypes.Optional<damlTypes.Time>;
  floor_price_per_share: damlTypes.Optional<OcfMonetary>;
  percent_of_capitalization: damlTypes.Optional<damlTypes.Numeric>;
  ratio: damlTypes.Optional<OcfRatio>;
  reference_share_price: damlTypes.Optional<OcfMonetary>;
  reference_valuation_price_per_share: damlTypes.Optional<OcfMonetary>;
  valuation_cap: damlTypes.Optional<OcfMonetary>;
};

export declare const OcfStockClassConversionRight:
  damlTypes.Serializable<OcfStockClassConversionRight> & {
  }
;


export declare type OcfRatioConversionMechanism = {
  conversion_price: OcfMonetary;
  ratio: OcfRatio;
  rounding_type: OcfRoundingType;
};

export declare const OcfRatioConversionMechanism:
  damlTypes.Serializable<OcfRatioConversionMechanism> & {
  }
;


export declare type OcfRatio = {
  numerator: damlTypes.Numeric;
  denominator: damlTypes.Numeric;
};

export declare const OcfRatio:
  damlTypes.Serializable<OcfRatio> & {
  }
;


export declare type OcfStockClassType =
  | 'OcfStockClassTypeCommon'
  | 'OcfStockClassTypePreferred'
;

export declare const OcfStockClassType:
  damlTypes.Serializable<OcfStockClassType> & {
  }
& { readonly keys: OcfStockClassType[] } & { readonly [e in OcfStockClassType]: e }
;


export declare type OcfShareNumberRange = {
  starting_share_number: damlTypes.Numeric;
  ending_share_number: damlTypes.Numeric;
};

export declare const OcfShareNumberRange:
  damlTypes.Serializable<OcfShareNumberRange> & {
  }
;


export declare type OcfSecurityExemption = {
  description: string;
  jurisdiction: string;
};

export declare const OcfSecurityExemption:
  damlTypes.Serializable<OcfSecurityExemption> & {
  }
;


export declare type OcfQuantitySourceType =
  | 'OcfQuantityHumanEstimated'
  | 'OcfQuantityMachineEstimated'
  | 'OcfQuantityUnspecified'
  | 'OcfQuantityInstrumentFixed'
  | 'OcfQuantityInstrumentMax'
  | 'OcfQuantityInstrumentMin'
;

export declare const OcfQuantitySourceType:
  damlTypes.Serializable<OcfQuantitySourceType> & {
  }
& { readonly keys: OcfQuantitySourceType[] } & { readonly [e in OcfQuantitySourceType]: e }
;


export declare type OcfStakeholderRelationshipType =
  | 'OcfRelAdvisor'
  | 'OcfRelBoardMember'
  | 'OcfRelConsultant'
  | 'OcfRelEmployee'
  | 'OcfRelExAdvisor'
  | 'OcfRelExConsultant'
  | 'OcfRelExEmployee'
  | 'OcfRelExecutive'
  | 'OcfRelFounder'
  | 'OcfRelInvestor'
  | 'OcfRelNonUsEmployee'
  | 'OcfRelOfficer'
  | 'OcfRelOther'
;

export declare const OcfStakeholderRelationshipType:
  damlTypes.Serializable<OcfStakeholderRelationshipType> & {
  }
& { readonly keys: OcfStakeholderRelationshipType[] } & { readonly [e in OcfStakeholderRelationshipType]: e }
;


export declare type TransferOperation = {
  recipient: damlTypes.Party;
  quantity: damlTypes.Numeric;
};

export declare const TransferOperation:
  damlTypes.Serializable<TransferOperation> & {
  }
;


export declare type Context = {
  issuer: damlTypes.Party;
  system_operator: damlTypes.Party;
};

export declare const Context:
  damlTypes.Serializable<Context> & {
  }
;


export declare type OcfEquityCompensationIssuanceData = {
  compensation_type: OcfCompensationType;
  quantity: damlTypes.Numeric;
  comments: string[];
  termination_exercise_windows: OcfTerminationWindow[];
  vestings: OcfVesting[];
  base_price: damlTypes.Optional<OcfMonetary>;
  early_exercisable: damlTypes.Optional<boolean>;
  exercise_price: damlTypes.Optional<OcfMonetary>;
  expiration_date: damlTypes.Optional<damlTypes.Time>;
};

export declare const OcfEquityCompensationIssuanceData:
  damlTypes.Serializable<OcfEquityCompensationIssuanceData> & {
  }
;


export declare type OcfVesting = {
  amount: damlTypes.Numeric;
  date: damlTypes.Time;
};

export declare const OcfVesting:
  damlTypes.Serializable<OcfVesting> & {
  }
;


export declare type OcfTerminationWindow = {
  period: damlTypes.Int;
  period_type: OcfPeriodType;
  reason: OcfTerminationWindowType;
};

export declare const OcfTerminationWindow:
  damlTypes.Serializable<OcfTerminationWindow> & {
  }
;


export declare type OcfTerminationWindowType =
  | 'OcfTermVoluntaryOther'
  | 'OcfTermVoluntaryGoodCause'
  | 'OcfTermVoluntaryRetirement'
  | 'OcfTermInvoluntaryOther'
  | 'OcfTermInvoluntaryDeath'
  | 'OcfTermInvoluntaryDisability'
  | 'OcfTermInvoluntaryWithCause'
;

export declare const OcfTerminationWindowType:
  damlTypes.Serializable<OcfTerminationWindowType> & {
  }
& { readonly keys: OcfTerminationWindowType[] } & { readonly [e in OcfTerminationWindowType]: e }
;


export declare type OcfPeriodType =
  | 'OcfPeriodDays'
  | 'OcfPeriodMonths'
  | 'OcfPeriodYears'
;

export declare const OcfPeriodType:
  damlTypes.Serializable<OcfPeriodType> & {
  }
& { readonly keys: OcfPeriodType[] } & { readonly [e in OcfPeriodType]: e }
;


export declare type OcfCompensationType =
  | 'OcfCompensationTypeOptionNSO'
  | 'OcfCompensationTypeOptionISO'
  | 'OcfCompensationTypeOption'
  | 'OcfCompensationTypeRSU'
  | 'OcfCompensationTypeCSAR'
  | 'OcfCompensationTypeSSAR'
;

export declare const OcfCompensationType:
  damlTypes.Serializable<OcfCompensationType> & {
  }
& { readonly keys: OcfCompensationType[] } & { readonly [e in OcfCompensationType]: e }
;


export declare type OcfAccrualPeriodType =
  | 'OcfAccrualDaily'
  | 'OcfAccrualMonthly'
  | 'OcfAccrualQuarterly'
  | 'OcfAccrualSemiAnnual'
  | 'OcfAccrualAnnual'
;

export declare const OcfAccrualPeriodType:
  damlTypes.Serializable<OcfAccrualPeriodType> & {
  }
& { readonly keys: OcfAccrualPeriodType[] } & { readonly [e in OcfAccrualPeriodType]: e }
;


export declare type OcfInterestRate = {
  accrual_start_date: damlTypes.Time;
  rate: damlTypes.Numeric;
  accrual_end_date: damlTypes.Optional<damlTypes.Time>;
};

export declare const OcfInterestRate:
  damlTypes.Serializable<OcfInterestRate> & {
  }
;


export declare type OcfCapitalizationDefinitionRules = {
  include_additional_option_pool_topup: boolean;
  include_new_money: boolean;
  include_option_pool_topup_for_promised_options: boolean;
  include_other_converting_securities: boolean;
  include_outstanding_options: boolean;
  include_outstanding_shares: boolean;
  include_outstanding_unissued_options: boolean;
  include_this_security: boolean;
};

export declare const OcfCapitalizationDefinitionRules:
  damlTypes.Serializable<OcfCapitalizationDefinitionRules> & {
  }
;


export declare type OcfCapitalizationDefinition = {
  exclude_security_ids: string[];
  include_security_ids: string[];
  include_stock_class_ids: string[];
  include_stock_plans_ids: string[];
};

export declare const OcfCapitalizationDefinition:
  damlTypes.Serializable<OcfCapitalizationDefinition> & {
  }
;


export declare type OcfStockParent = {
  parent_object_id: string;
  parent_object_type: OcfParentSecurityType;
};

export declare const OcfStockParent:
  damlTypes.Serializable<OcfStockParent> & {
  }
;


export declare type OcfParentSecurityType =
  | 'OcfParentStockPlan'
  | 'OcfParentStock'
  | 'OcfParentWarrant'
  | 'OcfParentConvertible'
;

export declare const OcfParentSecurityType:
  damlTypes.Serializable<OcfParentSecurityType> & {
  }
& { readonly keys: OcfParentSecurityType[] } & { readonly [e in OcfParentSecurityType]: e }
;


export declare type OcfMonetary = {
  amount: damlTypes.Numeric;
  currency: string;
};

export declare const OcfMonetary:
  damlTypes.Serializable<OcfMonetary> & {
  }
;


export declare type OcfAddress = {
  address_type: OcfAddressType;
  country: string;
  city: damlTypes.Optional<string>;
  country_subdivision: damlTypes.Optional<string>;
  postal_code: damlTypes.Optional<string>;
  street_suite: damlTypes.Optional<string>;
};

export declare const OcfAddress:
  damlTypes.Serializable<OcfAddress> & {
  }
;


export declare type OcfAddressType =
  | 'OcfAddressTypeLegal'
  | 'OcfAddressTypeContact'
  | 'OcfAddressTypeOther'
;

export declare const OcfAddressType:
  damlTypes.Serializable<OcfAddressType> & {
  }
& { readonly keys: OcfAddressType[] } & { readonly [e in OcfAddressType]: e }
;


export declare type OcfTaxID = {
  country: string;
  tax_id: string;
};

export declare const OcfTaxID:
  damlTypes.Serializable<OcfTaxID> & {
  }
;


export declare type OcfPhone = {
  phone_number: string;
  phone_type: OcfPhoneType;
};

export declare const OcfPhone:
  damlTypes.Serializable<OcfPhone> & {
  }
;


export declare type OcfEmail = {
  email_address: string;
  email_type: OcfEmailType;
};

export declare const OcfEmail:
  damlTypes.Serializable<OcfEmail> & {
  }
;


export declare type OcfEmailType =
  | 'OcfEmailTypeBusiness'
  | 'OcfEmailTypePersonal'
  | 'OcfEmailTypeOther'
;

export declare const OcfEmailType:
  damlTypes.Serializable<OcfEmailType> & {
  }
& { readonly keys: OcfEmailType[] } & { readonly [e in OcfEmailType]: e }
;


export declare type OcfFileType =
  | 'OcfManifestFile'
  | 'OcfStakeholdersFile'
  | 'OcfStockClassesFile'
  | 'OcfStockLegendTemplatesFile'
  | 'OcfStockPlansFile'
  | 'OcfTransactionsFile'
  | 'OcfValuationsFile'
  | 'OcfVestingTermsFile'
  | 'OcfFinancingsFile'
  | 'OcfDocumentsFile'
;

export declare const OcfFileType:
  damlTypes.Serializable<OcfFileType> & {
  }
& { readonly keys: OcfFileType[] } & { readonly [e in OcfFileType]: e }
;


export declare type OcfRoundingType =
  | 'OcfRoundingCeiling'
  | 'OcfRoundingFloor'
  | 'OcfRoundingNormal'
;

export declare const OcfRoundingType:
  damlTypes.Serializable<OcfRoundingType> & {
  }
& { readonly keys: OcfRoundingType[] } & { readonly [e in OcfRoundingType]: e }
;


export declare type OcfDayCountType =
  | 'OcfDayCountActual365'
  | 'OcfDayCount30_360'
;

export declare const OcfDayCountType:
  damlTypes.Serializable<OcfDayCountType> & {
  }
& { readonly keys: OcfDayCountType[] } & { readonly [e in OcfDayCountType]: e }
;


export declare type OcfCompoundingType =
  | 'OcfCompounding'
  | 'OcfSimple'
;

export declare const OcfCompoundingType:
  damlTypes.Serializable<OcfCompoundingType> & {
  }
& { readonly keys: OcfCompoundingType[] } & { readonly [e in OcfCompoundingType]: e }
;


export declare type OcfInterestPayoutType =
  | 'OcfInterestPayoutDeferred'
  | 'OcfInterestPayoutCash'
;

export declare const OcfInterestPayoutType:
  damlTypes.Serializable<OcfInterestPayoutType> & {
  }
& { readonly keys: OcfInterestPayoutType[] } & { readonly [e in OcfInterestPayoutType]: e }
;


export declare type OcfPhoneType =
  | 'OcfPhoneHome'
  | 'OcfPhoneMobile'
  | 'OcfPhoneBusiness'
  | 'OcfPhoneOther'
;

export declare const OcfPhoneType:
  damlTypes.Serializable<OcfPhoneType> & {
  }
& { readonly keys: OcfPhoneType[] } & { readonly [e in OcfPhoneType]: e }
;

