// Generated from Splice/Api/Token/MetadataV1.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 pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 from '../../../../DA/Time/Types';

export declare type AnyContract = damlTypes.Interface<'#splice-api-token-metadata-v1:Splice.Api.Token.MetadataV1:AnyContract'> & AnyContractView;
export declare interface AnyContractInterface {
  Archive: damlTypes.Choice<AnyContract, pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.InterfaceCompanion<AnyContract, undefined>>;
}
export declare const AnyContract:
  damlTypes.InterfaceCompanion<AnyContract, undefined, '#splice-api-token-metadata-v1:Splice.Api.Token.MetadataV1:AnyContract'> &
  damlTypes.FromTemplate<AnyContract, unknown> &
  AnyContractInterface;


export declare type ChoiceExecutionMetadata = {
  meta: Metadata;
};

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


export declare type ExtraArgs = {
  context: ChoiceContext;
  meta: Metadata;
};

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


export declare type Metadata = {
  values: { [key: string]: string };
};

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


export declare type ChoiceContext = {
  values: { [key: string]: AnyValue };
};

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


export declare type AnyContractView = {
};

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


export declare type AnyValue =
  |  { tag: 'AV_Text'; value: string }
  |  { tag: 'AV_Int'; value: damlTypes.Int }
  |  { tag: 'AV_Decimal'; value: damlTypes.Numeric }
  |  { tag: 'AV_Bool'; value: boolean }
  |  { tag: 'AV_Date'; value: damlTypes.Date }
  |  { tag: 'AV_Time'; value: damlTypes.Time }
  |  { tag: 'AV_RelTime'; value: pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946.DA.Time.Types.RelTime }
  |  { tag: 'AV_Party'; value: damlTypes.Party }
  |  { tag: 'AV_ContractId'; value: damlTypes.ContractId<AnyContract> }
  |  { tag: 'AV_List'; value: AnyValue[] }
  |  { tag: 'AV_Map'; value: { [key: string]: AnyValue } }
;

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

