// Generated from CantonPayments/PaymentStream/PartyMigrationProposal.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 CantonPayments_PaymentStream_ActivePaymentStream from '../../../CantonPayments/PaymentStream/ActivePaymentStream/module';
import * as CantonPayments_PaymentStream_ProposedPaymentStream from '../../../CantonPayments/PaymentStream/ProposedPaymentStream/module';
import * as CantonPayments_PaymentStream_Types_PartyRole from '../../../CantonPayments/PaymentStream/Types/PartyRole/module';
import * as CantonPayments_PaymentStream_Types_PaymentContext from '../../../CantonPayments/PaymentStream/Types/PaymentContext/module';

export declare type PartyMigrationProposal_Archive = {
  actor: damlTypes.Party;
  description: damlTypes.Optional<string>;
};

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


export declare type PartyMigrationProposal_MigrateProposedPaymentStream = {
  actor: damlTypes.Party;
  proposedPaymentStreamCid: damlTypes.ContractId<CantonPayments_PaymentStream_ProposedPaymentStream.ProposedPaymentStream>;
};

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


export declare type PartyMigrationProposal_MigrateActivePaymentStream = {
  actor: damlTypes.Party;
  activePaymentStreamCid: damlTypes.ContractId<CantonPayments_PaymentStream_ActivePaymentStream.ActivePaymentStream>;
  changePartyPaymentContext: CantonPayments_PaymentStream_Types_PaymentContext.PaymentContext;
};

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


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

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


export declare type PartyMigrationProposal = {
  partyType: CantonPayments_PaymentStream_Types_PartyRole.PartyRole;
  oldParty: damlTypes.Party;
  newParty: damlTypes.Party;
  oldPartyApproved: boolean;
  newPartyApproved: boolean;
};

export declare interface PartyMigrationProposalInterface {
  PartyMigrationProposal_Approve: damlTypes.Choice<PartyMigrationProposal, PartyMigrationProposal_Approve, damlTypes.ContractId<PartyMigrationProposal>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<PartyMigrationProposal, undefined>>;
  PartyMigrationProposal_MigrateActivePaymentStream: damlTypes.Choice<PartyMigrationProposal, PartyMigrationProposal_MigrateActivePaymentStream, damlTypes.ContractId<CantonPayments_PaymentStream_ActivePaymentStream.ActivePaymentStream>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<PartyMigrationProposal, undefined>>;
  PartyMigrationProposal_MigrateProposedPaymentStream: damlTypes.Choice<PartyMigrationProposal, PartyMigrationProposal_MigrateProposedPaymentStream, damlTypes.ContractId<CantonPayments_PaymentStream_ProposedPaymentStream.ProposedPaymentStream>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<PartyMigrationProposal, undefined>>;
  PartyMigrationProposal_Archive: damlTypes.Choice<PartyMigrationProposal, PartyMigrationProposal_Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<PartyMigrationProposal, undefined>>;
  Archive: damlTypes.Choice<PartyMigrationProposal, pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<PartyMigrationProposal, undefined>>;
}
export declare const PartyMigrationProposal:
  damlTypes.Template<PartyMigrationProposal, undefined, '#CantonPayments:CantonPayments.PaymentStream.PartyMigrationProposal:PartyMigrationProposal'> &
  damlTypes.ToInterface<PartyMigrationProposal, never> &
  PartyMigrationProposalInterface;

export declare namespace PartyMigrationProposal {
}


