/**
 * # Customer User Service
 *
 * User profile and account management for B2B customers.
 *
 * ## Features
 * - User registration and activation
 * - Profile management
 * - Address book access
 * - Organisation membership
 * - Multi-account management
 *
 * @module services/customer-user
 * @since 2.17.0
 */
import { BaseService } from "../base.service";
import type { RequestContext } from "../../client/transport";
import type { CreateCustomerUserParams, UpdateCustomerUserParams, ActivateCustomerUserParams, GetCustomerUserAddressesParams, SendActivationRequestParams, UpdateSpecificCustomerUserParams, RemoveAccountsFromUserParams, AddUserToAccountsParams, GetAuthenticatedUserResponse, CreateCustomerUserResponse, UpdateCustomerUserResponse, GetCustomerUserAddressesResponse, GetCustomerUserOrganisationsResponse } from "./types";
/**
 * Service for customer user management.
 *
 * Handles individual user operations:
 * - Profile creation and updates
 * - Account activation
 * - Address management
 * - Multi-account access
 *
 * @example
 * ```typescript
 * import { createDjustClient } from '@djust-b2b/djust-front-sdk';
 *
 * const client = createDjustClient({ baseUrl, clientId, apiKey });
 *
 * // Get current user
 * const user = await client.customerUser.getAuthenticatedUser();
 * console.log(`Hello, ${user.firstName}!`);
 *
 * // Update profile
 * await client.customerUser.updateCustomerUser({
 *   civility: 'Mr',
 *   firstName: 'John',
 *   lastName: 'Doe',
 *   phone: '+1-555-123-4567',
 * });
 * ```
 */
