import getSpreedlyTestTokens from './getSpreedlyTestTokens';
export { getSpreedlyTestTokens };
/**
 * Trust My Travel SDK Class
 */
export default class TrustMyTravel {
    private username;
    private password;
    private client;
    /**
     * Trust My Travel SDK for taking payments and making refunds
     *
     * Creates an XMLRPC client for the Trust My Travel API
     */
    constructor({ username, password, live }: Config);
    private methodCall;
    takePayment(data: PaymentParameters): Promise<PaymentResponse>;
    refund(data: RefundParameters): Promise<RefundResponse>;
    testConnection(): Promise<string>;
}
export interface Config {
    /**
     * Trust My Travel username
     */
    username: string;
    /**
     * Trust My Travel password
     */
    password: string;
    /**
     * Use live API setting
     *
     * If false, staging.trustmytravel.com will be used instead
     */
    live?: boolean;
}
export interface PaymentParameters {
    firstname: string;
    surname: string;
    email: string;
    /**
     * Address line 1
     *
     * Equivalenty premise (building number, building name & sub-building name) & thoroughfare (street name)
     */
    address: string;
    /**
     * Address line 2
     *
     * Typically dependency thoroughfare (secondard part if there are 2 streets with the same name in the area) or empty
     */
    address2?: string;
    /**
     * City
     *
     * Locality (city)
     */
    city?: string;
    /**
     * State / County
     */
    state?: string;
    /**
     * Country ISO
     *
     * [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) 2-digit format
     */
    country: string;
    /**
     * Zip/postal code
     */
    postcode: string;
    /**
     * Reference
     *
     * E.g. payment or transaction ID
     */
    reference: string;
    /**
     * Trip end date
     *
     * Fromat YYYY-MM-DD
     */
    date_end: string;
    /**
     * Currency ISO
     *
     * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-digit format
     */
    currency: Currency;
    /**
     * Total amount in cents/pence
     *
     * Note this is not zero-decimal - instead it assumes 2 decimal places for every currency (e.g. `100.00` for £100)
     */
    total: number;
    /**
     * Line item
     *
     * Given as a string - e.g. booking ID
     */
    line_items?: string;
    /**
     * Spreedly payment token
     */
    payment_method_token: string;
    /**
     * Affiliate payments
     */
    affiliate_payments?: [AffiliatePaymentParameters];
}
export interface AffiliatePaymentParameters {
    /**
     * Trust My Travel Affiliate PID
     */
    affiliate_id: string;
    /**
     * Currency ISO
     *
     * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-digit format
     */
    currency: Currency;
    /**
     * Total amount in cents/pence
     *
     * Note this is not zero-decimal - instead it assumes 2 decimal places for every currency (e.g. `100.00` for £100)
     */
    total: number;
}
export declare enum Currency {
    GBP = "GBP",
    USD = "USD",
    EUR = "EUR"
}
export interface RefundParameters {
    /**
     * Trust My Travel Payment ID
     */
    booking_id: number;
    /**
     * Currency ISO
     *
     * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-digit format
     */
    currency: Currency;
    /**
     * Total amount in cents/pence
     *
     * Note this is not zero-decimal - instead it assumes 2 decimal places for every currency (e.g. `100.00` for £100)
     */
    amount: number;
    /**
     * Affiliate refunds
     */
    affiliate_refunds?: [AffiliateRefundParameters];
}
export interface AffiliateRefundParameters {
    /**
     * Trust My Travel Affiliate Payment ID
     */
    booking_id: number;
    /**
     * Currency ISO
     *
     * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-digit format
     */
    currency: Currency;
    /**
     * Total amount in cents/pence
     *
     * Note this is not zero-decimal - instead it assumes 2 decimal places for every currency (e.g. `100.00` for £100)
     */
    amount: number;
}
export interface PaymentResponse {
    /**
     * Payment success status
     */
    success: boolean;
    /**
     * Trust My Travel payment ID
     */
    booking_id: number;
    /**
     * Response
     *
     * Can return e.g. "Suceeded" if successful, or "Declined - Do Not Honour" as a failure reason
     */
    response: string;
    investigate: boolean;
    /**
     * Card last four digits
     */
    last_four_digits: string;
    /**
     * Card type
     *
     * E.g. "visa"
     */
    card_type: string;
    /**
     * Card expiry
     *
     * Of format MM-YYYY
     */
    card_expiry: string;
    /**
     * Cardholder full name
     */
    cardholder: string;
    /**
     * Affiliate payments
     */
    affiliate_payments?: [PaymentAffiliateResponse];
}
export interface PaymentAffiliateResponse {
    /**
     * Trust My Travel payment ID
     *
     * Note: This this appears to be the main affiliate payment ID, and is different to the booking_id from the main
     * payment
     */
    booking_id: number;
    /**
     * Affiliate ID
     */
    affiliate_id: string;
    /**
     * Trust My Travel secondary ID
     *
     * __Do Not Use!__
     *
     * @deprecated Marked as depreciated to also flag not to use this property
     *
     * It is not clear as to what this is for - however it does not appear to be unique
     */
    tmt_id: number;
    /**
     * Total amount in cents/pence
     *
     * Note this is not zero-decimal - instead it assumes 2 decimal places for every currency (e.g. `100.00` for £100)
     */
    total: number;
    /**
     * Currency ISO
     *
     * [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-digit format
     */
    currency: Currency;
}
export interface RefundResponse {
    /**
     * Payment success status
     */
    success: boolean;
    /**
     * Response
     *
     * Can return e.g. "Suceeded" if successful or an error descriptor
     */
    response: string;
    /**
     * Trust My Travel refund ID
     */
    refund_id: number;
}
