// Generated from Fairmint/OpenCapTable/OCF/Document.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';

import * as pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 from '../../../../DA/Internal/Template';

import * as Fairmint_OpenCapTable_Types from '../../../../Fairmint/OpenCapTable/Types/module';

export declare type OcfObjectType =
  | 'OcfObjIssuer'
  | 'OcfObjStakeholder'
  | 'OcfObjStockClass'
  | 'OcfObjStockLegendTemplate'
  | 'OcfObjStockPlan'
  | 'OcfObjValuation'
  | 'OcfObjVestingTerms'
  | 'OcfObjFinancing'
  | 'OcfObjDocument'
  | 'OcfObjCeStakeholderRelationship'
  | 'OcfObjCeStakeholderStatus'
  | 'OcfObjTxIssuerAuthorizedSharesAdjustment'
  | 'OcfObjTxStockClassConversionRatioAdjustment'
  | 'OcfObjTxStockClassAuthorizedSharesAdjustment'
  | 'OcfObjTxStockClassSplit'
  | 'OcfObjTxStockPlanPoolAdjustment'
  | 'OcfObjTxStockPlanReturnToPool'
  | 'OcfObjTxConvertibleAcceptance'
  | 'OcfObjTxConvertibleCancellation'
  | 'OcfObjTxConvertibleConversion'
  | 'OcfObjTxConvertibleIssuance'
  | 'OcfObjTxConvertibleRetraction'
  | 'OcfObjTxConvertibleTransfer'
  | 'OcfObjTxEquityCompensationAcceptance'
  | 'OcfObjTxEquityCompensationCancellation'
  | 'OcfObjTxEquityCompensationExercise'
  | 'OcfObjTxEquityCompensationIssuance'
  | 'OcfObjTxEquityCompensationRelease'
  | 'OcfObjTxEquityCompensationRetraction'
  | 'OcfObjTxEquityCompensationTransfer'
  | 'OcfObjTxEquityCompensationRepricing'
  | 'OcfObjTxPlanSecurityAcceptance'
  | 'OcfObjTxPlanSecurityCancellation'
  | 'OcfObjTxPlanSecurityExercise'
  | 'OcfObjTxPlanSecurityIssuance'
  | 'OcfObjTxPlanSecurityRelease'
  | 'OcfObjTxPlanSecurityRetraction'
  | 'OcfObjTxPlanSecurityTransfer'
  | 'OcfObjTxStockAcceptance'
  | 'OcfObjTxStockCancellation'
  | 'OcfObjTxStockConversion'
  | 'OcfObjTxStockIssuance'
  | 'OcfObjTxStockReissuance'
  | 'OcfObjTxStockConsolidation'
  | 'OcfObjTxStockRepurchase'
  | 'OcfObjTxStockRetraction'
  | 'OcfObjTxStockTransfer'
  | 'OcfObjTxWarrantAcceptance'
  | 'OcfObjTxWarrantCancellation'
  | 'OcfObjTxWarrantExercise'
  | 'OcfObjTxWarrantIssuance'
  | 'OcfObjTxWarrantRetraction'
  | 'OcfObjTxWarrantTransfer'
  | 'OcfObjTxVestingAcceleration'
  | 'OcfObjTxVestingStart'
  | 'OcfObjTxVestingEvent'
;

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


export declare type OcfObjectReference = {
  object_id: string;
  object_type: OcfObjectType;
};

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


export declare type DocumentOcfData = {
  id: string;
  md5: string;
  comments: string[];
  related_objects: OcfObjectReference[];
  path: damlTypes.Optional<string>;
  uri: damlTypes.Optional<string>;
};

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


export declare type Document = {
  context: Fairmint_OpenCapTable_Types.Context;
  document_data: DocumentOcfData;
};

export declare interface DocumentInterface {
  Archive: damlTypes.Choice<Document, pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Document, undefined>>;
}
export declare const Document:
  damlTypes.Template<Document, undefined, '#OpenCapTable-v26:Fairmint.OpenCapTable.OCF.Document:Document'> &
  damlTypes.ToInterface<Document, never> &
  DocumentInterface;

export declare namespace Document {
}