export declare class CustomerUserService extends BaseService {
    readonly serviceName = "customer-user";
    /**
     * Get the currently authenticated user's profile.
     *
     * Returns full user details including permissions and organisations.
     *
     * **Endpoint**: `GET /v1/shop/customer-users/authenticated-user [USR-100]`
     *
     * @example
     * ```typescript
     * const user = await client.customerUser.getAuthenticatedUser();
     *
     * console.log(`${user.firstName} ${user.lastName}`);
     * console.log(`Email: ${user.email}`);
     * console.log(`Groups: ${user.groups.join(', ')}`);
     * ```
     *
     * @param context - Optional SSR request context
     * @returns Authenticated user profile
     */
    getAuthenticatedUser(context?: RequestContext): Promise<GetAuthenticatedUserResponse>;
    /**
     * Create a new customer user (registration).
     *
     * Creates a user account with the specified details. An activation
     * email will be sent if activationUrl is provided.
     *
     * **Endpoint**: `POST /v1/shop/customer-users [USR-101]`
     *
     * | Parameter          | Type     | Required | Description              |
     * |--------------------|----------|----------|--------------------------|
     * | `civility`         | `string` | Yes      | Mr, Mrs, Ms, etc.        |
     * | `firstName`        | `string` | Yes      | First name               |
     * | `lastName`         | `string` | Yes      | Last name                |
     * | `email`            | `string` | Yes      | Email address            |
     * | `password`         | `string` | Yes      | Password                 |
     * | `groups`           | `array`  | Yes      | User groups/roles        |
     * | `activationUrl`    | `string` | No       | URL for activation email |
     * | `phone`            | `string` | No       | Phone number             |
     * | `externalId`       | `string` | No       | External system ID       |
     * | `organisations`    | `array`  | No       | Organisation assignments |
     *
     * @example
     * ```typescript
     * const user = await client.customerUser.createCustomerUser({
     *   civility: 'Mr',
     *   firstName: 'John',
     *   lastName: 'Doe',
     *   email: 'john.doe@company.com',
     *   password: 'SecurePass123!',
     *   groups: ['BUYER'],
     *   activationUrl: 'https://myapp.com/activate',
     * });
     *
     * console.log(`User created: ${user.id}`);
     * ```
     *
     * @param params - User registration data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If required parameters are missing
     * @returns Created user details
     */
    createCustomerUser(params: CreateCustomerUserParams, context?: RequestContext): Promise<CreateCustomerUserResponse>;
    /**
     * Update the current user's profile.
     *
     * **Endpoint**: `PUT /v1/shop/customer-users [USR-102]`
     *
     * | Parameter          | Type     | Required | Description              |
     * |--------------------|----------|----------|--------------------------|
     * | `civility`         | `string` | Yes      | Mr, Mrs, Ms, etc.        |
     * | `firstName`        | `string` | Yes      | First name               |
     * | `lastName`         | `string` | Yes      | Last name                |
     * | `phone`            | `string` | No       | Phone number             |
     * | `customFieldValues`| `object` | No       | Custom field updates     |
     *
     * @example
     * ```typescript
     * await client.customerUser.updateCustomerUser({
     *   civility: 'Mr',
     *   firstName: 'John',
     *   lastName: 'Smith',
     *   phone: '+1-555-987-6543',
     * });
     * ```
     *
     * @param params - Profile update data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If required parameters are missing
     * @returns Updated user profile
     */
    updateCustomerUser(params: UpdateCustomerUserParams, context?: RequestContext): Promise<UpdateCustomerUserResponse>;
    /**
     * Activate a user account with activation token.
     *
     * Completes the registration process after email verification.
     *
     * **Endpoint**: `POST /v1/shop/customer-users/activate [USR-103]`
     *
     * | Parameter | Type     | Required | Description              |
     * |-----------|----------|----------|--------------------------|
     * | `token`   | `string` | Yes      | Activation token from email |
     *
     * @example
     * ```typescript
     * // Token from URL: /activate?token=abc123
     * await client.customerUser.activateCustomerUser({
     *   token: 'abc123',
     * });
     *
     * console.log('Account activated!');
     * ```
     *
     * @param params - Activation token
     * @param context - Optional SSR request context
     * @throws {ValidationError} If token is missing
     * @throws {SDKError} If token is invalid or expired
     */
    activateCustomerUser(params: ActivateCustomerUserParams, context?: RequestContext): Promise<void>;
    /**
     * Get addresses accessible to the current user.
     *
     * **Endpoint**: `GET /v1/shop/customer-users/addresses [USR-104]`
     *
     * @example
     * ```typescript
     * const addresses = await client.customerUser.getCustomerUserAddresses();
     *
     * addresses.forEach(addr => {
     *   console.log(`${addr.label}: ${addr.city}, ${addr.country}`);
     * });
     * ```
     *
     * @param params - Optional query parameters
     * @param context - Optional SSR request context
     * @returns List of accessible addresses
     */
    getCustomerUserAddresses(params?: GetCustomerUserAddressesParams, context?: RequestContext): Promise<GetCustomerUserAddressesResponse>;
    /**
     * Get organisations the user belongs to.
     *
     * **Endpoint**: `GET /v1/shop/customer-users/organisations [USR-105]`
     *
     * @example
     * ```typescript
     * const organisations = await client.customerUser.getCustomerUserOrganisations();
     *
     * organisations.forEach(org => {
     *   console.log(`${org.name} (${org.externalId})`);
     * });
     * ```
     *
     * @param context - Optional SSR request context
     * @returns List of user's organisations
     */
    getCustomerUserOrganisations(context?: RequestContext): Promise<GetCustomerUserOrganisationsResponse>;
    /**
     * Resend activation email to a user.
     *
     * **Endpoint**: `POST /v1/shop/customer-users/resend-activation [USR-106]`
     *
     * | Parameter     | Type     | Required | Description              |
     * |---------------|----------|----------|--------------------------|
     * | `token`       | `string` | Yes      | User's registration token|
     * | `redirectUrl` | `string` | No       | Custom activation URL    |
     *
     * @param params - Resend request data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If token is missing
     */
    sendCustomerUserActivationRequest(params: SendActivationRequestParams, context?: RequestContext): Promise<void>;
    /**
     * Update another user's profile (admin function).
     *
     * **Endpoint**: `PUT /v1/shop/customer-users/{userId} [USR-107]`
     *
     * | Parameter        | Type     | Required | Description              |
     * |------------------|----------|----------|--------------------------|
     * | `userToUpdateId` | `string` | Yes      | User ID to update        |
     * | `civility`       | `string` | Yes      | Mr, Mrs, Ms, etc.        |
     * | `firstName`      | `string` | Yes      | First name               |
     * | `lastName`       | `string` | Yes      | Last name                |
     * | `idType`         | `string` | No       | ID type (id, externalId) |
     * | `groups`         | `array`  | No       | Updated groups/roles     |
     *
     * @param params - User update data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If required parameters are missing
     * @throws {AuthError} If user lacks permission
     */
    updateSpecificCustomerUser(params: UpdateSpecificCustomerUserParams, context?: RequestContext): Promise<void>;
    /**
     * Remove a user from customer accounts.
     *
     * **Endpoint**: `DELETE /v1/shop/customer-users/{userId}/accounts [USR-108]`
     *
     * | Parameter        | Type     | Required | Description              |
     * |------------------|----------|----------|--------------------------|
     * | `userToUpdateId` | `string` | Yes      | User ID                  |
     * | `accountIds`     | `array`  | Yes      | Account IDs to remove    |
     * | `idType`         | `string` | No       | ID type                  |
     *
     * @param params - Removal data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If required parameters are missing
     */
    removeAccountsFromCustomerUser(params: RemoveAccountsFromUserParams, context?: RequestContext): Promise<void>;
    /**
     * Add a user to customer accounts.
     *
     * **Endpoint**: `PATCH /v1/shop/customer-users/{userId}/accounts [USR-109]`
     *
     * | Parameter        | Type     | Required | Description              |
     * |------------------|----------|----------|--------------------------|
     * | `userToUpdateId` | `string` | Yes      | User ID                  |
     * | `accountIds`     | `array`  | Yes      | Account IDs to add       |
     * | `idType`         | `string` | No       | ID type                  |
     *
     * @example
     * ```typescript
     * await client.customerUser.addCustomerUserToAccounts({
     *   userToUpdateId: 'user-123',
     *   accountIds: ['account-456', 'account-789'],
     * });
     * ```
     *
     * @param params - Addition data
     * @param context - Optional SSR request context
     * @throws {ValidationError} If required parameters are missing
     */
    addCustomerUserToAccounts(params: AddUserToAccountsParams, context?: RequestContext): Promise<void>;
}
//# sourceMappingURL=customer-user.service.d.ts.map