import { Http } from '@spree/core-api-v2-sdk';
import type { IQuery, IToken, NoContentResult } from '@spree/core-api-v2-sdk';
import type { IAccountResult, IAccountConfirmationResult, AccountAddressesResult, AccountAddressResult, AccountAddressParams, ForgotPasswordParams, ResetPasswordParams, AccountInfoOptions, CreditCardsListOptions, DefaultCreditCardOptions, RemoveCreditCardOptions, CompletedOrdersListOptions, CompletedOrderOptions, CreateOptions, ConfirmOptions, ForgotPasswordOptions, ResetPasswordOptions, UpdateOptions, AddressesListOptions, ShowAddressOptions, CreateAddressOptions, RemoveAddressOptions, UpdateAddressOptions } from '../interfaces/Account';
import type { ICreditCardResult, ICreditCardsResult } from '../interfaces/CreditCard';
import type { IOrderResult, IOrdersResult } from '../interfaces/Order';
export default class Account extends Http {
    /**
     * Creates new account and returns its attributes. See [api docs](https://api.spreecommerce.org/docs/api-v2/534a12ece987f-create-an-account).
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.create({
     *   user: {
     *     email: 'john@snow.org',
     *     password: 'spree123',
     *     password_confirmation: 'spree123'
     *   }
     * })
     * ```
     */
    create(options: CreateOptions): Promise<IAccountResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     * Creates new account and returns its attributes.
     */
    create(params: IQuery): Promise<IAccountResult>;
    /**
     * Confirms new account e-mail and returns account registration status. See [reference](https://github.com/spree/spree_auth_devise/blob/db4ccf202f42cdb713931e9915b213ab9c9b2062/config/routes.rb).
     *
     * **Success response schema:**
     * ```ts
     * {
     *   data: {
     *     state: string
     *   }
     * }
     * ```
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.confirm({ confirmation_token: '2xssfC9Hzf8DJXyRZGmB' })
     * ```
     */
    confirm(option: ConfirmOptions): Promise<IAccountConfirmationResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    confirm(confirmationToken: string): Promise<IAccountConfirmationResult>;
    /**
     * Sends an account recovery link to the provided email address. The link allows resetting the password for the account.
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.forgotPassword({
     *   user: {
     *     email: 'spree@example.com'
     *   }
     * })
     * ```
     */
    forgotPassword(options: ForgotPasswordOptions): Promise<NoContentResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    forgotPassword(params: ForgotPasswordParams): Promise<NoContentResult>;
    /**
     * Changes the password associated with the account using an account recovery token.
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.resetPassword({
     *   reset_password_token: '7381273269536713689562374856',
     *   user: {
     *     password: '123!@#asdASD',
     *     password_confirmation: '123!@#asdASD'
     *   }
     * })
     * ```
     */
    resetPassword(options: ResetPasswordOptions): Promise<NoContentResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    resetPassword(resetPasswordToken: string, params: ResetPasswordParams): Promise<NoContentResult>;
    /**
     * Updates account and returns its attributes. See [api docs](https://api.spreecommerce.org/docs/api-v2/9f8e112bbb91f-update-an-account).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.update({
     *   bearer_token: '7381273269536713689562374856',
     *   user: {
     *     email: 'john@snow.org',
     *     password: 'new_spree123',
     *     password_confirmation: 'new_spree123'
     *   }
     * })
     * ```
     */
    update(options: UpdateOptions): Promise<IAccountResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    update(token: IToken, params: IQuery): Promise<IAccountResult>;
    /**
     * Returns current user information. See [api docs](https://api.spreecommerce.org/docs/api-v2/a531029531471-retrieve-an-account).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.accountInfo({ bearer_token: '7381273269536713689562374856' })
     * ```
     */
    accountInfo(options: AccountInfoOptions): Promise<IAccountResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    accountInfo(token: IToken, params?: IQuery): Promise<IAccountResult>;
    /**
     * Returns a list of Credit Cards for the signed in User. See [api docs](https://api.spreecommerce.org/docs/api-v2/eae76f03a90db-list-all-credit-cards).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.creditCardsList({ bearer_token: '7381273269536713689562374856' })
     * ```
     */
    creditCardsList(options: CreditCardsListOptions): Promise<ICreditCardsResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    creditCardsList(token: IToken, params?: IQuery): Promise<ICreditCardsResult>;
    /**
     * Return the User's default Credit Card. See [api docs](https://api.spreecommerce.org/docs/api-v2/1054d9230daf4-retrieve-the-default-credit-card).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.defaultCreditCard({ bearer_token: '7381273269536713689562374856' })
     * ```
     */
    defaultCreditCard(options: DefaultCreditCardOptions): Promise<ICreditCardResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    defaultCreditCard(token: IToken, params?: IQuery): Promise<ICreditCardResult>;
    /**
     * Remove a User's Credit Card. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MTc1NjU3NDM-remove-a-credit-card).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.removeCreditCard({
     *   bearer_token: '7381273269536713689562374856',
     *   id: '14'
     * })
     * ```
     */
    removeCreditCard(options: RemoveCreditCardOptions): Promise<NoContentResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    removeCreditCard(token: IToken, id: string, params?: IQuery): Promise<NoContentResult>;
    /**
     * Returns Orders placed by the User. Only completed ones. See [api docs](https://api.spreecommerce.org/docs/api-v2/94d319dfe8909-list-all-orders).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.completedOrdersList({
     *   bearer_token: '7381273269536713689562374856'
     * })
     * ```
     */
    completedOrdersList(options: CompletedOrdersListOptions): Promise<IOrdersResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    completedOrdersList(token: IToken, params?: IQuery): Promise<IOrdersResult>;
    /**
     * Return the User's completed Order. See [api docs](https://api.spreecommerce.org/docs/api-v2/ab4c5da10fbba-retrieve-an-order).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.completedOrder({
     *   bearer_token: '7381273269536713689562374856',
     *   order_number: 'R653163382'
     * })
     * ```
     */
    completedOrder(options: CompletedOrderOptions): Promise<IOrderResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    completedOrder(token: IToken, orderNumber: string, params?: IQuery): Promise<IOrderResult>;
    /**
     * Returns a list of Addresses for the signed in User. See [api docs](https://api.spreecommerce.org/docs/api-v2/c8ebb212f75bf-list-all-addresses).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.addressesList({
     *   bearer_token: '7381273269536713689562374856'
     * })
     * ```
     */
    addressesList(options: AddressesListOptions): Promise<AccountAddressesResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    addressesList(token: IToken): Promise<AccountAddressesResult>;
    /**
     * Returns a single address for the signed in User.
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.showAddress({
     *   bearer_token: '7381273269536713689562374856',
     *   id: '1'
     * })
     * ```
     */
    showAddress(options: ShowAddressOptions): Promise<AccountAddressResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    showAddress(token: IToken, addressId: string, params?: IQuery): Promise<AccountAddressResult>;
    /**
     * Create a new Address for the signed in User. See [api docs](https://api.spreecommerce.org/docs/api-v2/daacab4666dfc-create-an-address).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Options schema:**
     * ```ts
     * interface options {
     *   address: {
     *     firstname: string
     *     lastname: string
     *     address1: string
     *     address2?: string
     *     city: string
     *     phone?: string
     *     zipcode: string
     *     state_name: string // State Abbreviations
     *     country_iso: string // Country ISO (2-chars) or ISO3 (3-chars)
     *     company?: string
     *   }
     * }
     * ```
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.createAddress({
     *   bearer_token: '7381273269536713689562374856',
     *   address: {
     *     firstname: 'John',
     *     lastname: 'Snow',
     *     address1: '7735 Old Georgetown Road',
     *     address2: '2nd Floor',
     *     city: 'Bethesda',
     *     phone: '3014445002',
     *     zipcode: '20814',
     *     state_name: 'MD',
     *     country_iso: 'US',
     *     company: 'Spark'
     *   }
     * })
     * ```
     */
    createAddress(options: CreateAddressOptions): Promise<AccountAddressResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    createAddress(token: IToken, params: AccountAddressParams): Promise<AccountAddressResult>;
    /**
     * Removes selected Address for the signed in User. See [api docs](https://api.spreecommerce.org/docs/api-v2/b3A6MTAwNjA3Njg-remove-an-address).
     *
     * **Required token:** [Bearer token](../pages/tokens.html#bearer-token)
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.removeAddress({
     *   bearer_token: '7381273269536713689562374856',
     *   id: '1'
     * })
     * ```
     */
    removeAddress(options: RemoveAddressOptions): Promise<NoContentResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    removeAddress(token: IToken, id: string, params?: IQuery): Promise<NoContentResult>;
    /**
     * Update selected Address for the signed in User. See [api docs](https://api.spreecommerce.org/docs/api-v2/fbae19a10190d-update-an-address).
     *
     * Required token: Bearer token
     *
     * **Options schema:**
     * ```ts
     * interface options {
     *   id: string
     *   address: {
     *     firstname: string
     *     lastname: string
     *     address1: string
     *     address2?: string
     *     city: string
     *     phone?: string
     *     zipcode: string
     *     state_name: string // State Abbreviations
     *     country_iso: string // Country ISO (2-chars) or ISO3 (3-chars)
     *     company?: string
     *   }
     * }
     * ```
     *
     * **Success response schema:** [Success schema](../pages/response-schema.html#success-schema)
     *
     * **Failure response schema:** [Error schema](../pages/response-schema.html#error-schema)
     *
     * **Example:**
     * ```ts
     * const response = await client.account.updateAddress({
     *   bearer_token: '7381273269536713689562374856',
     *   id: '1',
     *   address: {
     *     firstname: 'John',
     *     lastname: 'Snow',
     *     address1: '7735 Old Georgetown Road',
     *     address2: '2nd Floor',
     *     city: 'Bethesda',
     *     phone: '3014445002',
     *     zipcode: '20814',
     *     state_name: 'MD',
     *     country_iso: 'US',
     *     company: 'Spark'
     *   }
     * })
     * ```
     */
    updateAddress(options: UpdateAddressOptions): Promise<AccountAddressResult>;
    /**
     * @hidden
     * @deprecated Use the combined options signature instead.
     */
    updateAddress(token: IToken, addressId: string, params: AccountAddressParams): Promise<AccountAddressResult>;
}
