import type { SearchParams } from "../request";
import { RequestPayer } from "./payee";
export declare type PaymentActorType = "api-payee" | "mh-user-account";
export declare type PayerType = "api-payer" | "mh-user-account";
export declare type PaymentContext = "Other" | "PartyToParty" | "BillPayment";
export interface AuthRequestPostPayment {
    amount: number;
    payeeId: string;
    payeeRef: string;
    payeeType?: PaymentActorType;
    payerId?: string;
    payerRef: string;
    payerType?: PayerType;
    payer?: RequestPayer;
    payerName?: string;
    payerEmail?: string;
    readRefundAccount?: boolean;
    context?: PaymentContext;
}
declare type PeriodType = "Day" | "Week" | "Fortnight" | "Month" | "Half-year" | "Year";
declare type PeriodAlignment = "Consent" | "Calendar";
interface PeriodicLimit {
    amount?: number;
    currency?: string;
    periodType?: PeriodType;
    periodAlignment?: PeriodAlignment;
}
declare type RecurringPaymentType = "Sweeping" | "Other";
export interface AuthRequestPostRecurringPayment {
    payeeId?: string;
    payeeType?: PaymentActorType;
    payerId?: string;
    payerType?: PaymentActorType;
    context?: PaymentContext;
    reference?: string;
    validFromDate?: string;
    validToDate?: string;
    maximumIndividualAmount?: number;
    currency?: string;
    periodicLimits?: PeriodicLimit[];
    type: RecurringPaymentType[];
}
export interface AuthRequestPostReversePayment {
    paymentId?: string;
    amount?: number;
}
export interface PaymentSearchParams extends SearchParams {
    userId?: string;
    payeeId?: string;
    startDate?: string;
    endDate?: string;
}
declare type PaymentStatus = "inProgress" | "pending" | "completed" | "cancelled" | "rejected" | "abandoned" | "error:paymentSubmission" | "error:redirect" | "error:tokenGrant";
declare type ChargeBearer = "BorneByCreditor" | "BorneByDebtor" | "FollowingServiceLevel" | "Shared";
declare type ChargeType = "CHAPSOut" | "BalanceTransferOut" | "MoneyTransferOut";
interface Charge {
    bearer?: ChargeBearer;
    type?: ChargeType;
    amount?: number;
    currency?: string;
}
export interface Payment {
    id: string;
    amount: number;
    payeeId: string;
    payeeRef: string;
    payeeType: PaymentActorType;
    payerId?: string;
    payerRef: string;
    payerType?: PaymentActorType;
    payerName?: string;
    payerEmail?: string;
    currency: string;
    isReversible: boolean;
    status: PaymentStatus;
    providerStatus?: string;
    paymentSubmissionId?: string;
    charges: Charge[];
    initiatedAt: string;
    finalisedAt?: string;
}
export interface PaymentsClaims {
    amount?: number;
    payeeId?: string;
    payeeRef?: string;
    payeeType?: PaymentActorType;
    payerId?: string;
    payerRef?: string;
    payerType?: PaymentActorType;
    payerName?: string;
    payerEmail?: string;
    readRefundAccoun?: boolean;
}
export interface RecurringPaymentSearchParams extends SearchParams {
    userId?: string;
}
export interface RecurringPayment {
    reference: string;
    validFromDate?: string;
    validToDate?: string;
    maximumIndividualAmount: number;
    currency: string;
    periodicLimits: PeriodicLimit[];
    type: RecurringPaymentType[];
}
declare type RecurringPaymentStatus = "Pending" | "Rejected" | "AcceptedSettlementInProcess" | "AcceptedSettlementCompleted" | "AcceptedWithoutPosting" | "AcceptedCreditSettlementCompleted";
export interface RecurringPaymentRequest {
    paymentSubmissionId: string;
    providerStatus: RecurringPaymentStatus;
    status: PaymentStatus;
    submittedAt: string;
    authRequestId: string;
    revokedAt?: string;
}
export interface FundsConfirmationRequest {
    amount: string;
    currency: string;
}
export interface FundsConfirmationResponse {
    fundsAvailable: boolean;
    fundsAvailableAt: string;
    amount: string;
    currency: string;
    recurringPaymentId: string;
}
export {};
//# sourceMappingURL=payment.d.ts.map