/**
 * Wallee AG TypeScript SDK
 *
 * This library allows to interact with the Wallee AG payment service.
 *
 * Copyright owner: Wallee AG
 * Website: https://en.wallee.com
 * Developer email: ecosystem-team@wallee.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import * as runtime from '../runtime';
import type { Customer, CustomerActive, CustomerCreate, CustomerEmailAddressListResponse, CustomerListResponse, CustomerSearchResponse, RestApiBulkOperationResult, SortingOrder } from '../models/index';
export interface DeleteCustomersBulkRequest {
    space: number;
    requestBody: Array<number>;
}
export interface DeleteCustomersIdRequest {
    id: number;
    space: number;
}
export interface GetCustomersRequest {
    space: number;
    after?: number;
    before?: number;
    expand?: Set<string>;
    limit?: number;
    order?: SortingOrder;
}
export interface GetCustomersIdRequest {
    id: number;
    space: number;
    expand?: Set<string>;
}
export interface GetCustomersIdEmailAddressesRequest {
    id: number;
    space: number;
    expand?: Set<string>;
}
export interface GetCustomersSearchRequest {
    space: number;
    expand?: Set<string>;
    limit?: number;
    offset?: number;
    order?: string;
    query?: string;
}
export interface PatchCustomersBulkRequest {
    space: number;
    customerActive: Array<CustomerActive>;
}
export interface PatchCustomersIdRequest {
    id: number;
    space: number;
    customerActive: CustomerActive;
    expand?: Set<string>;
}
export interface PostCustomersRequest {
    space: number;
    customerCreate: CustomerCreate;
    expand?: Set<string>;
}
export interface PostCustomersBulkRequest {
    space: number;
    customerCreate: Array<CustomerCreate>;
}
export interface PostCustomersIdMergeOtherRequest {
    id: number;
    other: number;
    space: number;
    expand?: Set<string>;
}
/**
 *
 */
export declare class CustomersService extends runtime.BaseAPI {
    constructor(configuration: runtime.Configuration);
    /**
     * Delete multiple customers
     
     */
    deleteCustomersBulkRaw(requestParameters: DeleteCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<RestApiBulkOperationResult>>>;
    /**
     * Delete multiple customers
     
     */
    deleteCustomersBulk(requestParameters: DeleteCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<RestApiBulkOperationResult>>;
    /**
     * Permanently deletes a customer. It cannot be undone.
     * Delete a customer
     
     */
    deleteCustomersIdRaw(requestParameters: DeleteCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>>;
    /**
     * Permanently deletes a customer. It cannot be undone.
     * Delete a customer
     
     */
    deleteCustomersId(requestParameters: DeleteCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void>;
    /**
     * List all customers
     
     */
    getCustomersRaw(requestParameters: GetCustomersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CustomerListResponse>>;
    /**
     * List all customers
     
     */
    getCustomers(requestParameters: GetCustomersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CustomerListResponse>;
    /**
     * Retrieve a customer
     
     */
    getCustomersIdRaw(requestParameters: GetCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Customer>>;
    /**
     * Retrieve a customer
     
     */
    getCustomersId(requestParameters: GetCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Customer>;
    /**
     * List a customer\'s email addresses
     
     */
    getCustomersIdEmailAddressesRaw(requestParameters: GetCustomersIdEmailAddressesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CustomerEmailAddressListResponse>>;
    /**
     * List a customer\'s email addresses
     
     */
    getCustomersIdEmailAddresses(requestParameters: GetCustomersIdEmailAddressesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CustomerEmailAddressListResponse>;
    /**
     * Search customers
     
     */
    getCustomersSearchRaw(requestParameters: GetCustomersSearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CustomerSearchResponse>>;
    /**
     * Search customers
     
     */
    getCustomersSearch(requestParameters: GetCustomersSearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CustomerSearchResponse>;
    /**
     * Update multiple customers
     
     */
    patchCustomersBulkRaw(requestParameters: PatchCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<RestApiBulkOperationResult>>>;
    /**
     * Update multiple customers
     
     */
    patchCustomersBulk(requestParameters: PatchCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<RestApiBulkOperationResult>>;
    /**
     * Update a customer
     
     */
    patchCustomersIdRaw(requestParameters: PatchCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Customer>>;
    /**
     * Update a customer
     
     */
    patchCustomersId(requestParameters: PatchCustomersIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Customer>;
    /**
     * Create a customer
     
     */
    postCustomersRaw(requestParameters: PostCustomersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Customer>>;
    /**
     * Create a customer
     
     */
    postCustomers(requestParameters: PostCustomersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Customer>;
    /**
     * Create multiple customers
     
     */
    postCustomersBulkRaw(requestParameters: PostCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<RestApiBulkOperationResult>>>;
    /**
     * Create multiple customers
     
     */
    postCustomersBulk(requestParameters: PostCustomersBulkRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<RestApiBulkOperationResult>>;
    /**
     * Merge two customers
     
     */
    postCustomersIdMergeOtherRaw(requestParameters: PostCustomersIdMergeOtherRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Customer>>;
    /**
     * Merge two customers
     
     */
    postCustomersIdMergeOther(requestParameters: PostCustomersIdMergeOtherRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Customer>;
}
