import * as hapi from "hapi";
import { IBillingInfo, IInvoice, IInvoiceItem, InvoiceModel, IWebhookEvent, PayPalRestApi } from "paypal-rest-api";
import { HapiIntacctInvoicing } from "./intacct";
export * from "./intacct";
export interface IInvoicingOptions {
    cron: {
        create?: {
            auto: boolean;
            latertext: string;
        };
        refund?: {
            auto: boolean;
            latertext: string;
        };
    };
    paymentaccounts?: {
        default: string;
        currencies?: {
            [key: string]: string;
        };
    };
    merchant: IBillingInfo;
    reminderDays?: number;
    startDate: string;
}
export declare const intacctInvoiceExtend: {
    PAYPALERROR: string;
    PAYPALINVOICEID: string;
    PAYPALINVOICESTATUS: string;
    PAYPALINVOICEURL: string;
    PAYPALINVOICING: string;
};
export declare class HapiPayPalIntacctInvoicing {
    static intacctKeys: string[];
    private _intacct;
    private _paypal;
    private _server;
    private _options;
    constructor();
    intacct: HapiIntacctInvoicing;
    paypal: PayPalRestApi;
    server: hapi.Server;
    options: IInvoicingOptions;
    register: hapi.PluginFunction<any>;
    webhookHandler(webhook: IWebhookEvent): Promise<void>;
    createPayment(invoice: IInvoice): Promise<void>;
    validateAccounts(): Promise<void>;
    validateKeys(): Promise<void>;
    refundInvoicesSync(): Promise<void>;
    refundInvoiceSync(invoice: any): Promise<void>;
    createInvoiceSync(): Promise<void>;
    syncIntacctToPayPal(invoice: any): Promise<any>;
    syncPayPalToIntacct(invoice: InvoiceModel): Promise<void>;
    toPaypalInvoice(intacctInvoice: any): any;
    toPayPalLineItems(arrInvoiceItems: any): IInvoiceItem[];
    init(): Promise<void>;
    updateInacctInvoiceWithPayPalModel(intacctInvoice: any, paypalInvoice: InvoiceModel): any;
}
