/**
 * Shell Card Management APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */
import { ApiResponse, RequestOptions } from '../core';
import { AccountRequest } from '../models/accountRequest';
import { AccountResponse } from '../models/accountResponse';
import { AuditRequest } from '../models/auditRequest';
import { AuditResponse } from '../models/auditResponse';
import { CardGroupRequest } from '../models/cardGroupRequest';
import { CardGroupResponse } from '../models/cardGroupResponse';
import { CardTypeRequest } from '../models/cardTypeRequest';
import { CardTypeResponse } from '../models/cardTypeResponse';
import { CreateCardGroupRequest } from '../models/createCardGroupRequest';
import { CreateCardGroupResponse } from '../models/createCardGroupResponse';
import { CustomerDetailRequest } from '../models/customerDetailRequest';
import { CustomerDetailResponse } from '../models/customerDetailResponse';
import { FleetmanagementV1UserLoggedinuserRequest } from '../models/fleetmanagementV1UserLoggedinuserRequest';
import { LoggedInUserResponse } from '../models/loggedInUserResponse';
import { PayerRequest } from '../models/payerRequest';
import { PayerResponse } from '../models/payerResponse';
import { UpdateCardGroupRequest } from '../models/updateCardGroupRequest';
import { UpdateCardGroupResponse } from '../models/updateCardGroupResponse';
import { BaseController } from './baseController';
export declare class CustomerController extends BaseController {
    /**
     * This API allows querying the user data of the logged in user.</br>
     * This API will return the user access details such as payers and/or accounts. </br>
     * This API will also validate that logged in user has access to the requested API, on failure it will
     * return HasAPIAccess flag as false in response.</br>
     *
     * @param apikey       This is the API key of the specific
     *                                                                        environment which needs to be passed by the
     *                                                                        client.
     * @param requestId    Mandatory UUID (according to RFC 4122
     *                                                                        standards) for requests and responses. This
     *                                                                        will be played back in the response from
     *                                                                        the request.
     * @param body         Logged in user request body
     * @return Response from the API call
     */
    loggedinUser(apikey: string, requestId: string, body?: FleetmanagementV1UserLoggedinuserRequest, requestOptions?: RequestOptions): Promise<ApiResponse<LoggedInUserResponse>>;
    /**
     * This API allows querying the payer accounts details from the Shell Cards
     *
     * Platform. It provides flexible search criteria for searching payer
     *
     * information and supports paging.
     *
     *
     *
     * Paging is applicable only when all the
     *
     * payers passed in the input are from the same ColCo.
     *
     *
     *
     * However, paging will
     *
     * be ignored and the API will return all the matching data by merging the
     *
     * data queried from each ColCo when payers passed in the input are from
     *
     * multiple ColCos.
     *
     *
     *
     * @param apikey       This is the API key of the specific environment which needs to be
     *                                            passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests and
     *                                            responses. This will be played back in the response from the request.
     * @param body         Serach payers request body
     * @return Response from the API call
     */
    payers(apikey: string, requestId: string, body?: PayerRequest, requestOptions?: RequestOptions): Promise<ApiResponse<PayerResponse>>;
    /**
     * This API allows querying the card delivery addresses of a given account from the Shell Cards
     * Platform.
     *
     * Only active delivery addresses will be returned.
     *
     *
     *
     * @param apikey       This is the API key of the specific environment which needs
     *                                                     to be passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests
     *                                                     and responses. This will be played back in the response from
     *                                                     the request.
     * @param body         Customerdetails request body
     * @return Response from the API call
     */
    customer(apikey: string, requestId: string, body?: CustomerDetailRequest, requestOptions?: RequestOptions): Promise<ApiResponse<CustomerDetailResponse>>;
    /**
     * This API allows querying the customer account details from the Shell Cards Platform.
     *
     * It provides a flexible search criterion and supports paging".
     *
     * @param apikey       This is the API key of the specific environment which needs to be
     *                                              passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests and
     *                                              responses. This will be played back in the response from the request.
     * @param body
     * @return Response from the API call
     */
    accounts(apikey: string, requestId: string, body?: AccountRequest, requestOptions?: RequestOptions): Promise<ApiResponse<AccountResponse>>;
    /**
     * This operation allows querying card types that are associated to the given account and are allowed
     * to be shown to users.
     *
     * @param apikey       This is the API key of the specific environment which needs to be
     *                                               passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests and
     *                                               responses. This will be played back in the response from the request.
     * @param body         Get CardType Request Body
     * @return Response from the API call
     */
    cardType(apikey: string, requestId: string, body?: CardTypeRequest, requestOptions?: RequestOptions): Promise<ApiResponse<CardTypeResponse>>;
    /**
     * This operation allows querying the card group details . It provides flexible search criteria and
     * supports paging.\
     *
     *
     * When the card group type is configured as ‘Vertical’ in cards platform, this operation will return
     * all card groups from the given account or if no account is passed in the input, then will return
     * card groups from all the accounts under the payer.
     *
     *
     * When the card group type is configured as ‘Horizontal’ in cards platform, this API will return all
     * card groups configured directly under the payer.
     *
     *
     * Accounts with cancelled status will not be considered for cardgroups search for the configured (E.g.,
     * SFH) set of client apps.
     *
     *
     * @param apikey       This is the API key of the specific environment which needs to be
     *                                                passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests and
     *                                                responses. This will be played back in the response from the
     *                                                request.
     * @param body         Request Body
     * @return Response from the API call
     */
    cardGroups(apikey: string, requestId: string, body?: CardGroupRequest, requestOptions?: RequestOptions): Promise<ApiResponse<CardGroupResponse>>;
    /**
     * This operation allows users to fetch audit data of account or card operations performed by users of
     * a given customer
     *
     * The audit data includes details of below API operations
     *
     *
     *
     * * Order Card
     *
     * * Create Card Group
     *
     * * PIN reminder
     *
     * * Move Cards
     *
     * * Update Card Status
     *
     * * Update Card Group
     *
     * * Auto renew
     *
     * * Bulk card order
     *
     * * Bulk card block
     *
     * * Bulk Card Order (Multi Account)
     *
     * * BCOSummary
     *
     * * BCOMultiAccountSummary
     *
     * * BCBSummary
     *
     * * Mobile Payment Registration
     *
     * * Fund Transfer (Scheduled & Realtime)
     *
     * * Delivery Address Update.
     *
     * @param apikey       This is the API key of the specific environment which needs to be
     *                                            passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for requests and
     *                                            responses. This will be played back in the response from the request.
     * @param body         request body
     * @return Response from the API call
     */
    auditReport(apikey: string, requestId: string, body?: AuditRequest, requestOptions?: RequestOptions): Promise<ApiResponse<AuditResponse>>;
    /**
     * This API allows creating a new Card Group in the Shell Cards Platform. It will
     *
     * also allow moving of cards (up to 500 cards) into the newly created
     *
     * card-group.
     *
     *
     *
     * ### Move Card requests are queued after passing the below validations
     *
     *
     *
     * * Given PAN matches with only one card.
     *
     * * Card is allowed to be moved to the Target Card Group and/or
     *
     * * Target account requested.
     *
     * * There is no pending Move Card request for the same card in the queue which is submitted on the
     * same date
     *
     * and is yet to be processed or has been processed
     *
     * successfully
     *
     *
     *
     * @param apikey       This is the API key of the specific environment which needs
     *                                                      to be passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for
     *                                                      requests and responses. This will be played back in the
     *                                                      response from the request.
     * @param body         CreateCardGroup request body
     * @return Response from the API call
     */
    createCardGroup(apikey: string, requestId: string, body?: CreateCardGroupRequest, requestOptions?: RequestOptions): Promise<ApiResponse<CreateCardGroupResponse>>;
    /**
     * This API allows updating or removing a Card Group in the Shell Cards Platform.
     *
     *
     *
     * It also allows moving of cards out of a card group or from one card group to another existing card
     * group.
     *
     *
     *
     * The request for updating or removing of the card group, creationg of a new card group (where-
     * applicable) and moving of card into another card group will be queued at Microservices after passing
     * the basic
     *
     * validations.
     *
     *
     *
     * @param apikey       This is the API key of the specific environment which needs
     *                                                      to be passed by the client.
     * @param requestId    Mandatory UUID (according to RFC 4122 standards) for
     *                                                      requests and responses. This will be played back in the
     *                                                      response from the request.
     * @param body         request body of customer card group
     * @return Response from the API call
     */
    updateCardGroup(apikey: string, requestId: string, body?: UpdateCardGroupRequest, requestOptions?: RequestOptions): Promise<ApiResponse<UpdateCardGroupResponse>>;
}
