// Generated from CantonPayments/PaymentStream/ProposedPaymentStream.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';
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
import * as damlLedger from '@daml/ledger';

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

import * as CantonPayments_PaymentStream_ActivePaymentStream from '../../../CantonPayments/PaymentStream/ActivePaymentStream/module';
import * as CantonPayments_PaymentStream_Types_Approvals from '../../../CantonPayments/PaymentStream/Types/Approvals/module';
import * as CantonPayments_PaymentStream_Types_LockFundsInput from '../../../CantonPayments/PaymentStream/Types/LockFundsInput/module';
import * as CantonPayments_PaymentStream_Types_PartyRole from '../../../CantonPayments/PaymentStream/Types/PartyRole/module';
import * as CantonPayments_PaymentStream_Types_PaymentStreamProposal from '../../../CantonPayments/PaymentStream/Types/PaymentStreamProposal/module';
import * as CantonPayments_PaymentStream_Types_PaymentStreamProposalChanges from '../../../CantonPayments/PaymentStream/Types/PaymentStreamProposalChanges/module';
import * as CantonPayments_PaymentStream_Types_ProcessorContext from '../../../CantonPayments/PaymentStream/Types/ProcessorContext/module';

export declare type ProposedPaymentStream_ChangeParty = {
  partyType: CantonPayments_PaymentStream_Types_PartyRole.PartyRole;
  oldParty: damlTypes.Party;
  newParty: damlTypes.Party;
};

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


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

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


export declare type ProposedPaymentStream_EditPaymentStreamProposal = {
  actor: damlTypes.Party;
  changes: CantonPayments_PaymentStream_Types_PaymentStreamProposalChanges.PaymentStreamProposalChanges;
  description: damlTypes.Optional<string>;
};

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


export declare type ProposedPaymentStream_StartPaymentStream = {
  lockFundsInput: CantonPayments_PaymentStream_Types_LockFundsInput.LockFundsInput;
};

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


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

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


export declare type ProposedPaymentStream = {
  paymentStreamProposal: CantonPayments_PaymentStream_Types_PaymentStreamProposal.PaymentStreamProposal;
  processorContext: CantonPayments_PaymentStream_Types_ProcessorContext.ProcessorContext;
  approvals: CantonPayments_PaymentStream_Types_Approvals.Approvals;
};

export declare interface ProposedPaymentStreamInterface {
  Archive: damlTypes.Choice<ProposedPaymentStream, pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
  ProposedPaymentStream_ChangeParty: damlTypes.Choice<ProposedPaymentStream, ProposedPaymentStream_ChangeParty, damlTypes.ContractId<ProposedPaymentStream>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
  ProposedPaymentStream_Approve: damlTypes.Choice<ProposedPaymentStream, ProposedPaymentStream_Approve, damlTypes.ContractId<ProposedPaymentStream>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
  ProposedPaymentStream_StartPaymentStream: damlTypes.Choice<ProposedPaymentStream, ProposedPaymentStream_StartPaymentStream, pkg5aee9b21b8e9a4c4975b5f4c4198e6e6e8469df49e2010820e792f393db870f4.DA.Types.Tuple2<damlTypes.ContractId<CantonPayments_PaymentStream_ActivePaymentStream.ActivePaymentStream>, damlTypes.Optional<damlTypes.ContractId<pkg3ca1343ab26b453d38c8adb70dca5f1ead8440c42b59b68f070786955cbf9ec1.Splice.Amulet.Amulet>>>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
  ProposedPaymentStream_EditPaymentStreamProposal: damlTypes.Choice<ProposedPaymentStream, ProposedPaymentStream_EditPaymentStreamProposal, damlTypes.ContractId<ProposedPaymentStream>, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
  ProposedPaymentStream_Withdraw: damlTypes.Choice<ProposedPaymentStream, ProposedPaymentStream_Withdraw, {}, undefined> & damlTypes.ChoiceFrom<damlTypes.Template<ProposedPaymentStream, undefined>>;
}
export declare const ProposedPaymentStream:
  damlTypes.Template<ProposedPaymentStream, undefined, '#CantonPayments:CantonPayments.PaymentStream.ProposedPaymentStream:ProposedPaymentStream'> &
  damlTypes.ToInterface<ProposedPaymentStream, never> &
  ProposedPaymentStreamInterface;

export declare namespace ProposedPaymentStream {
  export type CreateEvent = damlLedger.CreateEvent<ProposedPaymentStream, undefined, typeof ProposedPaymentStream.templateId>
  export type ArchiveEvent = damlLedger.ArchiveEvent<ProposedPaymentStream, typeof ProposedPaymentStream.templateId>
  export type Event = damlLedger.Event<ProposedPaymentStream, undefined, typeof ProposedPaymentStream.templateId>
  export type QueryResult = damlLedger.QueryResult<ProposedPaymentStream, undefined, typeof ProposedPaymentStream.templateId>
}


