export interface IPaymentModel {} export interface ILicensePaymentModel extends IPaymentModel { licenseCode: string; } export interface IPaymentMethod { makePayment(paymentModel: IPaymentModel): Promise; } export interface ILicensePaymentMethod { makePayment(paymentModel: ILicensePaymentModel): Promise; } export interface IPaymentContext { paymentMethod: IPaymentMethod; makePayment(paymentModel: PaymentModel): Promise; }