// Generated from CantonPayments/Airdrop/Airdrop.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 pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1 from '../../..';
import * as pkg7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda from '../../../Splice/Api/FeaturedAppRightV1';
import * as pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 from '../../../DA/Internal/Template';

export declare type Airdrop_Execute = {
  transferSpecs: RecipientTransferSpec[];
  initialAmuletInputs: damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.Amulet.Amulet>[];
  openMiningRoundCid: damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.Round.OpenMiningRound>;
  amountPerTransfer: damlTypes.Numeric;
  amuletRules: damlTypes.Optional<damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.AmuletRules.AmuletRules>>;
};

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


export declare type Airdrop_Join = {
  actor: damlTypes.Party;
};

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


export declare type Airdrop_AddObservers = {
  actor: damlTypes.Party;
  newObservers: damlTypes.Party[];
};

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


export declare type Airdrop_Archive = {
};

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


export declare type Airdrop_UpdateConfig = {
  newConfig: AirdropConfig;
};

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


export declare type Airdrop = {
  config: AirdropConfig;
  joinedParties: damlTypes.Party[];
  observers: damlTypes.Party[];
};

export declare interface AirdropInterface {
  Airdrop_UpdateConfig: damlTypes.Choice<Airdrop, Airdrop_UpdateConfig, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
  Airdrop_Archive: damlTypes.Choice<Airdrop, Airdrop_Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
  Airdrop_AddObservers: damlTypes.Choice<Airdrop, Airdrop_AddObservers, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
  Airdrop_Join: damlTypes.Choice<Airdrop, Airdrop_Join, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
  Airdrop_Execute: damlTypes.Choice<Airdrop, Airdrop_Execute, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
  Archive: damlTypes.Choice<Airdrop, pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<Airdrop, undefined>>;
}
export declare const Airdrop:
  damlTypes.Template<Airdrop, undefined, '#CantonPayments:CantonPayments.Airdrop.Airdrop:Airdrop'> &
  damlTypes.ToInterface<Airdrop, never> &
  AirdropInterface;

export declare namespace Airdrop {
}



export declare type AirdropConfig = {
  sender: damlTypes.Party;
  featuredAppRight: damlTypes.Optional<damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.Amulet.FeaturedAppRight>>;
  amuletRulesCid: damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.AmuletRules.AmuletRules>;
  dso: damlTypes.Party;
};

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


export declare type RecipientTransferSpec = {
  recipient: damlTypes.Party;
  numberOfTransfers: damlTypes.Int;
  appRewardBeneficiaries: pkg7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda.Splice.Api.FeaturedAppRightV1.AppRewardBeneficiary[];
};

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

