declare enum PlatformType {
    IN_FRAME = 0,
    NOT_IN_FRAME = 1
}

declare enum ProductType {
    REAL_OBJECT = 0,
    DOWNLOADABLE_VIRTUAL = 1,
    DEFAULT = 2
}

interface IBuyer {
    buyer_id_nr: string;
    platform_order_id?: string;
    product_name: string;
    product_type?: ProductType;
    buyer_name: string;
    buyer_surname: string;
    buyer_email: string;
    buyer_phone: string;
    buyer_account_age?: number;
}

interface IBillingAddress {
    billing_address: string;
    billing_city: string;
    billing_country: string;
    billing_postcode: string;
}
interface IShippingAddress {
    shipping_address: string;
    shipping_city: string;
    shipping_country: string;
    shipping_postcode: string;
}

interface ICallback {
    order_id: string;
    payment_id: string;
    installment: string;
}

declare enum CurrencyType {
    TL = 0,
    USD = 1,
    EUR = 2
}

declare class Shopier {
    private paymentUrl;
    private apiKey;
    private apiSecret;
    private buyer;
    private orderBilling;
    private orderShipping;
    private currency;
    private moduleVersion;
    constructor(apiKey: string, apiSecret: string);
    setBuyer(fields: IBuyer): this;
    setOrderBilling(fields: IBillingAddress): this;
    setOrderShipping(fields: IShippingAddress): this;
    private generateIForm;
    private recursiveHtmlStringGenerator;
    /**
     * @deprecated Use `generatePaymentHTML(amount: number)` instead
     */
    payment(amount: number): string;
    generatePaymentHTML(amount: number): string;
    setCurrency(currency: keyof typeof CurrencyType): this;
    setCurrency(currency: CurrencyType): this;
    private lang;
    callback(body: any): ICallback | false;
}

export { PlatformType, ProductType, Shopier };
