// Generated by dts-bundle v0.7.3

/**
    * This method makes the EVA SDK ready for use and configures access to your back-end datastore
    * @param  {string}     authenticationToken   Your application authentication token
    * @param  {number}     applicationId         The application identifier for your store
    * @param  {string}     endPointURL           The URL for the EVA back-end store you want to use
    * @return {void}                             This method doesn't return anything
    */
export function init(authenticationToken: string, applicationId: number, endPointURL?: string): void;
/**
    * Expose the settings manager and the means to override the XMLHttpRequest provider
    */
/**
    * These are the data providers availabe in eva
    */

/**
    * This declares the known settings for the EVA SDK
    */
export interface IEvaSettings {
        userAuthenticationToken?: string;
        siteAuthenticationToken?: string;
        applicationId?: number;
        sessionId?: string;
        endPointURL: string;
        language: string;
        version: string;
        clientName: string;
        productProperties: string[];
        appName: string;
        appVersion: string;
        applicationToken: string;
}
/**
    * The settings manager provides methods to get and set EVA client options
    * @type {namespace}
    */
export namespace SettingsManager {
        /**
            * Generates a new session identifier for all future service calls
            * @return {string} The current session identifier
            */
        function generateSessionID(): string;
        /**
            * Changes the currently configured site authentication token.
            * @return {string} An authorisation token
            */
        function setSiteAuthenticationToken(token: string): string;
        /**
            * Changes the currently configured user authentication token. This token
            * will be used in favor of the site authentication token.
            * @return {string} An authorisation token
            */
        function setUserAuthenticationToken(token: string): string;
        /**
            * Return the currently configured authentication token
            * @return {string} An authorisation token
            */
        function getAuthenticationToken(): string;
        /**
            * Changes the currently configured session identifier
            * @return {string} A session identifier
            */
        function setSessionId(sessionId: string): string;
        /**
            * Return the currently configured session identifier
            * @return {string} A session identifier
            */
        function getSessionId(): string;
        /**
            * Return the currently configured end point URL
            * @return {string} An end point URL
            */
        function getEndPointURL(): string;
        /**
            * Changes the currently configured end point URL
            * @return {string} An end point URL
            */
        function setEndPointURL(URL: string): string;
        /**
            * Return the currently configured application identifier
            * @return {number} An application identifier
            */
        function getApplicationId(): number;
        /**
            * Changes the currently configured application identifier
            * @return {number} An application identifier
            */
        function setApplicationId(applicationId: number): number;
        /**
            * Returns the currently configured client language
            * @return {string} Language code (ex. nl-NL)
            */
        function getLanguage(): string;
        /**
            * Changes the currently configured client language
            * @return {string} Language code (ex. nl-NL)
            */
        function setLanguage(languageCode: string): string;
        /**
            * Returns the current client version number which is in semver format
            * @return {string} Version number (ex. 0.1.0)
            */
        function getVersion(): string;
        /**
            * Returns the current client name
            * @return {string} Client name
            */
        function getClientName(): string;
        /**
            * Changes the currently configured client language
            * @return {string} Language code (ex. nl-NL)
            */
        function setAppDetails(name: string, version: string): string;
        /**
            * Returns the current app version number which is in semver format
            * @return {string} Version number (ex. 0.1.0)
            */
        function getAppVersion(): string;
        /**
            * Returns the current app name
            * @return {string} App name
            */
        function getAppName(): string;
        /**
            * Returns the currently configured product properties
            *
            * @export
            * @returns {string[]}
            */
        function getProductProperties(): string[];
        /**
            * Set the currently configured product properties
            *
            * @export
            * @param {string[]} properties
            * @returns {string[]}
            */
        function setProductProperties(properties: string[]): string[];
        /**
            * Changes the currently configured application token. This token is sent
            * to the EVA backend using the EVA-App-Token header
            *
            * @return {string} An application token
            */
        function setApplicationToken(token: string): string;
        /**
            * Return the currently configured application token
            *
            * @return {string} An application token
            */
        function getApplicationToken(): string;
}

/**
    * For node.js or alternative platforms you can use setTransportProvider to point to an XHR alternative
    * @param  {any}    alternativeXMLHttpRequest   Platform specific or alternative XMLHttpRequest implementation
    * @return {void}                               This method does not return anything
    */
export function setTransportProvider(alternativeXMLHttpRequest: any): void;
/**
    * Create a new instance of an XMLHttpRequest object
    * @return {any} The XMLHttpRequest instance
    */
export function createTransport(): any;
/**
    * Possible XMLHttpRequest call methods
    * @type {enum}
    */
export enum EXMLHttpRequestMethod {
        GET = 0,
        POST = 1,
        PUT = 2,
        DELETE = 3,
        PATCH = 4
}
/**
    * These are all the parameters that can be provided for an XMLHttpRequest call
    * @type {interface}
    */
export interface IXMLHttpRequestParameters {
        method: EXMLHttpRequestMethod;
        url: string;
        contentType?: string;
        headers?: any;
        data?: any;
        username?: string;
        password?: string;
}
/**
    * Any response is returned along with its HTTP responseStatus code
    * @type {interface}
    */
export interface IXMLHttpRequestResponse {
        status: number;
        response: any;
        xhr: XMLHttpRequest;
}
/**
    * Provides a wrapper for an XMLHttpRequest call
    * @type {class}
    */
export class XHR {
        appendURL(url: string, parameters: any): string;
        /**
            * Sets the XMLHttpRequest timeout to another value then the default 30 seconds
            * @param  {number} timeout The new timeout value in milliseconds
            * @return {number}         A timeout in milliseconds
            */
        setTimeout(timeout: number): number;
        /**
            * Return the current XMLHttpRequest timeout value
            * @return {number} A timeout in milliseconds
            */
        getTimeout(): number;
        /**
            * Performs an XMLHttpRequest call
            * @param  {IXMLHttpRequestParameters}  params  The call parameters
            * @return {Promise<IXMLHttpRequestResponse>} A promise that will resolve or reject depending on the call response
            */
        call(params: IXMLHttpRequestParameters): Promise<IXMLHttpRequestResponse>;
}

/**
    * This module provides access to an EVA Service call and ensures all required
    * settings, headers and call conditions are met
    *
    * @preferred
    */
/**
    * Any response is returned along with its HTTP responseStatus code
    * @type {interface}
    */
export interface IEVAServiceResponse<REQ, RES> {
        request: REQ;
        response: RES;
        status: number;
        xhr: XMLHttpRequest;
}
/**
    * Wrapper class for a call to the EVA back-end
    * Ensure all proper settings are applied and handles all the type casting of
    * request and response for the XMLHttpRequest calls
    * @type {class}
    */
export class EVAService<REQ, RES> {
        /**
            * Constructor for the EVAService class
            * @param  {string} name    The name of the EVA service to call
            * @return {void}           This method returns nothing
            */
        constructor(name: string, path?: string, method?: EXMLHttpRequestMethod);
        /**
            * Convenience method to get the current session ID
            * @return {string} The current sessionID
            */
        getSessionID(): string;
        /**
            * Performs the actual call to the backend
            * @param  {REQ}        requestData The data to be sent as the body for this call
            * @return {Promise}                Return a promise that will resolve with the call response
            */
        call(requestData?: REQ, disableCache?: boolean, timeout?: number): Promise<IEVAServiceResponse<REQ, RES>>;
}

/**
    * The applications module provides access to the applications data from the EVA back-end
    * @preferred
    */
/**
    * Provides access to an order available in EVA
    */
export class Application extends FetchableItem<EVA.Core.Services.ApplicationDto, EVA.Core.Services.GetCurrentApplication, EVA.Core.Services.GetCurrentApplicationResponse> {
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetCurrentApplication, EVA.Core.Services.GetCurrentApplicationResponse>>;
        setData(response: EVA.Core.Services.GetCurrentApplicationResponse): EVA.Core.Services.ApplicationDto;
        configuration(): Promise<IEVAServiceResponse<EVA.Core.Services.GetApplicationConfiguration, EVA.Core.Services.GetApplicationConfigurationResponse>>;
}

/**
    * The applications module provides access to the applications data from the EVA back-end
    * @preferred
    */
/**
    * Provides access to a babylon Brands (fashion) in EVA
    */
export class Brand extends FetchableItem<EVA.PIM.Core.BrandDto, EVA.PIM.Core.GetBrand, EVA.PIM.Core.GetBrandResponse> {
        fetch(): Promise<IEVAServiceResponse<EVA.PIM.Core.GetBrand, EVA.PIM.Core.GetBrandResponse>>;
}
export class Brands extends FetchablePagedList<EVA.Core.Services.ListBrandsResponseBrandDto, EVA.Core.Services.ListBrands, EVA.Core.Services.ListBrandsResponse> {
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {RES}        response    The response from the service call
            * @return {Array<T>}               The item details
            */
        setData(response: any): EVA.Core.Services.ListBrandsResponseBrandDto[];
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListBrandsPaged, EVA.Core.Services.ListBrandsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListBrands, EVA.Core.Services.ListBrandsResponse>>;
}
export function searchBrands(query: string, pageSize?: number): Promise<IEVAServiceResponse<EVA.Core.Services.SearchBrands, EVA.Core.Services.SearchBrandsResponse>>;

export namespace Discounts {
    function searchByQuery(requestBody: EVA.Core.Services.Management.SearchDiscountsByQuery): Promise<EVA.Core.Services.Management.SearchDiscountsByQueryResponse>;
    function listManualDiscounts(requestBody: EVA.Core.Services.ListManualDiscounts): Promise<EVA.Core.Services.ListManualDiscountsResponse>;
    function getDiscountCoupons(requestBody: EVA.Core.Services.Management.GetDiscountCoupons): Promise<EVA.Core.Services.Management.GetDiscountCouponsResponse>;
}

export namespace DocumentSigning {
    function getSigningCodeForOrder(orderId: number): Promise<IEVAServiceResponse<EVA.DocumentSigning.GetSigningCodeForOrder, EVA.DocumentSigning.GetSigningCodeForOrderResponse>>;
    function getSigningDataForOrder(hashId: string): Promise<IEVAServiceResponse<EVA.DocumentSigning.GetSigningDataForOrder, EVA.DocumentSigning.GetSigningDataForOrderResponse>>;
    function signOrder(signature: string, mimeType: string, hashId: string): Promise<IEVAServiceResponse<EVA.DocumentSigning.SignOrder, EVA.API.RequestMessageWithEmptyResponse>>;
}

export interface IEVALoginOptions {
        organizationUnitId?: number;
        confirmationToken?: string;
        identificationCode?: string;
        selectOrganizationByApplicationID?: boolean;
        publicLogin?: boolean;
        registerApiKey?: boolean;
        context?: string;
}
export interface IEVACreateCustomer {
        noAccount?: boolean;
        autoLogin?: boolean;
}
/**
    * General namespace for Users function
    */
export namespace Users {
        /**
            * Request a token (via e-mail) for a user
            *
            * @param  {string}  emailAddress the e-mail adres of the user to request the token for
            * @return {Promise}              A promise that is fulfilled when the EVA Core service responds
            */
        function requestResetPassword(emailAddress: string): Promise<IEVAServiceResponse<EVA.Core.Services.RequestPasswordResetToken, EVA.API.EmptyResponseMessage>>;
        /**
            * Reset a user password using a token that was received in an e-mail
            *
            * @param  {string}  newPassword the new password
            * @param  {string}  token       the token to be used for this reset
            * @return {Promise}             A promise that is fulfilled when the EVA Core service responds
            */
        function resetPassword(newPassword: string, token: string): Promise<IEVAServiceResponse<EVA.Core.Services.ResetUserPassword, EVA.Core.Services.ResetUserPasswordResponse>>;
}
/**
    * Provides authentication to EVA
    *
    * id is authentication
    */
export class LoggedInUser extends FetchableItem<EVA.Core.LoggedInUserDto, EVA.Core.Services.GetCurrentUser, EVA.Core.Services.GetCurrentUserResponse> {
        orders: CustomerOrderList;
        authentication: number;
        organisationUnits: Array<EVA.Core.OrganizationUnitDto>;
        isAnonymous: boolean;
        isEmployee: boolean;
        isCustomer: boolean;
        static checkEmailAddressAvailability(emailAddress: string): Promise<any>;
        static checkNicknameAvailability(nickname: string): Promise<any>;
        /**
            * Register a new customer and autologin
            *
            * @param  {any}            customer EVA.Core.Services.CustomerDto but only EmailAddress
            * @return {Promise<any>}   A promise that is fulfilled when the EVA Core service responds
            */
        static register(customer: any, autoLogin?: boolean, noAccount?: boolean): Promise<any>;
        /**
            * Register a new customer with company
            *
            * @param  {EVA.Core.Services.CreateCustomerWithCompany} request    Create a customer with company request
            * @return {Promise<any>}                                           A promise that is fulfilled when the EVA Core service responds
            */
        static registerWithCompany(request: EVA.Core.Services.CreateCustomerWithCompany): Promise<EVA.Core.Services.CreateCustomerWithCompanyResponse>;
        /**
            * Retrieve the company details for a user
            * @return {Promise<EVA.Core.CompanyDto>}
            */
        static getCompanyForUser(userId: number): Promise<EVA.Core.CompanyDto>;
        /**
            * Method to update a company that belongs to the logged-in user
            *
            * @param {EVA.Core.CompanyDto} company The company to update
            * @returns {Promise<boolean>} Promise that returns true if update was successful
            */
        static updateCompanyForUser(userId: number, company: EVA.Core.CompanyDto): Promise<boolean>;
        /**
            * Search for customers
            *
            * @param  {string}           query           The query to search on
            * @param  {number}           limit           The page size limit. Defaults to 15
            * @param  {number}           start           The item to start the list at. Defaults to 0 and is a 0-based index.
            * @return {Promise<any>}                     A promise that is fulfilled when the EVA Core service responds
            */
        static searchUsers(options: {
                query?: string;
                employeeId?: number;
                limit: number;
                skip: number;
        }): Promise<any>;
        /**
            * Retrieves and updates current user data
            * @return {Promise} A promise that is fulfilled when the EVA Core service responds
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetCurrentUser, EVA.Core.Services.GetCurrentUserResponse>>;
        /**
            * @param  {any}                                  response Provide with body of the response to populate and set properly the data on CurrentUser
            * @return {EVA.Core.LoggedInUserDto}          The current LoggedInUserDto state
            */
        setData(response?: any): EVA.Core.LoggedInUserDto;
        /**
            * Return the current authentication token
            * @return {string} The current authentication token
            */
        getAuthenticationToken(): string;
        /**
            * Perform a login using email adress and password, and optional additional
            * data
            *
            * @param  {string}  login        The email address or username (nickname) to login with
            * @param  {string}  password     The password over the login
            * @param  {IEVALoginOptions?} options An optional structure with additional data for the login
            * @return {Promise}              Will resolve when succesfully logged in or rejected with the authentication result (EVA.Core.AuthenticationResults) or a general error
            */
        login(login: string, password: string, options?: IEVALoginOptions): Promise<IEVAServiceResponse<EVA.Core.Services.Login, EVA.Core.Services.LoginResponse>>;
        /**
            * Switches the organization of the logged in user
            *
            * @param {number} organizationUnitId The new organization id
            * @returns
            * @memberof LoggedInUser
            */
        switchOrganization(organizationUnitId: number): Promise<IEVAServiceResponse<EVA.Core.Services.Login, EVA.Core.Services.LoginResponse>>;
        /**
            * Execute an explicit logout
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        logout(): Promise<IEVAServiceResponse<EVA.Core.Services.Logout, EVA.Core.Services.LogoutResponse>>;
        /**
            * Retrieves third party login options
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        getThirdPartyLoginOptions(): Promise<IEVAServiceResponse<EVA.Core.Services.GetAvailableThirdPartiesForLogin, EVA.Core.Services.GetAvailableThirdPartiesForLoginResponse>>;
        /**
            * Requests third party login.
            * Response will contain a redirect url that can be used to perform the login
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        requestThirdPartyLogin(loginRequest: EVA.Core.Services.RequestThirdPartyLogin): Promise<IEVAServiceResponse<EVA.Core.Services.RequestThirdPartyLogin, EVA.Core.Services.RequestThirdPartyLoginResponse>>;
        /**
            * Perform third party login with a token
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        authenticateWithThirdPartyLogin(loginRequest: EVA.Core.Services.AuthenticateWithThirdPartyLogin): Promise<IEVAServiceResponse<EVA.Core.Services.AuthenticateWithThirdPartyLogin, EVA.Core.Services.AuthenticateWithThirdPartyLoginResponse>>;
        /**
            * This call retrieves a paged list of orders belonging to the current user
            *
            * @param  {number}                         start           The item to start the list at. Defaults to 0 and is a 0-based index.
            * @param  {number}                         limit           The page size limit. Defaults to 15
            * @param  {EVA.Framework.SortDirection}  sortDirection          The sorting direction for the list. Defaults to ascending
            * @return {Promise<customerOrderList>}                     A promise resolving when the call to the back-end has completed
            */
        getOrders(id: number, limit?: number, start?: number, sortDirection?: EVA.Framework.SortDirection): Promise<CustomerOrderList>;
        /**
            * This call retrieves a single order
            * @param {number}              order_id                    The ID of the order
            * @param {boolean}             include_failed_payements    If set to true, return order even if the payment has not been completed
            * @return {Promies<Order>}                                 A promise resolving when the call to the back-end has completed
            */
        getOrder(order_id: number, include_failed_payements: boolean): Promise<Order>;
        /**
            * Update the user
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        update(): Promise<IEVAServiceResponse<EVA.Core.Services.UpdateUser, EVA.Core.Services.UpdateUserResponse>>;
        /**
            * Update the user's email address
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        updateUserEmailAddress(newEmailAddress: string): Promise<IEVAServiceResponse<EVA.Core.Services.UpdateUserEmailAddress, EVA.API.RequestMessageWithEmptyResponse>>;
        /**
            * Change the passowrd of this user
            *
            * @param  {string}  newPassword The new password
            * @param  {string}  oldPassword The current / old password
            * @return {Promise}             A promise resolving when the call to the back-end has completed
            */
        changePassword(newPassword: string, oldPassword: string): Promise<IEVAServiceResponse<EVA.Core.Services.ChangeUserPassword, EVA.Core.Services.ChangeUserPasswordResponse>>;
}
export class User extends FetchableItem<EVA.Core.UserDto, EVA.Core.Services.GetUser, EVA.Core.Services.GetUserResponse> {
        isAnonymous: boolean;
        isEmployee: boolean;
        isCustomer: boolean;
        /**
            * Update the user
            *
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        update(userDto: EVA.Core.UserDto): Promise<IEVAServiceResponse<EVA.Core.Services.UpdateUser, EVA.Core.Services.UpdateUserResponse>>;
        /**
            * Retrieves specific user data
            * @return {Promise} A promise that is fulfilled when the EVA Core service responds
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetUser, EVA.Core.Services.GetUserResponse>>;
        /**
            * @param  {any}                                  response  Service response containing the user data
            * @return {EVA.Core.UserDto}                   The user data
            */
        setData(response?: any): EVA.Core.UserDto;
}

/**
    * The orders module provides access to the order data from the EVA back-end
    * @preferred
    */
export interface IEVAProduceInvoiceOptions {
        downloadInvoice?: boolean;
        emailAddress?: string;
        invoiceId?: number;
        printInvoice?: boolean;
        remark?: string;
        stationId?: string;
}
export interface IEVAProduceDocumentsOptions {
        printInvoice?: boolean;
        emailInvoice?: boolean;
        printReceipt?: boolean;
        stationId?: number;
        orderID?: number;
        emailAddress?: string;
        remark?: string;
}
/**
    * Provides access to an order available in EVA
    */
export class Order extends FetchableItem<EVA.Core.OrderDto, EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse> {
        /**
            * The payment options for the order
            * @type {Payment}
            */
        payment: Payments;
        /**
            * Flag to include pending payments in fetch
            *
            * @type {boolean}
            * @memberof Order
            */
        includePendingPayments: boolean;
        /**
            * Flag to include failed payments in fetch
            *
            * @type {boolean}
            * @memberof Order
            */
        includeFailedPayments: boolean;
        /**
            * This class wraps an order from EVA and the operations you can perform on it.
            * You should supply the order identifier when creating an instance of this class
            *
            * @param  {number | string}    id      The identifier of the order to retrieve
            * @return {void}                       This method doesn't return anything
            */
        constructor(id?: number | string);
        /**
            * Returns if the order state 'completed' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isCompleted(): boolean;
        /**
            * Returns if the order state 'shipped' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isShipped(): boolean;
        /**
            * Returns if the order state 'paid' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isPaid(): boolean;
        /**
            * Returns if the order state 'invoiced' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isInvoiced(): boolean;
        /**
            * Returns if the order state 'cancelled' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isCancelled(): boolean;
        /**
            * Returns the current open amount still to be paid for the order
            * @return {number}
            */
        getOpenAmount(): number;
        /**
            * Returns the total value of all the items in the order with VAT
            * @return {number} The value of the items in the order with VAT
            */
        getTotalAmountInTax(): number;
        /**
            * Return the current order amounts
            *
            * @returns {EVA.Core.OrderAmounts}
            * @memberof Order
            */
        getOrderAmounts(): EVA.Core.OrderAmounts;
        /**
            * Return order lines by type
            * @return {Array<EVA.Core.OrderLineDto>} Array of order lines
            */
        getOrderLinesByType(orderLineType: number | EVA.Core.OrderLineTypes): Array<EVA.Core.OrderLineDto>;
        /**
            * Return the total amount of shipping costs
            * @return {number} The total value of the shipping costs
            */
        getTotalShippingAmount(inTax?: boolean): number;
        /**
            * Return the total amount of ShippingCosts
            * @return {number} The total value of the shipping costs
            */
        getTotalDiscountAmount(inTax?: boolean): number;
        /**
            * Returns the current order requirement validation data
            * @return {EVA.Core.Validation.RequiredData} The order requirement validation data
            */
        getRequirements(): EVA.Core.RequiredData;
        /**
            * Checks if there are any invalid requirements in the current order requirement validation data
            * @return {boolean} Indicates if the order requirements are all met or not
            */
        isValid(): boolean;
        /**
            * Fetches and updates the order requirement validation data
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetRequiredDataForOrder, EVA.Core.Services.GetRequiredDataForOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        validate(requiredFor?: number, storeRequirements?: boolean): Promise<IEVAServiceResponse<EVA.Core.Services.GetRequiredDataForOrder, EVA.Core.Services.GetRequiredDataForOrderResponse>>;
        /**
            * Returns the list of different organizations where orderline items are te be picked up
            * @return {number} The list of organizations
            */
        readonly stockOrganizationUnits: Array<any>;
        /**
            * Returns the list of different organizations where orderline items are te be picked up
            * @return {number} The list of organizations
            */
        readonly requestedDates: Array<any>;
        /**
            * Fetches the order details
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {EVA.Core.Services.GetOrderResponse}  response    The response from the service call
            * @return {EVA.Core.OrderDto}              The order details
            */
        setData(response: EVA.Core.Services.GetOrderResponse | EVA.Core.ShoppingCartResponse | any): EVA.Core.OrderDto;
        /**
            * Attaches a customer to the order
            * @param  {LoggedInUser}       customer       The current user class that is to be set as the customer for the order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setCustomer(customer: LoggedInUser | User): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Sets the currency for the order
            * @param  {string}       currencyID       The identifier of the currency
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setCurrency(currencyID: string): Promise<{}>;
        /**
            * Retrieve the current warehouse data for this order
            *
            * @see https://newblack1.aha.io/features/EVA-17
            */
        getWarehouseData(): Promise<IEVAServiceResponse<EVA.Core.Services.GetWarehouseOrderData, EVA.API.EmptyResponseMessage>>;
        /**
            * Dictates whether this order will be partially delivered or not
            * @param allowPartialPick whether to allow partial pick up or not
            * @see https://newblack1.aha.io/features/EVA-17
            */
        setWarehouseData(allowPartialPick: boolean): Promise<{}>;
        /**
            * Sets a requested date on an order line
            * @param orderLineID the orderLine we want to modify the requst date of
            * @param requestedDate the request date in question
            */
        setRequestedDate(orderLines: EVA.Core.Services.SetRequestedDateOrderLineDto[], requestedDate: string): Promise<{}>;
        /**
            * Attaches a customer to the order
            * @param  {LoggedInUser}       customer       The current user class that is to be set as the customer for the order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setPickupOrganizationUnit(organizationUnitID: number): Promise<IEVAServiceResponse<EVA.Core.Services.SetPickupOrganizationUnit, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Places the order. It's usually wise to call validate(...) before trying to place an order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.PlaceOrder, EVA.Core.Services.PlaceOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        placeOrder(): Promise<IEVAServiceResponse<EVA.Core.Services.PlaceOrder, EVA.Core.Services.PlaceOrderResponse>>;
        /**
            * Ships the order. It's usually wise to call validate(...) before trying to ship an order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ShipOrder, EVA.Core.Services.ShipOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        shipOrder(lines?: number[], force?: boolean): Promise<IEVAServiceResponse<EVA.Core.Services.ShipOrder, EVA.Core.Services.ShipOrderResponse>>;
        produceInvoice(options: IEVAProduceInvoiceOptions): Promise<IEVAServiceResponse<EVA.Core.Services.ProduceInvoice, EVA.API.ResourceResponseMessage>>;
        produceDocuments(options: IEVAProduceDocumentsOptions): Promise<IEVAServiceResponse<EVA.Core.Services.ProduceDocuments, EVA.Core.Services.ProduceDocumentsResponse>>;
        /**
            * Get the download url for this order
            *
            * @return {Promise<string>} The URL to the download of this order
            */
        getDownloadUrl(): Promise<string>;
        getReturnableStatusForOrder(): Promise<IEVAServiceResponse<EVA.Core.Services.GetReturnableStatusForOrder, EVA.Core.Services.GetReturnableStatusForOrderResponse>>;
        getReturnOrdersForOrder(): Promise<IEVAServiceResponse<EVA.CRM.Core.GetReturnOrdersForOrder, EVA.CRM.Core.GetReturnOrdersForOrderResponse>>;
        createCustomerReturn(lines: Array<EVA.CRM.Core.CustomerReturnLine>): Promise<IEVAServiceResponse<EVA.CRM.Core.CreateCustomerReturn, EVA.API.EmptyResponseMessage>>;
        createEmployeeReturn(lines: Array<EVA.CRM.Core.ReturnLineDto>): Promise<IEVAServiceResponse<EVA.CRM.Core.ReturnOrderLines, EVA.API.EmptyResponseMessage>>;
        /**
            * For B2B orders
            *
            * Fetches the order view details
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetConfigurableOrderView, EVA.Core.Services.GetConfigurableOrderViewResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetchOrderView(logicalLevel?: string, groupByProperty?: string): Promise<IEVAServiceResponse<EVA.Core.Services.GetConfigurableOrderView, EVA.Core.Services.GetConfigurableOrderViewResponse>>;
        /**
            * Set an order reference for a customer
            *
            * @param customerReference The reference value to set
            * @param customerOrderId The customer order id
            * @see https://newblack1.aha.io/features/EVA-15
            */
        setCustomerOrderReference(customerReference: string, customerOrderId: string): Promise<IEVAServiceResponse<EVA.Core.Services.SetCustomerReferencesOnOrder, EVA.API.EmptyResponseMessage>>;
        /**
            * Set the shopping basket to an existing order. Removes any existing items in the shopping cart
            * @param  {number|Order}       order       Either an order id or an order class to set as the shopping cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        attach(order: number | Order): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Clears the entire shopping basket
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the call to the back-end has completed
            */
        detach(): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Suspends the current order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.SuspendOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the call to the back-end has completed
            */
        suspend(description: string, printReceipt: boolean, stationId?: number): Promise<IEVAServiceResponse<EVA.Core.Services.SuspendOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Set the order reference
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListOrderLines, EVA.Core.Services.ListOrderLinesResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        listOrderLines(orderLineIds?: number[], start?: number, limit?: number, shippable?: boolean, invoiceable?: boolean, onlyShippable?: boolean, productTypes?: EVA.Core.ProductTypes): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrderLines, EVA.Core.Services.ListOrderLinesResponse>>;
        /**
            * Update customer address data for this order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListOrderLines, EVA.Core.Services.ListOrderLinesResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        copyAddressesFromCustomer(): Promise<IEVAServiceResponse<EVA.Core.Services.UpdateOrderAddresses, EVA.Core.Services.UpdateOrderAddressesResponse>>;
        /**
            * Provides access to a list of shipments for this order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListOrderShipments, EVA.Core.Services.ListOrderShipmentsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        listShipments(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrderShipments, EVA.Core.Services.ListOrderShipmentsResponse>>;
        /**
            * Provides access to a list of blobs for this order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListBlobsForOrder, EVA.Core.Services.ListBlobsForOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        listBlobs(): Promise<IEVAServiceResponse<EVA.Core.Services.ListBlobsForOrder, EVA.Core.Services.ListBlobsForOrderResponse>>;
        /**
            * Set the billing address of the order using an AddressBook item
            *
            * @param {number} addressBookId The ID of the AddressBook item
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setBillingAddressFromAddressBook(addressBookId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Set the billing address of the order using an raw address
            *
            * @param {number} address The address to set as billing address on the order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setBillingAddress(address: EVA.Core.AddressDto): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Set the shipping address of the order using an AddressBook item
            *
            * @param {number} addressBookId The ID of the AddressBook item
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the call to the back-end has completed
            */
        setShippingAddressFromAddressBook(addressBookId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Set the shipping address of the order using an raw address
            *
            * @param {number} address The address to set as shipping address on the order
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setShippingAddress(address: EVA.Core.AddressDto): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Sets the remarks for an order
            *
            * @param {string} remarks The remarks content
            * @returns {Promise<IEVAServiceResponse<EVA.Core.Services.SetCustomOrderData, EVA.API.EmptyResponseMessage>>}
            * @memberof Order
            */
        setRemark(remarks: string): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Retrieves available discount product options for an order line
            *
            * @param {number} orderLineId
            * @returns {Promise<IEVAServiceResponse<EVA.Core.Services.GetPickProductDiscountOptionsForOrderLine, EVA.Core.Services.GetPickProductDiscountOptionsForOrderLineResponse>>}
            * @memberof Order
            */
        getDiscountProductOptionsForOrderline(orderLineId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetPickProductDiscountOptionsForOrderLine, EVA.Core.Services.GetPickProductDiscountOptionsForOrderLineResponse>>;
        /**
            * Retrieves available discount product options for an order
            *
            * @param {number} orderId
            * @returns {Promise<IEVAServiceResponse<EVA.Core.Services.GetPickProductDiscountOptionsForOrder, EVA.Core.Services.GetPickProductDiscountOptionsForOrderResponse>>}
            * @memberof Order
            */
        getDiscountProductOptionsForOrder(orderId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetPickProductDiscountOptionsForOrder, EVA.Core.Services.GetPickProductDiscountOptionsForOrderResponse>>;
        /**
            * Sets the chosen discount product for an order line
            *
            * @param {number} orderLineId
            * @param {(number | null)} selectionId
            * @returns {Promise<IEVAServiceResponse<EVA.Core.Services.SetPickProductDiscountOptionsForOrderLine, EVA.API.EmptyResponseMessage>>}
            * @memberof Order
            */
        setDiscountProductForOrderline(orderLineId: number, selectionId: number | null): Promise<IEVAServiceResponse<EVA.Core.Services.SetPickProductDiscountOptionsForOrderLine, EVA.API.EmptyResponseMessage>>;
}
/**
    * Provides access to a list of customer orders available in EVA
    */
export class CustomerOrderList extends FetchablePagedList<Order, EVA.Core.Services.ListOrdersForCustomer, EVA.Core.Services.ListOrdersForCustomerResponse> {
        constructor(id: number, limit?: number, start?: number, sortDirection?: EVA.Framework.SortDirection, sortProperty?: string);
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {RES} response The response from the service call
            * @return {T}            The item details
            */
        setData(response: any): Order[];
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.OrderDto, EVA.Core.Services.ListOrdersForCustomer, EVA.Core.Services.ListOrdersForCustomerResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrdersForCustomer, EVA.Core.Services.ListOrdersForCustomerResponse>>;
}
/**
    * Provides access to a list of customer orders available in EVA
    */
export class SearchOrderList extends FetchablePagedList<EVA.Core.OrderSearchResultItem, EVA.Core.Services.SearchOrders, EVA.Core.Services.SearchOrdersResponse> {
        /**
            * Returns the current query string
            * @return {string}       The configured query string
            */
        getQuery(): string;
        /**
            * Set the organization id to search for
            * @param  {number} query The organization id
            * @return {number}       The configured organization id
            */
        setOrganizationID(id: number): number;
        /**
            * Returns the current organization id
            * @return {number}       The configured organization id
            */
        getOrganizationID(): number;
        /**
            * Set the query to search for
            * @param  {string} query The new query string
            * @return {string}       The configured query string
            */
        setQuery(query: string): string;
        /**
            * Returns the current list of order ids
            * @return {Array<number>} The configured list of order ids
            */
        getOrderIDs(): Array<number>;
        /**
            * Adds an order ID to the list of orders to retrieve
            * @return {Array<number>} The configured list of order ids
            */
        addOrderID(id: number): Array<number>;
        /**
            * Adds an order ID to the list of orders to retrieve
            * @return {Array<number>} The configured list of order ids
            */
        setOrderIDs(ids: number[]): Array<number>;
        /**
            * Clears the configured list of order ids
            * @return {Array<number>} The configured list of order ids
            */
        clearOrderIDs(): Array<number>;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.SearchOrders, EVA.Core.Services.SearchOrdersResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.SearchOrders, EVA.Core.Services.SearchOrdersResponse>>;
}
/**
    * Provides access to a list of customer orders available in EVA
    */
export class OrdersWithReferenceList extends FetchablePagedList<EVA.Core.OrderWithCustomerReferences, EVA.Core.Services.ListOrdersWithCustomerReferences, EVA.Core.Services.ListOrdersWithCustomerReferences> {
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.OrderDto, EVA.Core.Services.ListOrdersWithReference, EVA.Core.Services.ListOrdersWithReferenceResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrdersWithCustomerReferences, EVA.Core.Services.ListOrdersWithCustomerReferences>>;
}
/**
    * Provides access to a list of suspended orders available in EVA
    *
    * @export
    * @class SuspendedOrderList
    * @extends {FetchablePagedList<EVA.Core.Services.ListSuspendedOrdersResponseSuspendedOrderDto, EVA.Core.Services.ListSuspendedOrders, EVA.Core.Services.ListSuspendedOrdersResponse>}
    */
export class SuspendedOrderList extends FetchablePagedList<EVA.Core.Services.ListSuspendedOrdersResponseSuspendedOrderDto, EVA.Core.Services.ListSuspendedOrders, EVA.Core.Services.ListSuspendedOrdersResponse> {
        /**
            * Fetches the list of items
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListSuspendedOrders, EVA.Core.Services.ListSuspendedOrdersResponse>>;
}

/**
    * The shopping cart module provides access to shopping cart data from the EVA back-end
    * Note that the shopping cart is bound to the current session so there is only 1 of them
    * You can regard it as the active order
    * @preferred
    */
/**
    * Provides access to the shopping cart available in EVA
    */
export class ShoppingCart extends FetchableItem<EVA.Core.OrderDto, EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse> {
        /**
            * The payment options for the order
            * @type {Payment}
            */
        payment: Payments;
        /**
            * Indicates the order/cart is a pickup order (for a single shop)
            * @type {boolean}
            */
        isPickupOrder: boolean;
        /**
            * This class wraps the current shopping cart from EVA and the operations you can perform on it.
            *
            * @return {void} This method doesn't return anything
            */
        constructor();
        /**
            * Returns if the order state 'completed' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isCompleted(): boolean;
        /**
            * Returns if the order state 'shipped' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isShipped(): boolean;
        /**
            * Returns if the order state 'paid' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isPaid(): boolean;
        /**
            * Returns if the order state 'invoiced' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isInvoiced(): boolean;
        /**
            * Returns if the order state 'cancelled' applies to the order
            * @return {boolean} Indicates the state is active
            */
        isCancelled(): boolean;
        /**
            * Returns the current open amount still to be paid for the shopping cart
            * @return {number}
            */
        getOpenAmount(): number;
        /**
            * Returns the total value of all the items in the shopping cart with VAT
            * @return {number} The value of the items in the shopping cart with VAT
            */
        getTotalAmountInTax(): number;
        /**
            * Returns the total value of all the items in the shopping cart without VAT
            * @return {number} The value of the items in the shopping cart without VAT
            */
        getTotalAmount(): number;
        /**
            * Return order lines by type
            * @return {Array<EVA.Core.OrderLineDto>} Array of order lines
            */
        getOrderLinesByType(orderLineType: number | EVA.Core.OrderLineTypes): Array<EVA.Core.OrderLineDto>;
        /**
            * Return the total amount of shipping costs
            * @return {number} The total value of the shipping costs
            */
        getTotalShippingAmount(inTax?: boolean): number;
        /**
            * Return the total amount of ShippingCosts
            * @return {number} The total value of the shipping costs
            */
        getTotalDiscountAmount(inTax?: boolean): number;
        /**
            * Return the current order amounts
            *
            * @returns {EVA.Core.OrderAmounts}
            * @memberof ShoppingCart
            */
        getOrderAmounts(): EVA.Core.OrderAmounts;
        /**
            * Returns the list of different organizations where orderline items are te be picked up
            * @return {number} The list of organizations
            */
        readonly stockOrganizationUnits: Array<any>;
        /**
            * Returns the list of different organizations where orderline items are te be picked up
            * @return {number} The list of organizations
            */
        readonly requestedDates: Array<any>;
        /**
            * Returns the discount invalid reasons
            * @return {number}
            */
        getMessages(): EVA.Core.DiscountInvalidReasons[];
        /**
            * Set the product properties to use
            * @return {void}
            */
        setProductProperties(properties?: string[]): void;
        /**
            * Returns the product properties that are active
            * @return {string[]}
            */
        getProductProperties(): string[];
        /**
            * Fetches the shopping cart details
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>} A promise resolving when the call to the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>;
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {EVA.Core.ShoppingCartResponse}  response    The response from the service call
            * @return {EVA.Core.OrderDto}              The order details
            */
        setData(response: any): EVA.Core.OrderDto;
        /**
            * Adds a product to the shopping cart
            * @param  {number|Product}                 product         Either a product id or a product class to add to the shopping cart
            * @param  {number}                         quantity        Quantity to add
            * @param  {EVA.Core.LineActionTypes}       lineActionType  Line action type. Default is 4 (delivery), 1 is for reservation
            * @return {Promise}                                        A promise resolving when the call to the back-end has completed
            */
        addProduct(product: number | Product, quantity?: number, lineActionType?: EVA.Core.LineActionTypes): Promise<IEVAServiceResponse<EVA.Core.Services.AddProductToOrder, EVA.Core.ShoppingCartResponse>>;
        /**
            * Changes an order line to a stock reservation
            * @param  {number}     orderLineId     The order line id that contains the product(s) that is/are to be reserverd
            * @param  {number}     organizationID  The shop to reserve the product at
            * @return {Promise}                    A promise resolving when the call to the back-end has completed
            */
        reserveOrderLine(orderLineId: number): Promise<{}>;
        /**
            * Changes an order line to be shipped
            * @param  {number}     orderLineId     The order line id that contains the product(s) that is/are to be reserverd
            * @return {Promise}                    A promise resolving when the call to the back-end has completed
            */
        shipOrderLine(orderLineId: number): Promise<{}>;
        /**
            * Changes an order line to be delivered
            * @param  {number}     orderLineId     The order line id that contains the product(s) that is/are to be reserverd
            * @return {Promise}                    A promise resolving when the call to the back-end has completed
            */
        deliverOrderLine(orderLineId: number): Promise<{}>;
        /**
            * Removes order lines from the shopping cart
            * @param  {number|Array<number>}       orderLineId     The identifier or array of identifiers of the order line(s) to remove from the shopping cart
            * @return {Promise}                                    A promise resolving when the call to the back-end has completed
            */
        cancelOrderLine(orderLineId: number | Array<number>): Promise<IEVAServiceResponse<EVA.Core.Services.CancelOrderLine, EVA.Core.ShoppingCartResponse>>;
        /**
            * Convenience methods to remove all instances of a product from the shopping  This is the more direct mirror call of addProduct
            * @param  {number|Product}     product     Either a product id or a product class to remove from the shopping cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        removeProduct(product: number | Product): Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>;
        /**
            * Modify the number of items for an order line
            * @param  {number}         orderLineId     The identifier of the order line to modify from the shopping cart
            * @param  {number}         quantity        The new quantity
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        modifyQuantity(orderLineId: number, quantity: number): Promise<IEVAServiceResponse<EVA.Core.Services.ModifyQuantityOrdered, EVA.Core.ShoppingCartResponse>>;
        /**
            * Clears the entire shopping basket
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>} A promise resolving when the call to the back-end has completed
            */
        empty(): Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>;
        /**
            * List the available shipping methods for the current cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        listShippingMethods(orderId: number, orderlineIds: Array<number>): Promise<IEVAServiceResponse<EVA.Core.Services.ListAvailableShippingMethods, EVA.Core.Services.ListAvailableShippingMethodsResponse>>;
        /**
            * Gets the shipping methods currently set to the cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        getShippingMethods(orderId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetShippingMethodsForOrder, EVA.Core.Services.GetShippingMethodsForOrderResponse>>;
        /**
            * Sets the pickup organiszation unit to the cart.
            * We don't know the orderId, but the session Id will do the trick
            * @return {Promise} A promise resolving when the call to the back-end has completed
            */
        setPickupOrganizationUnit(organizationUnitID: number): Promise<IEVAServiceResponse<EVA.Core.Services.SetPickupOrganizationUnit, EVA.Core.ShoppingCartResponse>>;
        /**
            * Gets the shipping methods currently set to the cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        setShippingMethod(orderId: number, orderLineId: number, shippingMethodId: number, requestDeliveryDate: Date): Promise<IEVAServiceResponse<EVA.Core.Services.SetShippingMethod, EVA.Core.ShoppingCartResponse>>;
        /**
            * Modify the number of items for an order line
            * @param  {string}         couponCode      The coupon code that needs to be added to the cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        addCouponCode(couponCode: string): Promise<IEVAServiceResponse<EVA.Core.Services.AddDiscountToOrder, EVA.Core.ShoppingCartResponse>>;
        /**
            * Add discount to an order
            * @param  {number}    discountId   The discount Id to use
            * @param  {number}    amount       The amount of discount that is required
            * @param  {string}    currencyId   The currency Id to use
            * @param  {string}    reason       (Optional) reason for giving discount
            * @return {Promise}                A promise resolving when the call to the back-end has completed
            */
        addDiscount(discountParams: {
                DiscountID?: number;
                DiscountAmount?: number;
                CurrencyID?: string;
                Reason?: string;
                OrderLines?: EVA.Core.OrderLineWithQuantity[];
                Password?: string;
                ForceCreate?: boolean;
                CouponCode?: string;
        }): Promise<IEVAServiceResponse<EVA.Core.Services.AddDiscountToOrder, EVA.Core.ShoppingCartResponse>>;
        /**
            * Retrieves the shopping cart summary information
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCartInfo, EVA.Core.Services.ShoppingCartInfoResponse>>} A promise resolving when the call to the back-end has completed
            */
        getInfo(): Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCartInfo, EVA.Core.Services.GetShoppingCartInfoResponse>>;
        /**
            * Attaches a customer to the shopping cart
            * @param  {LoggedInUser}       customer       The current user class that is to be set as the customer for the shopping cart
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        setCustomer(customer: LoggedInUser | User): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
        /**
            * Places an order for the current shopping cart contents
            * @return {Promise<Order>} A promise resolving when the call to the back-end has completed
            */
        createOrder(includePendingPayments?: boolean, includeFailedPayments?: boolean): Promise<Order>;
        /**
            * Set the shopping basket to an existing order. Removes any existing items in the shopping cart
            * @param  {number|Order}       order       Either an order id or an order class to set as the shopping cart
            * @return {Promise}                        A promise resolving when the call to the back-end has completed
            */
        setFromOrder(order: number | Order): Promise<IEVAServiceResponse<EVA.Core.Services.GetShoppingCart, EVA.Core.ShoppingCartResponse>>;
        /**
            * Sets the remarks for an order
            *
            * @param {string} remarks The remarks content
            * @returns {Promise<IEVAServiceResponse<EVA.Core.Services.SetCustomOrderData, EVA.API.EmptyResponseMessage>>}
            * @memberof Order
            */
        setRemark(remarks: string): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrder, EVA.Core.Services.GetOrderResponse>>;
}

/**
    * The product module provides access to the product data from the EVA back-end
    * @preferred
    */
export namespace products {
        function getQuantityOnHandForProducts(productIds: number[], organisationId: number): Promise<IEVAServiceResponse<EVA.Core.Services.GetQuantityOnHandForProducts, EVA.Core.Services.GetQuantityOnHandForProductsResponse>>;
        function getProductPrices(productIds: number[]): Promise<IEVAServiceResponse<EVA.Core.Services.GetProductPrices, EVA.Core.Services.GetProductPricesResponse>>;
        function getConfigurableProductsDetails(productIds: number[], includes?: string[]): Promise<IEVAServiceResponse<EVA.Core.Services.GetConfigurableProductsDetail, EVA.Core.Services.GetConfigurableProductsDetailResponse>>;
        function getProductsDetails(productIds: number[], pageConfig?: EVA.Framework.PageConfig, additionalFilters?: any): Promise<IEVAServiceResponse<EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse>>;
        function getBundleProductsForProduct(productId: number, includedFields: string[]): Promise<IEVAServiceResponse<EVA.Core.Services.GetBundleProductsForProduct, EVA.Core.Services.GetBundleProductsForProductResponse>>;
        function getBundleProductDetails(bundleProductId: number, includedFields: string[]): Promise<IEVAServiceResponse<EVA.Core.Services.GetBundleProductDetails, EVA.Core.Services.GetBundleProductDetailResponse>>;
}
/**
    * Provides access to a product available in EVA
    */
export class Product extends FetchableItem<EVA.Core.ProductDto, EVA.Core.Services.GetProductDetail, EVA.Core.Services.GetProductDetailResponse> {
        /**
            * Fetches the product details
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.Products.GetProductDetail, EVA.Core.Services.Products.GetProductDetailResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetProductDetail, EVA.Core.Services.GetProductDetailResponse>>;
        /**
            * Fetches the product configuration details
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetConfigurableProductDetail, EVA.Core.Services.GetConfigurableProductDetailResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        getConfigurationDetails(): Promise<IEVAServiceResponse<EVA.Core.Services.GetConfigurableProductDetail, EVA.Core.Services.GetConfigurableProductDetailResponse>>;
        /**
            * Retrieves the stock details for the product
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetStockDetailsForProduct, EVA.Core.Services.GetStockDetailsForProductResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        getStockDetails(): Promise<IEVAServiceResponse<EVA.Core.Services.GetStockDetailsForProduct, EVA.Core.Services.GetStockDetailsForProductResponse>>;
        /**
            * Retrieves the availability indication for the product
            * @param  {number}         quantityRequested           Quantity to check availability for. Defaults to 1
            * @param  {Array<number>}  organizationUnitIDs         An array of organisation id's to limit the availability check to
            * @param  {boolean}        fastestPickupShopOnly       Only return the fastest pickup option. Defaults to false
            * @param  {boolean}        includeAvailabilityTexts    Add availability text messages to the response. Defaults to false
            * @param  {boolean}        detailedShopInformation     Add detailed shop information to the response. Defaults to false
            * @return {Promise<Array<EVA.Core.ProductAvailabilityIndicationDto>>} A promise resolving when the fetch from the back-end has completed
            */
        getAvailability(quantityRequested?: number, organizationUnitIDs?: Array<number>, fastestPickupShopOnly?: boolean, includeAvailabilityTexts?: boolean, detailedShopInformation?: boolean): Promise<Array<EVA.Core.ProductAvailabilityIndication>>;
        getExtendedAvailability(quantityRequested: number, shippingMethodId: number, options: EVA.Core.Services.GetProductAvailabilityAvailabilityOptions, organizationUnitId?: number): Promise<{}>;
        /**
            * Retrieves the available variants (color, size, etc.) for a product
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        getVariants(limit?: number, start?: number, sortDirection?: EVA.Framework.SortDirection, sortProperty?: string, additionalFilters?: any): Promise<IEVAServiceResponse<EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse>>;
}
/**
    * Provides access to a list of products available in EVA
    */
export class ProductList extends FetchablePagedList<EVA.Core.ProductDto, EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse> {
        /**
            * The return aggregations flag
            * @type {any}
            */
        includeAggregations: boolean;
        /**
            * The return suggestions flag
            * @type {any}
            */
        includeSuggestions: boolean;
        /**
            * Returns the current list of included fields
            * @return {Array<string>} The configured list of included product fields
            */
        getIncludedFields(): Array<string>;
        /**
            * Returns the current list of included fields
            * @return {Array<string>} The configured list of included product fields
            */
        addIncludedField(fieldName: string): Array<string>;
        /**
            * Clears the configured list of included fields
            * @return {Array<string>} The configured list of included product fields
            */
        clearIncludedFields(): Array<string>;
        /**
            * Sets the aggregation state
            * @return {any} The aggregation state
            */
        setAggregationState(aggregationState: string): any;
        /**
            * Return the currently set aggregation state
            * @return {string} The aggregation state
            */
        getAggregationState(): string;
        /**
            * Sets the aggregation options
            * @return {any} The aggregation options
            */
        setAggregationOptions(aggregationOptions: any): any;
        /**
            * Return the currently set aggregation options
            * @return {any} The aggregation options
            */
        getAggregationOptions(): any;
        /**
            * Returns the current query string
            * @return {string}       The configured query string
            */
        getQuery(): string;
        /**
            * Set the query to search for
            * @param  {string} query The new query string
            * @return {string}       The configured query string
            */
        setQuery(query: string): string;
        /**
            * Return the aggregations that were returned with the product list
            * @return {any} The aggreations
            */
        getAggregations(): any;
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {EVA.Core.Services.Products.SearchProductsResponse}  response    The response from the service call
            * @return {Array<EVA.Core.ProductDto>}                      The product items for the current page
            */
        setData(response: any): EVA.Core.ProductDto[];
        /**
            * Fetches the product list item details
            * @return {Promise<IEVAServiceResponse<EVA.Core.ProductDto, EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.SearchProducts, EVA.Core.Services.SearchProductsResponse>>;
}

/**
    * The shops module provides access to the shops (organization unit type) data from the EVA back-end
    * @preferred
    */
/**
    * Provides access to a content page available in EVA
    */
export class Shop extends FetchableItem<EVA.Core.OrganizationUnitDto, EVA.Core.Services.GetOrganizationUnit, EVA.Core.Services.GetOrganizationUnitResponse> {
        /**
            * Fetches the page content
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetOrganizationUnit, EVA.Core.Services.GetOrganizationUnitResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetOrganizationUnit, EVA.Core.Services.GetOrganizationUnitResponse>>;
}
/**
    * Provides access to a list of shops available in EVA
    */
export class ShopList extends FetchablePagedList<EVA.Core.Services.ListOrganizationUnitsResponseOrganizationUnit, EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsResponse> {
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListOrganizationUnitsResponseOrganizationUnit, EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsResponse>>;
}
/**
    * Provides access to a list of shops available in EVA
    */
export class ShopProximityList extends FetchablePagedList<EVA.Core.OrganizationUnitDto, EVA.Core.Services.ListOrganizationUnitByProximity, EVA.Core.Services.ListOrganizationUnitByProximityResponse> {
        /**
            * Changes to list of shops returned to those in the closest proximity of the given location
            * @param  {number} lat The locations latitude
            * @param  {number} lng The locations longitude
            * @return {object}     The chosen location
            */
        setLocation(lat: number, lng: number): any;
        /**
            * Returns the currently chosen location to use for a proximity based shop list
            * @return {object} The currently chosen location
            */
        getLocation(): any;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.OrganizationUnitDto, EVA.Core.Services.ListOrganizationUnitByProximity, EVA.Core.Services.ListOrganizationUnitByProximityResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrganizationUnitByProximity, EVA.Core.Services.ListOrganizationUnitByProximityResponse>>;
}

export class SuggestionList extends FetchablePagedList<EVA.Core.SuggestionModel, EVA.Core.Services.GetProductSearchSuggestions, EVA.Core.Services.GetProductSearchSuggestionsResponse> {
    maxSuggestions: number;
    setQuery(query: string): string;
    setData(response: any): EVA.Core.SuggestionModel[];
    fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetProductSearchSuggestions, EVA.Core.Services.GetProductSearchSuggestionsResponse>>;
}

/**
    * The postnl module provides the means to retrieve and set a PostNL pickup location
    * @preferred
    */
export class PostNL {
        /**
            * [constructor description]
            * @param  {Order}  order The order to perform the payments for
            * @return {void}         This method doesn't return anything
            */
        constructor(order: Order | ShoppingCart);
        PostNLGetAvailablePickUpLocationsForArea(orderId: number, nw: EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaCoordinate, se: EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaCoordinate): Promise<IEVAServiceResponse<EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForArea, EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaResponse>>;
        PostNLGetAvailablePickUpLocationsForOrder(orderId: number): Promise<IEVAServiceResponse<EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForOrder, EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForOrderResponse>>;
        PostNLGetAvailableTimeframesForOrder(orderId: number, startDate: any, endDate: any): Promise<IEVAServiceResponse<EVA.Carrier.PostNL.PostNLGetAvailableTimeframesForOrder, EVA.Carrier.PostNL.PostNLGetAvailableTimeframesForOrderResponse>>;
        PostNLGetShippingOptionsForOrder(orderId: number): Promise<IEVAServiceResponse<EVA.Carrier.PostNL.PostNLGetShippingOptionsForOrder, EVA.Carrier.PostNL.PostNLGetShippingOptionsForOrderResponse>>;
        PostNLUpdateShippingOptionsForOrder(orderId: number, pickupLocationId: number, date?: Date, option?: EVA.Carrier.PostNL.TimeframeOptions): Promise<IEVAServiceResponse<EVA.Carrier.PostNL.PostNLUpdateShippingOptionsForOrder, EVA.API.EmptyResponseMessage>>;
}

/**
    * The FTH module provides access to the FTH specific call on the EVA back-end
    * @preferred
    */
/**
    * Provides access to a FTH specific functions in EVA
    */
export namespace FTH {
        /**
            * Retrieves the due data for an FTH order
            *
            * @export
            * @param {number} orderID The order to fetch the due date for
            * @returns
            */
        function getOrderDueDate(orderID: number): Promise<IEVAServiceResponse<EVA.FTH.FTHGetDueDateForOrder, EVA.FTH.FTHGetDueDateResponse>>;
        /**
            * Set the due date for an FTH order
            *
            * @export
            * @param {number} orderID The order to set the due date for
            * @param {string} dueDate The due date as an ISO8601 RFC string
            * @returns
            */
        function setOrderDueDate(orderID: number, dueDate: string): Promise<IEVAServiceResponse<EVA.FTH.FTHSetDueDateOnOrder, EVA.API.EmptyResponseMessage>>;
        function getFthWishlistDiscount(orderId: number): Promise<IEVAServiceResponse<EVA.FTH.FTHGetWishListDiscount, EVA.FTH.FTHGetWishListDiscountResponse>>;
}

/**
    * The MakeUp module provides access to advanced content management features from the EVA back-end
    * @preferred
    */
export interface MakeupGetRenderedPageByPathResponseWithContext extends EVA.Makeup.MakeupGetRenderedPageByPathResponse {
        PathContext: EVA.Makeup.PathContext;
        QueryPath: string;
}
export namespace MakeUp {
        /**
            * Provides access to a make up content map
            */
        function getPageMap(languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageMap, EVA.Makeup.MakeupGetPageMapResponse>>;
        /**
            * Provides access to a make up content page by path
            */
        function getPageByRequestPath(path: string, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageByPath, EVA.Makeup.MakeupGetPageByPathResponse>>;
        /**
            * Provides access to a make up content page by id
            */
        function getPageByID(ID: string, languageID?: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageByID, EVA.Makeup.MakeupGetPageByIdResponse>>;
        /**
            * Provides access to a rendered make up content page by path
            */
        function getRenderedPageByRequestPath(path: string, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetRenderedPageByPath, MakeupGetRenderedPageByPathResponseWithContext>>;
        function getRenderedPagesByPartialPath(path: string, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetRenderedPagesByPartialPath, EVA.Makeup.MakeupGetRenderedPagesByPartialPathResponse>>;
        /**
            * Provides access to a make up content page by id
            */
        function getRenderedPageByID(ID: string, languageID?: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetRenderedPageByID, EVA.Makeup.MakeupGetRenderedPageByIDResponse>>;
        /**
            * Provides access to create a new Makeup page
            * @param page The MakeupPageDto
            */
        function createPage(page: EVA.Makeup.PageDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageByID, EVA.Makeup.MakeupGetPageByIdResponse>>;
        /**
            * Provides access to replace a MakeUp page
            * @param id   The ID of the Makeup page
            * @param page The MakeUpPageDto
            */
        function replacePage(page: EVA.Makeup.PageDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageByID, EVA.Makeup.MakeupGetPageByIdResponse>>;
        /**
            * Convenience method to upsert a Makeup page
            * @param id   The ID of the Makeup page
            * @param page The MakeUpPageDto
            */
        function upsertPage(page: EVA.Makeup.PageDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetPageByID, EVA.Makeup.MakeupGetPageByIdResponse>>;
        /**
            * Convenience method to retrieve the latest version of a makeup page
            * @param id The ID of the Makeup page
            * @param languageID The language
            */
        function getCurrentPageVersion(id: string, languageID: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetCurrentPageVersion, EVA.Makeup.MakeupGetCurrentPageVersionResponse>>;
        /**
            * Convenience method to publish a version of a Makeup page
            * @param id The ID of the Makeup page
            * @param languageID The language
            */
        function publishPageVersion(id: string, languageID: string, version: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupPublishPageVersion, EVA.API.EmptyResponseMessage>>;
        /**
            * Provides access to delete a Makeup page
            * @param id The ID of the Makeup page
            */
        function deletePage(id: string, languageID?: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupDeletePage, EVA.API.EmptyResponseMessage>>;
        /****************
            *    BLOCKS    *
            ****************/
        function getBlockByID(ID: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetBlockByID, EVA.Makeup.MakeupGetBlockByIDResponse>>;
        function getRenderedBlockByID(ID: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetRenderedBlockByID, EVA.Makeup.MakeupGetRenderedBlockByIDResponse>>;
        /**
            * Provides access to create a new Makeup block
            * @param block The BlockDto to create
            */
        function createBlock(block: EVA.Makeup.BlockDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetBlockByID, EVA.Makeup.MakeupGetBlockByIDResponse>>;
        /**
            * Convenience method to upsert a Makeup block
            * @param id    The ID of the Makeup block
            * @param block The MakeUpBlockDto
            */
        function upsertBlock(block: EVA.Makeup.BlockDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetBlockByID, EVA.Makeup.MakeupGetBlockByIDResponse>>;
        /**
            * Provides access to replace a MakeUp block
            * @param block The BlockDto
            */
        function replaceBlock(block: EVA.Makeup.BlockDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetBlockByID, EVA.Makeup.MakeupGetBlockByIDResponse>>;
        /**
            * Provides access to delete a Makeup block
            * @param id The ID of the Makeup block
            */
        function deleteBlock(id: string, version?: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupDeleteBlock, EVA.API.EmptyResponseMessage>>;
        /**
            * Convenience method to retrieve the latest version of a makeup block
            * @param id The ID of the Makeup block
            */
        function getCurrentBlockVersion(id: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetCurrentBlockVersion, EVA.Makeup.MakeupGetCurrentBlockVersionResponse>>;
        /**
            * Convenience method to publish a version of a Makeup block
            * @param id The ID of the Makeup block
            * @param version The version to set
            */
        function publishBlockVersion(id: string, version: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupPublishBlockVersion, EVA.API.EmptyResponseMessage>>;
        /****************
            *    MENU      *
            ****************/
        function getMenuByID(ID: string, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetMenuByID, EVA.Makeup.MakeupGetMenuByIDResponse>>;
        /**
            * Provides access to create a new Makeup block
            * @param block The MenuDto to create
            */
        function createMenu(block: EVA.Makeup.MenuDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetMenuByID, EVA.Makeup.MakeupGetMenuByIDResponse>>;
        /**
            * Convenience method to upsert a Makeup block
            * @param id    The ID of the Makeup block
            * @param block The MakeUpMenuDto
            */
        function upsertMenu(block: EVA.Makeup.MenuDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetMenuByID, EVA.Makeup.MakeupGetMenuByIDResponse>>;
        /**
            * Provides access to replace a MakeUp block
            * @param menu The MenuDto
            */
        function replaceMenu(menu: EVA.Makeup.MenuDto): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetMenuByID, EVA.Makeup.MakeupGetMenuByIDResponse>>;
        /**
            * Provides access to delete a Makeup block
            * @param id The ID of the Makeup block
            */
        function deleteMenu(id: string, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupDeleteMenu, EVA.API.EmptyResponseMessage>>;
        /****************************
            *    CONFIGURATION PROFILE *
            ****************************
            */
        function getConfigurationProfile(languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetConfigurationProfile, EVA.Makeup.MakeupGetConfigurationProfileResponse>>;
        /**
            * Provides access to replace a ConfigurationProfile
            * @param profile The ConfigurationProfile
            */
        function replaceConfigurationProfile(profile: EVA.Makeup.ConfigurationProfileDto, languageID?: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetConfigurationProfile, EVA.Makeup.MakeupGetConfigurationProfileResponse>>;
        /****************************
            * SITE CONFIGURATION       *
            ****************************
            */
        function replaceSiteConfigurationSchema(siteId: number, schema: any): Promise<IEVAServiceResponse<EVA.Makeup.MakeupReplaceSiteConfigurationSchema, EVA.API.RequestMessageWithEmptyResponse>>;
        function replaceSiteConfiguration(siteId: number, languageID: string, configuration: any): Promise<IEVAServiceResponse<EVA.Makeup.MakeupReplaceSiteConfiguration, EVA.API.RequestMessageWithEmptyResponse>>;
        function getSiteConfigurationSchema(siteId: number): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetSiteConfigurationSchema, EVA.Makeup.MakeupGetSiteConfigurationSchemaResponse>>;
        function getSiteConfiguration(siteId: number, languageId: string): Promise<IEVAServiceResponse<EVA.Makeup.MakeupGetSiteConfiguration, EVA.Makeup.MakeupGetSiteConfigurationResponse>>;
}
export class MakeupListPageVersions extends FetchablePagedList<EVA.Makeup.PageVersionDto, EVA.Makeup.MakeupListPageVersions, EVA.Makeup.MakeupListPageVersionsResponse> {
        /**
            * Returns the current page identifier
            * @return {string}       The page identifier
            */
        getPageID(): string;
        /**
            * Set the make up page identifier
            * @param  {string} page_id The page identifier
            * @return {string}         The currently page identifier
            */
        setPageID(page_id: string): string;
        /**
            * Set the make up page language
            * @param  {string} page_id The page language
            * @return {string}         The currently page language
            */
        setLanguageID(languageID: string): string;
        /**
            * Returns the current page language
            * @return {string}       The page language
            */
        getLanguageID(): string;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Makeup.MakeupListPageVersions, EVA.Makeup.MakeupListPageVersionsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Makeup.MakeupListPageVersions, EVA.Makeup.MakeupListPageVersionsResponse>>;
}
export class MakeupListBlocks extends FetchablePagedList<EVA.Makeup.BlockDto, EVA.Makeup.MakeupListBlocks, EVA.Makeup.MakeupListBlocksResponse> {
        /**
            * Returns the current requested block type
            * @return {string}       The block type
            */
        getType(): string;
        /**
            * Set the block type to retrieve
            * @param  {string} type The new block type
            * @return {string}       The currently set block type
            */
        setType(type: string): string;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Makeup.MakeupListBlocks, EVA.Makeup.MakeupListBlocksResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Makeup.MakeupListBlocks, EVA.Makeup.MakeupListBlocksResponse>>;
}
export class MakeupListBlockVersions extends FetchablePagedList<EVA.Makeup.BlockDto, EVA.Makeup.MakeupListBlockVersions, EVA.Makeup.MakeupListBlockVersionsResponse> {
        /**
            * Returns the current block identifier
            * @return {string}       The block identifier
            */
        getBlockID(): string;
        /**
            * Set the make up block identifier
            * @param  {string} block_id The block identifier
            * @return {string}         The currently block identifier
            */
        setBlockID(block_id: string): string;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Makeup.MakeupListBockVersions, EVA.Makeup.MakeupListBlockVersionsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Makeup.MakeupListBlockVersions, EVA.Makeup.MakeupListBlockVersionsResponse>>;
}
export class MakeupListMenus extends FetchablePagedList<EVA.Makeup.MenuDto, EVA.Makeup.MakeupListMenus, EVA.Makeup.MakeupListMenusResponse> {
        /**
            * Returns the current language identifier
            * @return {string} The language identifier
            */
        getLanguageID(): string;
        /**
            * Set the language identifier
            * @param  {string} language The language identifier
            */
        setLanguageID(languageID: string): string;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Makeup.MakeupListMenus, EVA.Makeup.MakeupListMenusResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Makeup.MakeupListMenus, EVA.Makeup.MakeupListMenusResponse>>;
}

/**
    * The applications module provides access to the applications data from the EVA back-end
    * @preferred
    */
/**
    * Provides access to a babylon binary blobs in EVA
    */
export class Blob extends FetchableItem<EVA.Blobs.BlobDto, EVA.Blobs.GetBlobInfo, EVA.Blobs.GetBlobInfoResponse> {
        /**
            * Convenience method to build a blob image URL
            * @param  {string} guid        The blob guid
            * @param  {number} width       The output image width
            * @param  {number} height      The output image height
            * @param  {string} type        The image type (ie. png, jpg, etc)
            *
            * @return {string}             An image URL
            */
        static getImageUrl(guid: string, width?: number, height?: number, format?: string): string;
        /**
            * Sets the category to retrieve the blob info for
            * @param  {string} category    The blob category
            * @return {void}               This method doesn't return anything
            */
        setCategory(category: string): void;
        /**
            * Sets the original name to retrieve the blob info for
            * @param  {string} original name    The blob original name
            * @return {void}               This method doesn't return anything
            */
        setOriginalName(originalName: string): void;
        fetch(): Promise<IEVAServiceResponse<EVA.Blobs.GetBlobInfo, EVA.Blobs.GetBlobInfoResponse>>;
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {RES} response The response from the service call
            * @return {T}            The item details
            */
        setData(response: any): EVA.Blobs.BlobDto;
        create(newBlobInfo: EVA.Blobs.StoreBlob): Promise<IEVAServiceResponse<EVA.Blobs.GetBlobInfo, EVA.Blobs.GetBlobInfoResponse>>;
        createEmpty(newBlobInfo: EVA.Blobs.CreateBlob): Promise<IEVAServiceResponse<EVA.Blobs.CreateBlob, string>>;
        createEmptyBlob(newBlobInfo: EVA.Blobs.CreateBlob): Promise<IEVAServiceResponse<EVA.Blobs.CreateBlob, EVA.Blobs.CreateBlobResponse>>;
        getUploadUrl(guid: string): string;
        process(imageDataBase64: string, type?: string): Promise<IEVAServiceResponse<EVA.Blobs.ProcessDocument, EVA.Blobs.ProcessDocumentResponse>>;
        destroy(): Promise<IEVAServiceResponse<EVA.Blobs.DeleteBlob, EVA.API.EmptyResponseMessage>>;
}

export namespace Barcodes {
    function parseBarcode(barcode: string): Promise<EVA.Core.Services.ParseBarcodeResponse>;
}

/**
    * This module provides methods for Addresses, setting / updating addresses on specific
    * objects like customer  and order are done directly on those objects
    *
    * @preferred
    */
export class AddressBook extends FetchablePagedList<EVA.Core.Services.AddressBookDto, EVA.Core.Services.ListAddressBook, EVA.Core.Services.ListAddressBookResponse> {
        static setDefaultBillingAddress(id: number): Promise<IEVAServiceResponse<EVA.Core.Services.SetDefaultBillingAddress, EVA.API.RequestMessageWithEmptyResponse>>;
        static setDefaultShippingAddress(id: number): Promise<IEVAServiceResponse<EVA.Core.Services.SetDefaultShippingAddress, EVA.API.RequestMessageWithEmptyResponse>>;
        static createItem(address: EVA.Core.AddressDto, description?: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreateAddressBookItem, EVA.API.CreateResponse>>;
        static updateItem(id: number, address: EVA.Core.AddressDto, description?: string): Promise<IEVAServiceResponse<EVA.Core.Services.UpdateAddressBookItem, EVA.API.EmptyResponseMessage>>;
        static deleteItem(id: number): Promise<IEVAServiceResponse<EVA.Core.Services.DeleteAddressBookItem, EVA.API.EmptyResponseMessage>>;
        /**
            * Creates an instance of AddressBook.
            *
            * @param {number} [limit=15] The number of address book items to return
            * @param {number} [start=0] The number of address book items to skip
            * @param {EVA.Framework.SortDirection} [sortDirection=0] The sort direction for the addresses
            * @param {string} [sortProperty=null] The property to sort on
            * @memberof AddressBook
            */
        constructor(limit?: number, start?: number, sortDirection?: EVA.Framework.SortDirection, sortProperty?: string);
        /**
            * Sets the user to retrieve the address list for.
            * Only employees may fetch and update for other users
            *
            * @param {number} userId The user identifier
            * @returns
            * @memberof AddressBook
            */
        setUserId(userId: number): number;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListAddressBook, EVA.Core.Services.ListAddressBookResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListAddressBook, EVA.Core.Services.ListAddressBookResponse>>;
}
export namespace Addresses {
        /**
            * Wrapper class for Address responses, since this is not a fetchable item
            * it's just a plain object
            */
        class Address {
                data: EVA.Core.AddressDto;
                setData(response: any): EVA.Core.AddressDto;
        }
        /**
            * Perform a lookup using zipcode and housenumber, resolve with an Address object
            *
            * @param  {string}  zipCode     zipcode to lookup
            * @param  {string}  houseNumber housenumber to lookup
            * @return {Promise}             [description]
            */
        function lookup(zipCode: string, houseNumber: string): Promise<Address>;
        /**
            * Request a list of available countries for a user to create addresses with
            * @return {Promise}
            */
        function getAvailableCountries(): Promise<EVA.Core.Services.CountryDto[]>;
        /**
            * Perform an address search using a single text string, responds with textual suggestions.
            * To get the details of the suggestion (city/street etc) a additional call
            * needs to be made to getAddressSuggestionDetails()
            *
            * @param {string}      query       The search query
            * @return {Promise}    array of found suggestions
            */
        function getAddressSuggestions(query: string): Promise<EVA.Core.AddressSuggestion[]>;
        /**
            * Retrieve the details of a suggestion
            *
            * @param {EVA.Core.AddressSuggestion}      suggestion      the address suggestion, can be retrieved using the getAddressSuggestions() function
            * @return {Promise}    the details of the address suggestion
            */
        function getAddressSuggestionDetails(suggestion: EVA.Core.AddressSuggestion): Promise<EVA.Core.AddressSuggestionDetails>;
}

export namespace UserPhoneNumbers {
    function create(phoneNumber: string, type: EVA.Core.PhoneNumberTypes, description?: string, isPrimary?: boolean): Promise<EVA.API.CreateResponse>;
    function update(id: number, phoneNumber: string, type: EVA.Core.PhoneNumberTypes, description?: string): Promise<EVA.API.RequestMessageWithEmptyResponse>;
    function remove(id: number): Promise<EVA.API.RequestMessageWithEmptyResponse>;
    function makePrimary(id: number): Promise<EVA.API.RequestMessageWithEmptyResponse>;
    function list(userId: number): Promise<EVA.Core.Services.GetUserPhoneNumbersResponse>;
}

/**
    * The CMS Page module provides access to content management pages from the EVA back-end * @preferred
    */
/**
    * Provides access to a content menu available in EVA
    */
export class Station extends FetchableItem<EVA.Core.StationDto, EVA.Core.Services.GetStation, EVA.Core.Services.GetStationResponse> {
        /**
            * Fetches the page content
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.GetStation, EVA.Core.Services.GetStationResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.GetStation, EVA.Core.Services.GetStationResponse>>;
}
/**
    * Provides access to a list of stations for an organisation available in EVA
    */
export class StationList extends FetchablePagedList<EVA.Core.StationDto, EVA.Core.Services.ListStationsForOrganizationUnit, EVA.Core.Services.ListStationsForOrganizationUnitResponse> {
        /**
            * Sets the organization id to retrieve the station list for
            * @param  {number} organizationId      The organization identifier
            * @return {void}                       This method doesn't return anything
            */
        setOrganizationId(organizationId: number): void;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.StationDto, EVA.Core.Services.ListStationsForOrganizationUnit, EVA.Core.Services.ListStationsForOrganizationUnitResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListStationsForOrganizationUnit, EVA.Core.Services.ListStationsForOrganizationUnitResponse>>;
}

export namespace Cultures {
    function getApplicationCultures(): Promise<Array<EVA.PIM.Core.ListApplicationContentCulture>>;
}

export namespace Currencies {
    function getAvailableCurrencies(): Promise<Array<EVA.Core.CurrencyDto>>;
    function setOrderCurrency(currencyID: string, orderID: number): Promise<{}>;
}

export namespace Availability {
    function getAvailabilityForProductSet(products: Array<EVA.Core.ProductQuantityDto>, organizationUnitIDs?: Array<number>, fastestPickupShopOnly?: boolean, includeAvailabilityTexts?: boolean, detailedShopInformation?: boolean): Promise<Array<EVA.Core.ProductAvailabilityIndication>>;
    function getStockAvailabilityEstimateForProducts(organizationUnitId: number, products: EVA.Core.Services.GetStockAvailabilityEstimateForProductsProduct[]): Promise<EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseProduct[]>;
    function getProductAvailabilty(products: EVA.Core.Services.GetProductAvailabilityProduct[], options: EVA.Core.Services.GetProductAvailabilityAvailabilityOptions, organizationUnitID?: number): Promise<{}>;
}

export namespace Functionalities {
    function getSupportedFunctionalities(): Promise<string[]>;
}

export function addPushNotificationDevice(deviceToken: string, deviceOS: string, mobileAppID: string, backendSystemID: string): Promise<IEVAServiceResponse<EVA.Core.Services.AddPushNotificationDevice, EVA.API.EmptyResponseMessage>>;
export function removePushNotificationDevice(deviceToken: string, backendSystemID?: string): Promise<IEVAServiceResponse<EVA.Core.Services.RemovePushNotificationDevice, EVA.API.EmptyResponseMessage>>;

export namespace Webshop {
        function sendContactFrom(type: string, properties: any): Promise<EVA.Core.Services.SendContactForm>;
}
export class WebShopList extends FetchablePagedList<EVA.Core.OrganizationUnitDto, EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsResponse> {
        /**
            * Returns the current page identifier
            * @return {string}       The page identifier
            */
        getPageID(): string;
        /**
            * Set the make up page identifier
            * @param  {string} page_id The page identifier
            * @return {string}         The currently page identifier
            */
        setPageID(page_id: string): string;
        /**
            * Fetches the list of items
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsByTypeResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(): Promise<IEVAServiceResponse<EVA.Core.Services.ListOrganizationUnits, EVA.Core.Services.ListOrganizationUnitsResponse>>;
}

export namespace Wishlist {
    function create(name: string, data?: any): Promise<EVA.Core.Services.CreateWishListResponse>;
    function get(orderId: number, accessToken?: string, showUnconfirmedFundings?: boolean, productProperties?: string[]): Promise<EVA.Core.Services.GetWishListResponse>;
    function getForUser(userId: number, showUnconfirmedFundings?: boolean, productProperties?: string[], showClosedOrders?: boolean): Promise<EVA.Core.Services.GetWishListsForUserResponse>;
    function cancel(orderId: number): Promise<EVA.API.EmptyResponseMessage>;
    function update(orderId: number, sortedLineIds: number[], name?: string, data?: any): Promise<EVA.API.EmptyResponseMessage>;
    function addProduct(orderId: number, productId: number, quanity?: number, single?: boolean): Promise<EVA.Core.Services.AddProductToWishListResponse>;
    function removeProduct(orderId: number, lineId: number, quanity?: number): Promise<EVA.API.EmptyResponseMessage>;
    function addWishlistProductToOrder(orderId: number, accessToken: string, lines?: EVA.Core.Services.AddWishListProductToOrderLine[], lineActionType?: EVA.Core.LineActionTypes, name?: string, remark?: string): Promise<EVA.Core.SimpleShoppingCartResponse>;
    function createPayment(orderId: number, accessToken: string, paymentMethodCode: string, properties: any, amount?: number, name?: string, remark?: string, lines?: EVA.Core.Services.CreateWishListPaymentLine[]): Promise<EVA.Core.Services.CreateWishListPaymentResponse>;
    function setWishListOrderLineData(orderId: number, orderLineId: number, isHidden: boolean): Promise<{}>;
    function updateWishlistFunding(orderId: number, name: string, remark: string): Promise<{}>;
    function createWishListPaymentFromShoppingCart(wishlistId: number, cartId: number, code: string, name: string, remark: string, properties: any, token?: string): Promise<{}>;
}

/**
    * The giftwrap module provides access to the Giftwrap specific calls on the EVA back-end
    * @preferred
    */
/**
    * Provides access to a Rituals specific functions in EVA
    */
export namespace Giftwrap {
        function getGiftWrappingOptionsForOrder(requestData: EVA.Core.Services.GetGiftWrappingOptionsForOrder): Promise<IEVAServiceResponse<EVA.Core.Services.GetGiftWrappingOptionsForOrder, EVA.Core.Services.GetGiftWrappingOptionsForOrderResponse>>;
        function setGiftWrappingOptionsOnOrder(requestData: EVA.Core.Services.SetGiftWrappingOptionsOnOrder): Promise<IEVAServiceResponse<EVA.Core.Services.SetGiftWrappingOptionsOnOrder, EVA.API.RequestMessageWithEmptyResponse>>;
}

/**
    * The Url Rewrite module provides access to Url Rewrites from the EVA back-end
    *
    * @preferred
    */
export namespace UrlRewrite {
        /**
            * Check if a certain request path needs rewriting
            * @return {Promise}    A promise resolving when the call to the back-end has completed
            *
            */
        function rewrite(requestPath: string): Promise<IEVAServiceResponse<EVA.Core.Services.RewriteUrl, EVA.Core.Services.RewriteUrlResponse>>;
}

/**
    * The base module declares reusable base classes for items, lists, etc.
    * @preferred
    */
export interface IPageInfo {
        currentPageNumber: number;
        totalNumberOfPages: number;
        totalNumberOfItems: number;
}
/**
    * Provides access to an item available on the EVA back-end
    */
export class FetchableItem<T, REQ, RES> {
        /**
            * The item detail data. This is available after a fetch from the back-end.
            * It is exposed globally so clients can bind and watch it directly for updates
            * @type {T}
            */
        data: T;
        /**
            * The unique identifier of the item. Used when retrieving an exsting item from the back-end.
            * Defaults to a number but some items use string based identifiers
            * @type {number | string}
            */
        protected _id: number | string;
        /**
            * This class wraps an item from EVA and the operations you can perform on it.
            * You should supply the item identifier when creating an instance of this class
            *
            * @param  {number | string}    id      The identifier of the item to retrieve
            * @return {void}                       This method doesn't return anything
            */
        constructor(id?: number | string);
        /**
         * Set for the id of the fetchable item. This can be overriden in a subclass so
         * additional behaviour can be implemented when setting the id
         *
         * @param  {number | string}      id An item identifier
         * @return {void}                    This item doesn't return anything
         */
        id: number | string;
        /**
            * Returns the current item identifier
            * @return {number | string} An item identifier
            */
        getId(): number | string;
        /**
            * Returns the current item details. Only available after a successful fetch
            * The details are also exposed direct as the .data attribute for easy binding
            * @return {T} The item details
            */
        getData(): T;
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {RES} response The response from the service call
            * @return {T}            The item details
            */
        setData(response: any): T;
        /**
            * Fetches the item details from the EVA back-end
            * @param  {string}  serviceName The name of the EVA Service to call
            * @param  {REQ}     requestData The request data for service call
            * @param  {string}  path        The request path (rest-like) if not using post message
            * @return {Promise<IEVAServiceResponse<REQ, RES>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(serviceName: string, requestData: REQ, path?: string, method?: EXMLHttpRequestMethod): Promise<IEVAServiceResponse<REQ, RES>>;
}
/**
    * Provides access to a pageable list available on the EVA back-end
    */
export class FetchablePagedList<T, REQ, RES> {
        /**
            * The page item data. This is available after a fetch from the back-end.
            * It is exposed globally so clients can bind and watch it directly for updates
            * @type {Arra<T>}
            */
        data: Array<T>;
        /**
            * The page configuration instance used to instruct the EVA back-end which
            * data to fetch
            * @type {EVA.Framework.PageConfig}
            */
        protected pageConfig: EVA.Framework.PageConfig;
        /**
            * The current page for which the data is available
            * Only available after fetch has been called
            * @type {number}
            */
        protected currentPageNumber: number;
        /**
            * The total number of pages in the list
            * Only available after fetch has been called
            * @type {number}
            */
        protected totalNumberOfPages: number;
        /**
            * The total number of items in the list
            * Only available after fetch has been called
            * @type {number}
            */
        protected totalNumberOfItems: number;
        /**
            * The list filter applied to the list
            * This may differ from the list of requested filter in the page configuration
            * Only available after fetch has been called
            * @type {any}
            */
        protected appliedFilter: any;
        /**
            * This class wraps a paged result list from EVA and the operations you can perform on it.
            * You can optionally supply page configuration values to start somewhere other then
            * the start of the list
            *
            * @param  {number}                         start           The item to start the list at. Defaults to 0 and is a 0-based index.
            * @param  {number}                         limit           The page size limit. Defaults to 15
            * @param  {EVA.Framework.SortDirection}  sortDirection   The sorting direction for the list. Defaults to ascending
            * @return {void}                                           This method doesn't return anything
            */
        constructor(limit?: number, start?: number, sortDirection?: EVA.Framework.SortDirection, sortProperty?: string);
        /**
            * Returns the current page size limit
            * @return {number}       The configured page size limit
            */
        getLimit(): number;
        /**
            * Set the page size limit
            * @param  {number} limit The new page size limit
            * @return {number}       The configured page size limit
            */
        setLimit(limit: number): number;
        /**
            * Return the current starting item for the list
            * @return {number}       The configured starting point for the list
            */
        getStart(): number;
        /**
            * Set the starting point for the list
            * @param  {number} start The new starting point for the list
            * @return {number}       The configured starting point for the list
            */
        setStart(start: number): number;
        /**
            * Return the current property being sorted on
            * Can be undefined which means the server decides
            * @return {string}      The configured sorting property
            */
        getSortProperty(): string;
        /**
            * Set the property to sort on
            * @param  {string} name The new sorting property
            * @return {string}      The configured sorting property
            */
        setSortProperty(name: string): string;
        /**
            * Returns the current sort direction
            * @return {string}      The configured sorting property
            */
        getSortDirection(): EVA.Framework.SortDirection;
        /**
            * Sets the direction to sort the list on
            * @param  {EVA.Framework.SortDirection} direction The new sort direction
            * @return {string}      The configured sorting property
            */
        setSortDirection(direction: EVA.Framework.SortDirection): EVA.Framework.SortDirection;
        /**
            * Set the filter that is to be applied to the list
            * @param  {any} filter The new filter structure
            * @return {any}        The configured filter
            */
        setFilter(filter: any): any;
        /**
            * Returns the current filter for the list
            * @return {any}        The configured filter
            */
        getFilter(): any;
        /**
            * Returns the current filter applied for the list
            * Only after available after fetch has been called
            * The applied filter can differ from the requested filter depending on how
            * the EVA back-end and its products are configured
            * @return {any}        The applied filter
            */
        getAppliedFilter(): any;
        /**
            * Returns all the current page configuration parameters
            * These determine which part of the list data is returned
            * @return {EVA.Framework.PageConfig} The current page configuration
            */
        getPageConfiguration(): EVA.Framework.PageConfig;
        /**
            * Sets all the current page configuration parameters at once
            * These determine which part of the list data is returned
            * @param  {EVA.Framework.PageConfig} pageConfig The page configuration details
            * @return {EVA.Framework.PageConfig}            The new page configuration details
            */
        setPageConfiguration(pageConfig: EVA.Framework.PageConfig): EVA.Framework.PageConfig;
        /**
            * Returns the current page information which entails the current page, total number of pages and total number of items
            * @return {IPageInfo}  The current page information
            */
        getPageInfo(): IPageInfo;
        /**
            * Returns the current page item details. Only available after a successful fetch
            * The details are also exposed direct as the .data attribute for easy binding
            * @return {Array<T>} An array of item details
            */
        getData(): T[];
        /**
            * Sets the current item details using the fetched service response.
            * Extending classes should override this method to pull the details from response
            * @param  {RES}        response    The response from the service call
            * @return {Array<T>}               The item details
            */
        setData(response: any): T[];
        /**
            * Fetches the list of items from the EVA back-end
            * @param  {string}  serviceName The name of the EVA Service to call
            * @param  {REQ}     requestData The request data for service call
            * @return {Promise<IEVAServiceResponse<REQ, RES>>} A promise resolving when the fetch from the back-end has completed
            */
        fetch(serviceName: string, requestData: REQ, path?: string, method?: EXMLHttpRequestMethod): Promise<IEVAServiceResponse<REQ, RES>>;
}

/**
    * The payments module provides the means to pay for an order using an online payment provider
    * @preferred
    */
/**
    * Provides access to order payment methods available in EVA
    */
export class Payments {
        /**
            * [constructor description]
            * @param  {Order}  order The order to perform the payments for
            * @return {void}         This method doesn't return anything
            */
        constructor(order: Order | ShoppingCart);
        /**
            * Returns the list of available payment methods
            * @return {Promise<IEVAServiceResponse<EVA.Core.GetAvailablePaymentMethods, EVA.Core.GetAvailablePaymentMethodsResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        getAvailableMethods(): Promise<IEVAServiceResponse<EVA.Core.Services.GetAvailablePaymentMethods, EVA.Core.Services.GetAvailablePaymentMethodsResponse>>;
        getMultiSafePaymentGateWays(orderId: string | number): Promise<IEVAServiceResponse<EVA.Payment.MultiSafepay.GetMultiSafepayGateways, EVA.Payment.MultiSafepay.GetMultiSafepayGatewaysResponse>>;
        getMollyPaymentGateWays(): Promise<IEVAServiceResponse<EVA.Payment.Mollie.ListMollieGateways, EVA.Payment.Mollie.ListMollieGatewaysResponse>>;
        getBuckarooPaymentGateWays(): Promise<IEVAServiceResponse<EVA.Payment.Buckaroo.ListBuckarooGateways, EVA.Payment.Buckaroo.ListBuckarooGatewaysResponse>>;
        /**
            * Retuns the list of user cards available
            * @return {Promise<IEVAServiceResponse<EVA.Payment.UserCard.GetUserCardsForUser, EVA.Payment.UserCard.GetUserCardsForUserResponse>>} A promise resolving when the fetch from the back-end has completed
            */
        listUserCards(userID: number): Promise<IEVAServiceResponse<EVA.Payment.UserCard.GetUserCardsForUser, EVA.Payment.UserCard.GetUserCardsForUserResponse>>;
        /**
            * Pay for the order using a PIN terminal from ADYEN (shop/employee only)
            * @param  {string}  merchantCode     The ADYEN merchant code to use
            * @param  {number}  amount           The amount to pay
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithAdyen(merchantCode: string, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            *
            * @param {string} merchantAccount The Adyen merchant account to use.
            * @param {number} adyenChannel    The adyen channel to use. Possible values are: 1 = Web, 2 = iOS, 3 = Android.
            * @param {string} origin          The origin URL
            * @param {string} returnUrl       The return URL
            * @param {string} token           The token to use
            * @param {number} amount          The amount of money to pay
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithAdyenCheckout(merchantAccount: string, adyenChannel: 1 | 2 | 3, origin: string, returnUrl: string, token: string, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        payWithAdyenCheckoutSession(merchantAccount: string, adyenChannel: 1 | 2 | 3, origin: string, returnUrl: string, token: string, amount: number, version?: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        payWithAdyenHostedPaymentPages(merchantAccount: string, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        payWithMultiSafePay(method: string, returnUrl: string, amount?: number): any;
        payWithMollie(method: string, returnUrl: string, amount?: number, issuer?: string): any;
        payWithBuckaroo(paymentTypeId: number, method: string, returnUrl: string, amount?: number, issuer?: string): any;
        /**
            * Pay for the order using iDEAL
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @param  {string}  idealBankName The name of the bank for the ideal payment
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithIdeal(returnUrl: string, idealBankName: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using PayPal
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithPaypal(returnUrl: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using a MasterCard/Eurocard credit card
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithMasterCard(returnUrl: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using an American Express credit card
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithAmericanExpress(returnUrl: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using a Visa credit card
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithVisa(returnUrl: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for an order with an insurance card (HFS Waardebrief)
            * @param {string}  referenceNumber The reference number for the credit payment
            * @param {string}  policyNumber    The policy number for the credit payment
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithInsuranceCreditPayment(referenceNumber: string, policyNumber: string): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for an order with a user card
            * @param {number}  userId          The id of the user
            * @param {number}  userCardId      The id of the userCardId
            * @param {amount}  amount          The amount that will be charged from the usercard
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithUserCard(paymentMethodId: number, userId: number, userCardId: number, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for an order with Freebees
            * @param {number}  userId          The id of the user
            * @param {number}  userCardId      The id of the userCardId
            * @param {amount}  amount          The amount that will be charged from the usercard
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithFreebees(cardNumber: string, pin?: string, amount?: number, pinType?: "pin" | "password"): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        payWithEvaPay(baseUrl: string, sendEmail: boolean, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Get the balance of the usercard
            *
            * @param {number} cardId
            * @param {string} currencyId
            * @return {Promise<IEVAServiceResponse<EVA.Payment.UserCard.GetUserCardBalance, EVA.Payment.UserCard.GetUserCardBalanceResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        getUserCardBalance(cardId: number, currencyId?: string): Promise<IEVAServiceResponse<EVA.Payment.UserCard.GetUserCardBalance, EVA.Payment.UserCard.GetUserCardBalanceResponse>>;
        /**
            * Get the balance of a gifcard
            *
            * @param {string} cardId
            * @param {string} cardPin
            * @param {string} barcode
            * @param {string} cardType
            * @return {Promise<IEVAServiceResponse<EVA.Core.Services.CardBalanceCheck, EVA.EVA.Core.Services.CardBalanceCheckResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        cardBalanceCheck(cardId: string, cardPin?: string, barcode?: string, cardType?: string): Promise<IEVAServiceResponse<EVA.Core.Services.CardBalanceCheck, EVA.Core.Services.CardBalanceCheckResponse>>;
        cancelPendingUserCardPayment(paymentTransactionID: number): Promise<IEVAServiceResponse<EVA.Payment.UserCard.CancelPendingUserCardPayment, EVA.API.EmptyResponseMessage>>;
        /**
            * Pay for an order with AfterPay
            * @param  {any}  properties     Optional additional properties to send
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithAfterPay(properties?: any): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Finalize a payment (usercard needs this)
            * @param {string}  paymentTransactionID    The payment transaction that is to be finalized
            * @return {Promise<IEVAServiceResponse<EVA.Core.FinalizePayment, EVA.Core.FinalizePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        finalizePayment(paymentTransactionID: number, amount: number): Promise<IEVAServiceResponse<EVA.Core.Services.FinalizePayment, EVA.Core.Services.FinalizePaymentResponse>>;
        /**
            * Pay for an order with a manual payment
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithManualPayment(): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using a PIN terminal (shop/employee only)
            * @param  {string}  stationId     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithPIN(stationId: string, amountGiven: number): Promise<IEVAServiceResponse<EVA.Pin.StartTransaction, EVA.Pin.StartTransactionResponse>>;
        /**
            * Abort a payment for the order using a PIN terminal (shop/employee only)
            * @param  {string}  stationId     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Pin.CreatePinPayment, EVA.Pin.CreatePinPaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        abortPIN(stationId: string): Promise<IEVAServiceResponse<EVA.Pin.AbortTransaction, EVA.Pin.AbortTransactionResponse>>;
        /**
            * Pay for the order using a Cash drawer (shop/employee only)
            * @parm   {Order}   order         The order that is to be paid
            * @param  {string}  returnUrl     The URL to return to when the payment has completed
            * @return {Promise<IEVAServiceResponse<EVA.Payment.Cash.MakeCashPayment, EVA.Payment.Cash.MakeCashPaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithCash(stationId: string, amountGiven: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for an order with a Media Markt method
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithMediaMarktPayment(): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
        /**
            * Pay for the order using Intersolve giftcards
            * @param  {string}  cardNumber     The number on the Intersolve giftcard
            * @param  {string}  [pin]          A giftcard optionally has a PIN, provide when on the card to use the card
            * @return {Promise<IEVAServiceResponse<EVA.Core.CreatePayment, EVA.Core.CreatePaymentResponse>>}   A promise resolving when the fetch from the back-end has completed
            */
        payWithIntersolve(returnUrl: string, cardNumber: string, pin?: string, amountGiven?: number): Promise<IEVAServiceResponse<EVA.Core.Services.CreatePayment, EVA.Core.Services.CreatePaymentResponse>>;
}

/**
    * This method makes the EVA SDK ready for use and configures access to your back-end datastore
    * @param  {string}     authenticationToken   Your application authentication token
    * @param  {number}     applicationId         The application identifier for your store
    * @param  {string}     endPointURL           The URL for the EVA back-end store you want to use
    * @return {void}                             This method doesn't return anything
    */
export function init(authenticationToken: string, applicationId: number, endPointURL?: string): void;
/**
    * Expose the settings manager and the means to override the XMLHttpRequest provider
    */
/**
    * These are the data providers availabe in eva
    */


/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.API.SignalR {
  
  export class SendMagicLink extends EVA.API.RequestMessageGeneric<EVA.API.SignalR.SendMagicLinkResponse> {
    EmailAddress : string; 
    RedirectUrl : string; 
  }
  
  export class SendMagicLinkResponse extends EVA.API.ResponseMessage {
    RequestToken : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.API {
  
  export class RequestMessage {
  }
  
  export class CreateRequest<TModel> extends EVA.API.RequestMessage {
    ToCreate : TModel; 
  }
  
  export class ResponseMessage {
    Error : EVA.API.ServiceError; 
    Exception: EVA.API.ServiceExceptionResult;
  }
  
  export class CreateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class DeleteRequest extends EVA.API.RequestMessage {
    ID : number; // Int32
  }
  
  export class EmptyResponseMessage extends EVA.API.ResponseMessage {
  }
  
  export class RequestMessageGeneric<TResponse extends ResponseMessage> extends EVA.API.RequestMessage implements EVA.API.IRequestRespondsAs<TResponse> {
  }
  
  export class FilteredPagedResultRequest<TFilter, TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<TFilter>; 
  }
  
  export class GetListResponse<TResult> extends EVA.API.ResponseMessage {
    Result : TResult[]; 
  }
  
  export class GetRequest extends EVA.API.RequestMessage {
    ID : number; // Int32
  }
  
  export class GetRequestGeneric<T extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<T> {
    ID : number; // Int32
  }
  
  export class GetResponse<TResult> extends EVA.API.ResponseMessage {
    Result : TResult; 
  }
  
  export interface IRequestRespondsAs<TResponse extends EVA.API.ResponseMessage> {
  }
  
  export class PagedRequestMessage<TFilter, TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    InitialPageConfig : EVA.Framework.PageTokenConfigGeneric<TFilter>; 
    PageToken : string; 
  }
  
  export class PagedResponseMessage<T> extends EVA.API.ResponseMessage {
    Results : T[]; 
    PreviousPageToken : string; 
    NextPageToken : string; 
  }
  
  export class PagedResultRequest<TResponse extends EVA.API.ResponseMessage> extends EVA.API.RequestMessageGeneric<TResponse> {
    PageConfig : EVA.Framework.PageConfig; 
  }
  
  export class PagedResultResponse<TModel> extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<TModel>; 
  }
  
  export enum PipelinePriorities {
    NotSpecified = 0,
    Unimportant = 1,
    RarelyExecuted = 10,
    OftenExecuted = 100,
    NearlyAlwaysExecuted = 1000,
    ExecutedEveryRequest = 10000,
    HighPriority = 100000,
    DoesSetup = 1000000,
    FirstToExecute = 2147483647,
    LastToExecute = -2147483648,
  }
  
  export class RequestMessageWithEmptyResponse extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
  }
  
  export class RequestMessageWithResourceResponse extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class ResourceResponseMessage extends EVA.API.ResponseMessage {
    Url : string; 
  }
  
  export class ServiceError {
    Message : string; 
    Type : string; 
    Code : string; 
    RequestID : string; 
  }
  
  export class ServiceExceptionResult {
    ExceptionMessage : string; 
    Type : string; 
    ErrorCode : string; 
    RequestID : string; 
  }
  
  export class UpdateRequest<TModel> extends EVA.API.RequestMessage {
    ToUpdate : TModel; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Admin {
  
  export class AdminCreateModule extends EVA.API.RequestMessageGeneric<EVA.Admin.AdminCreateModuleResponse> {
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    Data : any; 
  }
  
  export class AdminCreateModuleResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class AdminDeleteModule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class AdminGetAllModules extends EVA.API.RequestMessageGeneric<EVA.Admin.AdminGetAllModulesResponse> {
  }
  
  export class AdminGetAllModulesResponse extends EVA.API.ResponseMessage {
    Modules : EVA.Admin.AdminGetAllModulesResponseModuleDto[]; 
  }
  
  export class AdminGetModuleByID extends EVA.API.RequestMessageGeneric<EVA.Admin.AdminGetModuleByIDResponse> {
    ID : number; // Int32
  }
  
  export class AdminGetModuleByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    Data : any; 
  }
  
  export class AdminListModules extends EVA.API.RequestMessageGeneric<EVA.Admin.AdminListModulesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Admin.ListModulesFilter>; 
  }
  
  export class AdminListModulesResponse extends EVA.API.PagedResultResponse<EVA.Admin.AdminListModulesResponseModuleDto> {
  }
  
  export class AdminUpdateModule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    Data : any; 
  }
  
  export class AdminUpdateModuleFunctionalities extends EVA.API.RequestMessageWithEmptyResponse {
    ModuleID : number; // Int32
    Functionalities : EVA.Admin.AdminUpdateModuleFunctionalitiesModuleFunctionalityDto[]; 
  }
  
  export class ListModulesFilter {
    Name : string; 
    Code : string; 
    IsActive? : boolean; 
  }
  
  export class AdminGetAllModulesResponseModuleDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    Data : any; 
    Functionalities : EVA.Admin.AdminGetAllModulesResponseModuleFunctionalityDto[]; 
  }
  
  export class AdminListModulesResponseModuleDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    Data : any; 
  }
  
  export class AdminGetAllModulesResponseModuleFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
  }
  
  export class AdminUpdateModuleFunctionalitiesModuleFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Auditing {
  
  export enum ReceiptTypes {
    Start = 0,
    Standard = 1,
    Storno = 2,
    Training = 3,
    Null = 4,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Authentication.SingleSignOn {
  
  export class GenerateSingleSignOnToken extends EVA.API.RequestMessageGeneric<EVA.Authentication.SingleSignOn.GenerateSingleSignOnTokenResponse> {
  }
  
  export class GenerateSingleSignOnTokenResponse extends EVA.API.ResponseMessage {
    Token : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.BI.Reporting {
  
  export class GetOrderCountsResponseDayWithCount {
    Day : string; // DateTime
    Count : number; // Int32
  }
  
  export class GetDailyStats extends EVA.API.RequestMessageGeneric<EVA.BI.Reporting.GetDailyStatsResponse> {
  }
  
  export class GetDailyStatsResponse extends EVA.API.ResponseMessage {
    Orders : number; // Int32
    Exported : number; // Int32
    Shipped : number; // Int32
    Products : number; // Int32
  }
  
  export class GetOrderCounts extends EVA.API.RequestMessageGeneric<EVA.BI.Reporting.GetOrderCountsResponse> {
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }
  
  export class GetOrderCountsResponse extends EVA.API.ResponseMessage {
    Days : EVA.BI.Reporting.GetOrderCountsResponseDayWithCount[]; 
  }
  
  export class GetPopularProducts extends EVA.API.RequestMessageGeneric<EVA.BI.Reporting.GetPopularProductsResponse> {
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
    Amount? : number; // Int32, nullable
  }
  
  export class GetPopularProductsResponse extends EVA.API.ResponseMessage {
    Products : EVA.BI.Reporting.GetPopularProductsResponseProductWithCount[]; 
  }
  
  export class GetPopularProductsResponseProductWithCount {
    ID : number; // Int32
    Name : string; 
    Count : number; // Int32
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.BI {
  
  export enum AggregationTypes {
    Sum = 0,
    WeightedAverage = 1,
    SumLast = 2,
  }
  
  export class DataResponse {
    Name : string; 
    Label : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    Series : EVA.BI.Series; 
    Actual : number; // Decimal
    Target? : number; // Decimal, nullable
    Points : EVA.BI.Point[]; 
  }
  
  export class GetData extends EVA.API.RequestMessageGeneric<EVA.BI.GetDataResponse> {
    OrganizationUnitID : number; // Int32
    Labels : string[]; 
    Timeframe : EVA.BI.Timeframe; 
    Series : EVA.BI.Series[]; 
    GroupBy : EVA.BI.GroupBy; 
    Mock? : boolean; 
  }
  
  export class GetDataResponse extends EVA.API.GetListResponse<EVA.BI.DataResponse> {
  }
  
  export class GetLabels extends EVA.API.RequestMessageGeneric<EVA.BI.GetLabelsResponse> {
  }
  
  export class GetLabelsResponse extends EVA.API.GetListResponse<EVA.BI.Label> {
  }
  
  export class GetStoresForUser extends EVA.API.RequestMessageGeneric<EVA.BI.GetStoresForUserResponse> {
  }
  
  export class GetStoresForUserResponse extends EVA.API.ResponseMessage {
    Root : EVA.BI.GetStoresForUserResponseOrganizationUnit; 
  }
  
  export enum Grain {
    None = 0,
    Days = 1,
    Weeks = 2,
    Months = 3,
  }
  
  export enum GroupBy {
    Label = 0,
    OrganizationUnit = 1,
    Name = 2,
  }
  
  export class Label {
    Name : string; 
    AggregationType : EVA.BI.AggregationTypes; 
  }
  
  export class GetStoresForUserResponseOrganizationUnit {
    ID : number; // Int32
    Name : string; 
    TypeID : EVA.BI.Type; 
    ViewReports : boolean; 
    Children : EVA.BI.GetStoresForUserResponseOrganizationUnit[]; 
  }
  
  export class Point {
    Label : string; 
    Value : number; // Decimal
    Target? : number; // Decimal, nullable
    AccumulatedValue : number; // Decimal
  }
  
  export enum Series {
    Actual = 0,
    LFL = 1,
  }
  
  export class Timeframe {
    Period : any; 
    Range : any; 
    Date? : string; // DateTime, nullable
  }
  
  export enum Type {
    None = 0,
    Shop = 1,
    City = 2,
    Region = 3,
    Country = 4,
    Root = 5,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Blobs {
  
  export class BlobDto {
    ID : string; 
    OriginalName : string; 
    MimeType : string; 
    Category : string; 
    ExpireDate? : string; // DateTime, nullable
    LocationType : string; 
    Url : string; 
  }
  
  export class CreateBlob extends EVA.API.RequestMessageGeneric<EVA.Blobs.CreateBlobResponse> {
    Category : string; 
    OriginalName : string; 
    MimeType : string; 
    ExpireDate? : string; // DateTime, nullable
    LocationType : string; 
  }
  
  export class CreateBlobResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class DeleteBlob extends EVA.API.RequestMessageWithEmptyResponse {
    BlobID : string; 
  }
  
  export class GetBlobInfo extends EVA.API.RequestMessageGeneric<EVA.Blobs.GetBlobInfoResponse> {
    Guid : string; 
    Category : string; 
    OriginalName : string; 
  }
  
  export class GetBlobInfoResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    MimeType : string; 
    OriginalName : string; 
    Category : string; 
    ExpireDate? : string; // DateTime, nullable
    LastModificationTimeUtc : string; // DateTime
    Size : number; // Int64
    Url : string; 
  }
  
  export class GetPlaceholderResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class GetProductImagePlaceholder extends EVA.API.RequestMessageGeneric<EVA.Blobs.GetPlaceholderResponse> {
  }
  
  export class ListBlobs extends EVA.API.PagedResultRequest<EVA.Blobs.ListBlobsResponse> {
  }
  
  export class ListBlobsResponse extends EVA.API.PagedResultResponse<EVA.Blobs.BlobDto> {
  }
  
  export class ProcessDocument extends EVA.API.RequestMessageGeneric<EVA.Blobs.ProcessDocumentResponse> {
    Data : string; 
    Type : string; 
  }
  
  export class ProcessDocumentResponse extends EVA.API.ResponseMessage {
    ProcessedData : string; 
    ExtractedText : { [ key : string ] : any }; 
    Success : boolean; 
  }
  
  export class SetPlaceholderResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
  export class SetProductImagePlaceholder extends EVA.API.RequestMessageGeneric<EVA.Blobs.SetPlaceholderResponse> {
    MimeType : string; 
    Data : string; 
  }
  
  export class StoreBlob extends EVA.API.RequestMessageGeneric<EVA.Blobs.StoreBlobResponse> {
    Category : string; 
    OriginalName : string; 
    MimeType : string; 
    Data : string; 
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class StoreBlobResponse extends EVA.API.ResponseMessage {
    Guid : string; 
    Url : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.CRM.Core {
  
  export class CompleteCustomerInteractionTask extends EVA.API.RequestMessageWithEmptyResponse {
    WorkSet : EVA.CRM.Core.CustomerInteractionWorkSet; 
  }
  
  export class CompleteOrderInterventionTask extends EVA.API.RequestMessageWithEmptyResponse {
    WorkSet : EVA.CRM.Core.OrderInterventionWorkSet; 
  }
  
  export class CreateCustomerInteractionTask extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.CreateCustomerInteractionTaskResponse> {
    Priority : EVA.CRM.Core.CustomerInteractionTaskPriorities; 
    TypeID : number; // Int32
    CustomerID : number; // Int32
    UserTask : EVA.CRM.Core.CustomerInteractionUserTaskDto; 
  }
  
  export class CreateCustomerInteractionTaskResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateCustomerInteractionTaskType extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.CreateCustomerInteractionTaskTypeResponse> {
    Name : string; 
    Description : string; 
    FollowUpTypeID? : number; // Int32, nullable
  }
  
  export class CreateCustomerInteractionTaskTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateCustomerReturn extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    OrderID : number; // Int32
    TargetOrderID? : number; // Int32, nullable
    SessionID : string; 
    Lines : EVA.CRM.Core.CustomerReturnLine[]; 
    ReturnWithoutProducts : boolean; 
    ReturnToSameStockOrganizationUnit : boolean; 
  }
  
  export class CreateCustomerReturnWithoutOrder extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    TargetOrderID? : number; // Int32, nullable
    SessionID : string; 
    Lines : EVA.CRM.Core.ProductReturnLine[]; 
    CustomerID : number; // Int32
    SoldFromOrganizationUnitID : number; // Int32
    ShipToOrganizationUnitID : number; // Int32
  }
  
  export class CreateUserField extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    Name : string; 
    BackendID : string; 
    DefaultValue : string; 
    Requirements : EVA.CRM.Core.UserFieldRequirements; 
  }
  
  export class CreateUserFieldOption extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    UserFieldID : number; // Int32
    Name : string; 
    BackendID : string; 
    Value : string; 
  }
  
  export class CreateUserInteraction extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.CreateUserInteractionResponse> {
    UserID : number; // Int32
    Text : string; 
    OrderID? : number; // Int32, nullable
    UserTaskID? : number; // Int32, nullable
  }
  
  export class CreateUserInteractionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CustomerInteractionWorkSetCustomerDto {
    FirstName : string; 
    LastName : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
  }
  
  export class ListCustomerInteractionTasksResponseCustomerInteractionTaskDto {
    ID : number; // Int32
    Priority : EVA.CRM.Core.CustomerInteractionTaskPriorities; 
    Type : EVA.CRM.Core.CustomerInteractionTaskTypeDto; 
    Customer : EVA.CRM.Core.CustomerInteractionUserDto; 
    CustomerID : number; // Int32
    UserTask : EVA.CRM.Core.CustomerInteractionUserTaskDto; 
    UserTaskID : number; // Int32
  }
  
  export enum CustomerInteractionTaskPriorities {
    None = 0,
    Low = 1,
    Normal = 2,
    High = 3,
    Immediate = 4,
  }
  
  export class CustomerInteractionTaskTypeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    FollowUpTypeID? : number; // Int32, nullable
    FollowUpTypeName : string; 
  }
  
  export class CustomerInteractionUserDto {
    FullName : string; 
    PhoneNumber : string; 
    EmailAddress : string; 
  }
  
  export class CustomerInteractionUserTaskDto {
    StartTime? : string; // DateTime, nullable
    DeadLine? : string; // DateTime, nullable
    Description : string; 
    UserID? : number; // Int32, nullable
    User : EVA.CRM.Core.CustomerInteractionUserDto; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    IsActive : boolean; 
    IsCompleted : boolean; 
  }
  
  export class CustomerInteractionWorkSet {
    UserTaskID : number; // Int32
    UserTask : EVA.Core.UserTaskDto; 
    TypeID : number; // Int32
    TypeName : string; 
    CustomerID : number; // Int32
    Customer : EVA.CRM.Core.CustomerInteractionWorkSetCustomerDto; 
    Priority : EVA.CRM.Core.CustomerInteractionTaskPriorities; 
  }
  
  export class CustomerReturnLine {
    OrderLineID : number; // Int32
    Quantity : number; // Int32
    Remark : string; 
    ReturnReasonID? : number; // Int32, nullable
  }
  
  export class DeleteCustomerInteractionTask extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteCustomerInteractionTaskType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteUserField extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteUserFieldOption extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteUserInteraction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DetachFromCustomerInteractionTask extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
  }
  
  export class GetCustomerInteractionTaskByID extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.GetCustomerInteractionTaskByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetCustomerInteractionTaskByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Priority : EVA.CRM.Core.CustomerInteractionTaskPriorities; 
    Type : EVA.CRM.Core.CustomerInteractionTaskTypeDto; 
    Customer : EVA.CRM.Core.CustomerInteractionUserDto; 
    CustomerID : number; // Int32
    UserTask : EVA.CRM.Core.CustomerInteractionUserTaskDto; 
    UserTaskID : number; // Int32
  }
  
  export class GetCustomerInteractionTaskTypeByID extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.GetCustomerInteractionTaskTypeByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetCustomerInteractionTaskTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    FollowUpTypeID? : number; // Int32, nullable
    FollowUpTypeName : string; 
  }
  
  export class GetCustomerInteractionTaskTypes extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.GetCustomerInteractionTaskTypesResponse> {
  }
  
  export class GetCustomerInteractionTaskTypesResponse extends EVA.API.ResponseMessage {
    CustomerInteractionTaskTypes : EVA.CRM.Core.CustomerInteractionTaskTypeDto[]; 
  }
  
  export class GetReturnOrdersForOrder extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.GetReturnOrdersForOrderResponse> {
    OrderID : number; // Int32
  }
  
  export class GetReturnOrdersForOrderResponse extends EVA.API.ResponseMessage {
    Orders : EVA.CRM.Core.ReturnOrder[]; 
  }
  
  export class GetUserFields extends EVA.API.RequestMessage implements EVA.API.IRequestRespondsAs<EVA.CRM.Core.GetUserFieldsResponse> {
  }
  
  export class GetUserFieldsForUser extends EVA.API.RequestMessage implements EVA.API.IRequestRespondsAs<EVA.CRM.Core.GetUserFieldsForUserResponse> {
    UserID : number; // Int32
  }
  
  export class GetUserFieldsForUserResponse extends EVA.API.GetResponse<EVA.CRM.Core.UserFieldDto[]> {
  }
  
  export class GetUserFieldsResponse extends EVA.API.GetResponse<EVA.CRM.Core.UserFieldDto[]> {
  }
  
  export class GetUserInteractionByID extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.GetUserInteractionByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetUserInteractionByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    User : EVA.CRM.Core.GetUserInteractionByIDResponseUserDto; 
    Text : string; 
    OrderID? : number; // Int32, nullable
    UserTaskID? : number; // Int32, nullable
    CreationTime : string; // DateTime
  }
  
  export class ListCustomerInteractionTasks extends EVA.API.PagedResultRequest<EVA.CRM.Core.ListCustomerInteractionTasksResponse> {
  }
  
  export class ListCustomerInteractionTasksResponse extends EVA.API.PagedResultResponse<EVA.CRM.Core.ListCustomerInteractionTasksResponseCustomerInteractionTaskDto> {
  }
  
  export class ListOrderInterventionTasks extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.ListOrderInterventionTasksResponse> {
    PageConfig : EVA.Framework.PageConfig; 
  }
  
  export class ListOrderInterventionTasksResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.CRM.Core.OrderInterventionTaskDto>; 
  }
  
  export class ListUserInteractions extends EVA.API.PagedResultRequest<EVA.CRM.Core.ListUserInteractionsResponse> {
  }
  
  export class ListUserInteractionsResponse extends EVA.API.PagedResultResponse<EVA.CRM.Core.ListUserInteractionsResponseUserInteractionDto> {
  }
  
  export class OrderInterventionTaskDto {
    ID : number; // Int32
    UserTaskID : number; // Int32
    Reason : string; 
    Comment : string; 
    OrderID : number; // Int32
    CreationTime : string; // DateTime
    AssignedToUser : string; 
  }
  
  export class OrderInterventionWorkSet {
    UserTaskID : number; // Int32
    OrderInterventionTaskID : number; // Int32
    OrderID : number; // Int32
    Reason : string; 
    Comment : string; 
  }
  
  export class ProductReturnLine {
    ProductID : number; // Int32
    // A positive number that indicates the quantity of products returned.
    Quantity : number; // Int32
    Remark : string; 
    ReturnReasonID? : number; // Int32, nullable
  }
  
  export class ReceiveReturnOrder extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.ReceiveReturnOrderResponse> {
    OrderID : number; // Int32
    Lines : EVA.CRM.Core.ReceiveReturnOrderReturnedLine[]; 
  }
  
  export class ReceiveReturnOrderResponse extends EVA.API.ResponseMessage {
    Messages : EVA.Core.ShipmentResultMessage[]; 
  }
  
  export enum RefundMethod {
    UserCard = 1,
    Automatic = 2,
  }
  
  export class RefundOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    Reason : string; 
    AmountToRefund? : number; // Decimal, nullable
  }
  
  export class ReceiveReturnOrderReturnedLine {
    OrderLineID : number; // Int32
    Remark : string; 
    Quantity : number; // Int32
  }
  
  export class ReturnLineDto {
    OrderLineID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
    Quantity : number; // Int32
    ResourceID? : number; // Int32, nullable
    Remark : string; 
    ReturnReasonID? : number; // Int32, nullable
    ReturnStockLabel? : number; // Int32, nullable
  }
  
  export class ReturnOrder {
    ID : number; // Int32
    IsReturnWithoutProducts : boolean; 
    CreationTime : string; // DateTime
    TotalAmountInTax : number; // Decimal
    // Obsolete
    ForeignTotalAmountInTax : number; // Decimal
    CurrencyID : string; 
    IsPaid : boolean; 
    IsCompleted : boolean; 
    IsShipped : boolean; 
    PaidAmount : number; // Decimal
    ForeignPaidAmount : number; // Decimal
  }
  
  export class ReturnOrderLines extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    OrderID? : number; // Int32, nullable
    Lines : EVA.CRM.Core.ReturnLineDto[]; 
    TargetOrderID? : number; // Int32, nullable
    SessionID : string; 
    ForceCreate : boolean; 
    ReturnToSameStockOrganizationUnit : boolean; 
    LineActionType? : EVA.Core.LineActionTypes; 
  }
  
  export class SetReturnOrderRefundCorrection extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    NewOpenAmount : number; // Decimal
    Reason : string; 
  }
  
  export class SetUserField extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    UserFieldID : number; // Int32
    UserID : number; // Int32
    Value : any; 
  }
  
  export class StartCustomerInteractionTask extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.StartCustomerInteractionTaskResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartCustomerInteractionTaskResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.CRM.Core.CustomerInteractionWorkSet; 
  }
  
  export class StartOrderInterventionTask extends EVA.API.RequestMessageGeneric<EVA.CRM.Core.StartOrderInterventionTaskResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartOrderInterventionTaskResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.CRM.Core.OrderInterventionWorkSet; 
  }
  
  export class UpdateCustomerInteractionTaskType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
    FollowUpTypeID? : number; // Int32, nullable
  }
  
  export class UpdateUserField extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    DefaultValue : string; 
    Requirements : EVA.CRM.Core.UserFieldRequirements; 
  }
  
  export class UpdateUserFieldOption extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    UserFieldID : number; // Int32
    Name : string; 
    BackendID : string; 
    Value : string; 
  }
  
  export class UpdateUserInteraction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    UserID : number; // Int32
    Text : string; 
    OrderID? : number; // Int32, nullable
    UserTaskID? : number; // Int32, nullable
  }
  
  export class GetUserInteractionByIDResponseUserDto {
    FirstName : string; 
    LastName : string; 
    EmailAddress : string; 
  }
  
  export class ListUserInteractionsResponseUserInteractionDtoUserDto {
    FirstName : string; 
    LastName : string; 
    EmailAddress : string; 
  }
  
  export class UserFieldDto {
    ID : number; // Int32
    Name : string; 
    Value : any; 
    Options : EVA.CRM.Core.UserFieldOptionDto[]; 
    Requirements : EVA.CRM.Core.UserFieldRequirements; 
  }
  
  export class UserFieldOptionDto {
    ID : number; // Int32
    Name : string; 
  }
  
  export class UserFieldRequirements {
    AllowBlank : boolean; 
    IsNumeric : boolean; 
    Minimum? : number; // Int32, nullable
    Maximum? : number; // Int32, nullable
  }
  
  export class ListUserInteractionsResponseUserInteractionDto {
    ID : number; // Int32
    UserID : number; // Int32
    User : EVA.CRM.Core.ListUserInteractionsResponseUserInteractionDtoUserDto; 
    CreatedByID : number; // Int32
    CreatedBy : EVA.CRM.Core.ListUserInteractionsResponseUserInteractionDtoUserDto; 
    Text : string; 
    OrderID? : number; // Int32, nullable
    UserTaskID? : number; // Int32, nullable
    CreationTime : string; // DateTime
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Carrier.PostNL {
  
  export class AvailableTimeframe {
    Option : EVA.Carrier.PostNL.TimeframeOptions; 
    StartDateTime : string; // DateTime
    EndDateTime : string; // DateTime
    Costs : number; // Decimal
  }
  
  export class AvailableTimeframeDate {
    Date : string; // DateTime
    Timeframes : EVA.Carrier.PostNL.AvailableTimeframe[]; 
  }
  
  export class PostNLGetAvailablePickUpLocationsForAreaCoordinate {
    Latitude : number; // Decimal
    Longitude : number; // Decimal
  }
  
  export class Location {
    LocationCode : string; 
    Name : string; 
    Distance? : number; // Int32, nullable
    Latitude? : number; // Decimal, nullable
    Longitude? : number; // Decimal, nullable
    Address : EVA.Carrier.PostNL.LocationAddress; 
    DeliveryOptions : string[]; 
    OpeningHours : EVA.Carrier.PostNL.LocationOpeningHours; 
    PartnerName : string; 
    PhoneNumber : string; 
    RetailNetworkID : string; 
    Saleschannel : string; 
    TerminalType : string; 
  }
  
  export class LocationAddress {
    Countrycode : string; 
    Zipcode : string; 
    HouseNr : string; 
    Street : string; 
    City : string; 
    Remark : string; 
  }
  
  export class LocationOpeningHours {
    Monday : string[]; 
    Tuesday : string[]; 
    Wednesday : string[]; 
    Thursday : string[]; 
    Friday : string[]; 
    Saturday : string[]; 
    Sunday : string[]; 
  }
  
  export class PostNLCreateShippingLabelForShipment extends EVA.API.RequestMessageWithEmptyResponse {
    ShipmentID : number; // Int32
    StationID? : number; // Int32, nullable
  }
  
  export class PostNLGetAvailablePickUpLocationsForArea extends EVA.API.RequestMessageGeneric<EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaResponse> {
    OrderID : number; // Int32
    NorthWest : EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaCoordinate; 
    SouthEast : EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForAreaCoordinate; 
  }
  
  export class PostNLGetAvailablePickUpLocationsForAreaResponse extends EVA.API.ResponseMessage {
    Locations : EVA.Carrier.PostNL.Location[]; 
  }
  
  export class PostNLGetAvailablePickUpLocationsForOrder extends EVA.API.RequestMessageGeneric<EVA.Carrier.PostNL.PostNLGetAvailablePickUpLocationsForOrderResponse> {
    OrderID : number; // Int32
  }
  
  export class PostNLGetAvailablePickUpLocationsForOrderResponse extends EVA.API.ResponseMessage {
    Locations : EVA.Carrier.PostNL.Location[]; 
  }
  
  export class PostNLGetAvailableTimeframesForOrder extends EVA.API.RequestMessageGeneric<EVA.Carrier.PostNL.PostNLGetAvailableTimeframesForOrderResponse> {
    OrderID : number; // Int32
    StartDate : string; // DateTime
    EndDate : string; // DateTime
    SkipAvailabilityChecks : boolean; 
  }
  
  export class PostNLGetAvailableTimeframesForOrderResponse extends EVA.API.ResponseMessage {
    Frames : EVA.Carrier.PostNL.AvailableTimeframeDate[]; 
  }
  
  export class PostNLGetShippingOptionsForOrder extends EVA.API.RequestMessageGeneric<EVA.Carrier.PostNL.PostNLGetShippingOptionsForOrderResponse> {
    OrderID : number; // Int32
  }
  
  export class PostNLGetShippingOptionsForOrderResponse extends EVA.API.ResponseMessage {
    Date? : string; // DateTime, nullable
    TimeframeOptions : EVA.Carrier.PostNL.TimeframeOptions; 
    PickUpLocationID : string; 
  }
  
  export class PostNLUpdateShippingOptionsForOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    Date? : string; // DateTime, nullable
    TimeframeOptions : EVA.Carrier.PostNL.TimeframeOptions; 
    PickUpLocationID : string; 
  }
  
  export enum TimeframeOptions {
    Daytime = 1,
    Evening = 2,
    Morning = 4,
    Noon = 8,
    Sunday = 16,
    Sameday = 32,
    Afternoon = 64,
    All = 127,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Cookbook {
  
  export class AccountBookingDetails {
    Amount : number; // Decimal
    BookedOnOrganizationUnitID : number; // Int32
    BookedOnOrganizationUnitName : string; 
    BookedOnAccountID : number; // Int32
    BookedOnAccountNumber : string; 
    BookedOnAccountName : string; 
    AccountingRecipeID : number; // Int32
    Date : string; // DateTime
    Description : string; 
    CurrencyID : string; 
    Offsets : string[]; 
  }
  
  export class AccountBookingPreview {
    Date : string; // DateTime
    BookedOnOrganizationUnitID : number; // Int32
    BookedOnOrganizationUnitName : string; 
    BookedOnAccountID : number; // Int32
    BookedOnAccountNumber : string; 
    BookedOnAccountName : string; 
    Amount : number; // Decimal
    CurrencyID : string; 
  }
  
  export class AccountingRecipeDto {
    ID : number; // Int32
    Recipe : string; 
    Name : string; 
    EventType : EVA.Core.FinancialEventTypes; 
    IsActive : boolean; 
  }
  
  export class AccountingRecipeToPreview {
    ID? : number; // Int32, nullable
    Recipe : string; 
  }
  
  export enum ActionBlockModifier {
    None = 0,
    Else = 1,
    Also = 2,
  }
  
  export class CompletionSuggestion {
    Label : string; 
    Code : string; 
    Type : EVA.Cookbook.CompletionSuggestionType; 
    Documentation : string; 
  }
  
  export enum CompletionSuggestionType {
    Variable = 0,
    Keyword = 1,
    Enum = 2,
    Account = 3,
  }
  
  export class CreateAccountingRecipe extends EVA.API.RequestMessageGeneric<EVA.Cookbook.CreateAccountingRecipeResponse> {
    Recipe : string; 
    IsActive : boolean; 
    Name : string; 
  }
  
  export class ParseRecipeResponse extends EVA.API.ResponseMessage {
    HasErrors : boolean; 
    Errors : EVA.Cookbook.ParseRecipeError[]; 
    CompletionSuggestions : EVA.Cookbook.CompletionSuggestion[]; 
  }
  
  export class CreateAccountingRecipeResponse extends EVA.Cookbook.ParseRecipeResponse {
    ID : number; // Int32
  }
  
  export class DeleteAccountingRecipe extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class GetAccountingRecipe extends EVA.API.RequestMessageGeneric<EVA.Cookbook.GetAccountingRecipeResponse> {
    ID : number; // Int32
  }
  
  export class GetAccountingRecipeResponse extends EVA.API.ResponseMessage {
    Recipe : EVA.Cookbook.AccountingRecipeDto; 
  }
  
  export class ListAccountingRecipes extends EVA.API.PagedResultRequest<EVA.Cookbook.ListAccountingRecipesResponse> {
    IsActive? : boolean; 
    Type : EVA.Core.FinancialEventTypes; 
  }
  
  export class ListAccountingRecipesResponse extends EVA.API.PagedResultResponse<EVA.Cookbook.AccountingRecipeDto> {
  }
  
  export enum MultiValueOperatorTypes {
    Or = 0,
    And = 1,
  }
  
  export enum OperatorTypes {
    Equals = 0,
    NotEquals = 1,
    GreaterThan = 2,
    LessThan = 3,
    GreaterThanOrEquals = 4,
    LessThanOrEquals = 5,
    HasValue = 6,
    HasNoValue = 7,
  }
  
  export class ParseAccountingRecipe extends EVA.API.RequestMessageGeneric<EVA.Cookbook.ParseRecipeResponse> {
    Recipe : string; 
    CursorPosition? : number; // Int32, nullable
  }
  
  export class ParseRecipeError {
    Type : EVA.Cookbook.ParsingErrorType; 
    Message : string; 
    SourceLine : string; 
    SourceLineNumber : number; // Int32
    SourceColumn : number; // Int32
  }
  
  export enum ParsingErrorType {
    InvalidSyntax = 0,
    UnknownVariable = 1,
    InvalidComparison = 2,
    InvalidOperator = 3,
    MissingCredit = 4,
    MissingDebit = 5,
    AmountMustBeNumerical = 6,
    InvalidBookOnOrganizationUnit = 7,
    InvalidEventType = 8,
    DuplicateVariable = 9,
    InvalidVariable = 10,
  }
  
  export class PreviewAccountingRecipe extends EVA.API.RequestMessageGeneric<EVA.Cookbook.PreviewAccountingRecipeResponse> {
    Recipes : EVA.Cookbook.AccountingRecipeToPreview[]; 
    FinancialEventIDs : number[]; 
    OrderID? : number; // Int32, nullable
    Type : EVA.Core.FinancialEventTypes; 
  }
  
  export class PreviewAccountingRecipeResponse extends EVA.Cookbook.ParseRecipeResponse {
    BookingPreviewSummaries : EVA.Cookbook.AccountBookingPreview[]; 
    Warnings : string[]; 
    BookingPreviewDetails : EVA.Cookbook.AccountBookingDetails[]; 
  }
  
  export class UpdateAccountingRecipe extends EVA.API.RequestMessageGeneric<EVA.Cookbook.UpdateAccountingRecipeResponse> {
    ID : number; // Int32
    Recipe : string; 
    IsActive : boolean; 
    Name : string; 
  }
  
  export class UpdateAccountingRecipeResponse extends EVA.Cookbook.ParseRecipeResponse {
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Core.Services.Management {
  
  export class AccountDto {
    ID : number; // Int32
    Name : string; 
    ObjectAccount : string; 
    Subsidiary : string; 
    VisibleByApplicationID : number; // Int32
    BookingFlagsID : number; // Int32
    BookingFlags : EVA.Core.BookingFlags; 
  }
  
  export class AddProductsToAssortment extends EVA.API.RequestMessageWithEmptyResponse {
    AssortmentID : number; // Int32
    // Specific product IDs that will be added to the assortment. Can be left empty, but either this or Query needs to have a value.
    Products : EVA.Core.Services.Management.AddProductsToAssortmentAssortmentProduct[]; 
    // Instead of specific product IDs, it's also possible to pass in a search query.
    ProductSearch : EVA.Core.Services.Management.AddProductsToAssortmentProductSearchModel; 
  }
  
  export class ApprovePendingUser extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
  }
  
  export class ListAssortmentsResponseAssortmentDto {
    ID : number; // Int32
    Name : string; 
    IsDefault : boolean; 
  }
  
  export class AddProductsToAssortmentAssortmentProduct {
    ProductID : number; // Int32
    ProductStatus : EVA.Core.ProductStatus; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }
  
  export class ListAssortmentProductsResponseAssortmentProduct {
    ProductID : number; // Int32
    ProductCustomID : string; 
    AssortmentID : number; // Int32
    AssortmentName : string; 
    ProductStatus : EVA.Core.ProductStatus; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }
  
  export class AttachFunctionalitiesToRole extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    RoleID : number; // Int32
    Functionalities : string[]; 
    ScopedFunctionalities : EVA.Framework.FunctionalityWithScope[]; 
  }
  
  export class AttachOrganizationUnitsToGroup extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrganizationUnitGroupID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class AuditingConfigurationResponse extends EVA.API.ResponseMessage {
    Success : boolean; 
    Errors : string[]; 
  }
  
  export class AuditingResetFinancialPeriods extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.AuditingConfigurationResponse> {
    AuditingProvider : string; 
    OrganizationUnitID : number; // Int32
    MarkAsProcessed : boolean; 
  }
  
  export class AuditingSetPrivateKey extends EVA.API.RequestMessageWithEmptyResponse {
    PrivateKeyFile : string; 
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class AuditingValidateConfiguration extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.AuditingConfigurationResponse> {
    AuditingProvider : string; 
    OrganizationUnitID : number; // Int32
  }
  
  export class BadgeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    TypeID : number; // Int32
    Type : EVA.Core.BadgeTypes; 
  }
  
  export class CalculateStockDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CalculateStockDetailsResponse> {
    OrganizationUnitIDs : number[]; 
    ProductIDs : number[]; 
  }
  
  export class CalculateStockDetailsResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.Services.Management.CalculateStockDetailsResponseModel[]; 
  }
  
  export class CarrierDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    BackendID : string; 
  }
  
  export class ListCashHandlersResponseCashHandlerDto {
    ID : number; // Int32
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class CreateAccount extends EVA.API.CreateRequest<EVA.Core.Services.Management.AccountDto> implements EVA.API.IRequestRespondsAs<EVA.API.CreateResponse> {
  }
  
  export class CreateAssortment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateAssortmentResponse> {
    Name : string; 
  }
  
  export class CreateAssortmentResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateCarrier extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateCarrierResponse> {
    Name : string; 
    Code : string; 
    BackendID : string; 
  }
  
  export class CreateCarrierResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateCashHandler extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateCashHandlerResponse> {
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class CreateCashHandlerResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateCulture extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateCultureResponse> {
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class CreateCultureResponse extends EVA.API.ResponseMessage {
    ID : string; 
  }
  
  export class CreateCustomerReturnReason extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateCustomerReturnReasonResponse> {
    Name : string; 
    Description : string; 
  }
  
  export class CreateCustomerReturnReasonResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateDevice extends EVA.API.CreateRequest<EVA.Core.DeviceDto> implements EVA.API.IRequestRespondsAs<EVA.API.CreateResponse> {
  }
  
  export class CreateDiscount extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateDiscountResponse> {
    BackendID : string; 
    IsActive : boolean; 
    Description : string; 
    MarketingDescription : string; 
    CampaignName : string; 
    NeedsReason : boolean; 
    DiscountOrderType : EVA.Core.DiscountOrderTypes; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    LedgerClassID : string; 
    MaximumUsage? : number; // Int32, nullable
    MaximumUsagePerOrder? : number; // Int32, nullable
    ActionType : string; 
    ActionData : any; 
    Conditions : EVA.Core.Services.Management.CreateDiscountDiscountConditionDto[]; 
    ConditionType : EVA.Core.DiscountConditionTypes; 
    Trigger : EVA.Core.DiscountTriggers; 
    LayerID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    CurrencyID : string; 
  }
  
  export class CreateDiscountCoupon extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateDiscountCouponResponse> {
    CouponCode : string; 
    DiscountID : number; // Int32
    IsActive : boolean; 
  }
  
  export class CreateDiscountCouponResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateDiscountLayer extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateDiscountLayerResponse> {
    Name : string; 
    Description : string; 
    Sequence? : number; // Int32, nullable
    IsExclusive : boolean; 
  }
  
  export class CreateDiscountLayerResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateDiscountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateEmployeeData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateEmployeeDataResponse> {
    UserID : number; // Int32
    EmployeeNumber : string; 
    Function : string; 
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    ManagerID? : number; // Int32, nullable
    AdditionalOrganizationUnitIDs : number[]; 
  }
  
  export class CreateEmployeeDataResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export enum CreateEmployeeResults {
    CreatedNewUser = 0,
    UpgradedExistingUser = 1,
    UpdatedExistingUser = 2,
  }
  
  export class CreateEmployeeUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateEmployeeUserResponse> {
    FirstName : string; 
    LastName : string; 
    Nickname : string; 
    EmailAddress : string; 
    Gender : string; 
    PhoneNumber : string; 
    DateOfBirth? : string; // DateTime, nullable
    Password : string; 
    LanguageID : string; 
    CountryID : string; 
    EmployeeNumber : string; 
    Function : string; 
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    ManagerID? : number; // Int32, nullable
    AdditionalOrganizationUnitIDs : number[]; 
    RoleID? : number; // Int32, nullable
  }
  
  export class CreateEmployeeUserResponse extends EVA.API.ResponseMessage {
    UserID? : number; // Int32, nullable
    Result : EVA.Core.Services.Management.CreateEmployeeResults; 
  }
  
  export class CreateExchangeRate extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateExchangeRateResponse> {
    FromCurrencyID : string; 
    ToCurrencyID : string; 
    ExchangeRate : number; // Decimal
  }
  
  export class CreateExchangeRateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateFraudItem extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateFraudItemResponse> {
    TypeID : number; // Int32
    Data : string; 
    Object : any; 
  }
  
  export class CreateFraudItemResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateIdentificationPinForEmployee extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateIdentificationPinForEmployeeResponse> {
    Pin : string; 
    UserID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class CreateIdentificationPinForEmployeeResponse extends EVA.API.ResponseMessage {
    Pin : string; 
  }
  
  export class CreateMessageTemplate extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateMessageTemplateResponse> {
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Header : string; 
    Template : string; 
    Footer : string; 
    Helpers : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class CreateMessageTemplateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitCountry extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitCountryResponse> {
    CountryID : string; 
    OrganizationUnitID : number; // Int32
  }
  
  export class CreateOrganizationUnitCountryResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitCurrency extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitCurrencyResponse> {
    CurrencyID : string; 
    OrganizationUnitID : number; // Int32
    CashHandlerID : number; // Int32
  }
  
  export class CreateOrganizationUnitCurrencyResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitGroup extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitGroupResponse> {
    Name : string; 
    BackendID : string; 
  }
  
  export class CreateOrganizationUnitGroupResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitLanguage extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitLanguageResponse> {
    LanguageID : string; 
    OrganizationUnitID : number; // Int32
  }
  
  export class CreateOrganizationUnitLanguageResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    // Name is only optional when creating an AdHoc set.
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetTypes; 
    ScopeID? : number; // Int32, nullable
    Definition : EVA.Core.OrganizationUnitSetDefinition; 
    // When specified adds the sets contained in Subsets as a subset of the new set.
    Subsets : EVA.Core.Services.Management.CreateOrganizationUnitSetOrganizationUnitSubSetDefinition[]; 
    SubsetOrdering? : EVA.Core.Services.Management.OrganizationSubsetOrdering; 
  }
  
  export class CreateOrganizationUnitSetScope extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitSetScopeResponse> {
    Name : string; 
    OrganizationUnitUniqueInScope : boolean; 
  }
  
  export class CreateOrganizationUnitSetScopeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrganizationUnitShippingMethod extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateOrganizationUnitShippingMethodResponse> {
    ShippingMethodID : number; // Int32
    OrganizationUnitID : number; // Int32
    Priority : number; // Int32
  }
  
  export class CreateOrganizationUnitShippingMethodResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateOrUpdateOrganizationUnitSubset extends EVA.API.RequestMessageWithEmptyResponse {
    SetID : number; // Int32
    SubsetID : number; // Int32
    Type : EVA.Core.OrganizationUnitSetOperatorTypes; 
  }
  
  export class CreatePaymentType extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePaymentTypeResponse> {
    PaymentMethodID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    IsRoundingType : boolean; 
    IsExternal : boolean; 
    ReturnAction : EVA.Core.PaymentReturnActions; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
  }
  
  export class CreatePaymentTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePriceList extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePriceListResponse> {
    Name : string; 
    BackendID : string; 
    BackendSystemID : string; 
    CurrencyID : string; 
    TimeZone : string; 
    IncludingVat : boolean; 
    IsActive : boolean; 
    IsSpecialPricesPriceList? : boolean; 
    SpecialPricesPriceListID? : number; // Int32, nullable
  }
  
  export class CreatePriceListAdjustment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePriceListAdjustmentResponse> {
    PriceListID : number; // Int32
    ParentAdjustmentID? : number; // Int32, nullable
    Sequence : number; // Int32
    Name : string; 
    Label : string; 
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
    OverridePrice : boolean; 
    Type : string; 
    Data : any; 
  }
  
  export class CreatePriceListAdjustmentResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePriceListManualInputAdjustment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePriceListManualInputAdjustmentResponse> {
    PriceListAdjustmentID : number; // Int32
    ProductID : number; // Int32
    Value : number; // Decimal
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class CreatePriceListManualInputAdjustmentResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePriceListOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePriceListOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
    PriceListID : number; // Int32
    PriceListUsageTypeID : number; // Int32
  }
  
  export class CreatePriceListOrganizationUnitResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePriceListResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePriceListUsageType extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreatePriceListUsageTypeResponse> {
    Name : string; 
    Description : string; 
    RequiredUserType : EVA.Framework.UserTypes; 
  }
  
  export class CreatePriceListUsageTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductBarcode extends EVA.API.RequestMessageWithEmptyResponse {
    ProductID : number; // Int32
    Barcode : string; 
    UnitOfMeasureID : number; // Int32
    Name : string; 
    Quantity? : number; // Int32, nullable
  }
  
  export class CreateProductGiftCard extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateProductGiftCardResponse> {
    ProductID : number; // Int32
    Type : string; 
    Data : any; 
  }
  
  export class CreateProductGiftCardResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductSearchTemplate extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateProductSearchTemplateResponse> {
    Name : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
  }
  
  export class CreateProductSearchTemplateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductUnitOfMeasure extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateProductUnitOfMeasureResponse> {
    ProductID : number; // Int32
    UnitOfMeasureID : number; // Int32
    Quantity : number; // Int32
  }
  
  export class CreateProductUnitOfMeasureResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateRole extends EVA.API.CreateRequest<EVA.Core.Services.Management.RoleDto> implements EVA.API.IRequestRespondsAs<EVA.API.CreateResponse> {
  }
  
  export class CreateRoleSet extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateRoleSetResponse> {
    Name : string; 
  }
  
  export class CreateRoleSetResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShippingCost extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateShippingCostResponse> {
    BackendID : string; 
    ShippingMethodID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    CountryID : string; 
    ZipCodes : string[]; 
    MinimumOrderAmount? : number; // Decimal, nullable
    MaximumOrderAmount? : number; // Decimal, nullable
    CurrencyID : string; 
    UnitPriceInTax : number; // Decimal
  }
  
  export class CreateShippingCostResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShippingMethod extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateShippingMethodResponse> {
    Name : string; 
    Code : string; 
    PaymentHandledByCarrier : boolean; 
    InvoicingHandledByCarrier : boolean; 
    CarrierID : number; // Int32
    DeliveryType : EVA.Core.ShippingMethodDeliveryTypes; 
  }
  
  export class CreateShippingMethodResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShippingMethodTransportationTime extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    ShippingMethodID? : number; // Int32, nullable
    FromCountryID : string; 
    ToCountryID : string; 
    TimeInDays : number; // Int32
  }
  
  export class CreateShippingRestriction extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateShippingRestrictionResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    CountryID : string; 
    ZipCodeFrom : string; 
    ZipCodeTo : string; 
    ProductPropertyTypeID : string; 
    ProductPropertyTypeValues : string[]; 
    Type : EVA.Core.ShippingRestrictionType; 
  }
  
  export class CreateShippingRestrictionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateStation extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    ToCreate : EVA.Core.Services.Management.CreateStationStationToCreate; 
  }
  
  export class CreateStockLabel extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateStockLabelResponse> {
    Name : string; 
    Description : string; 
    LedgerClassID : string; 
  }
  
  export class CreateStockLabelResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateSubscription extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateSubscriptionResponse> {
    Name : string; 
    BackendID : string; 
    // A UserField that is required when using this Subscription, p/a EmailAddress, PhoneNumber.
    UserField : string; 
    // A Handler for the actions on this subscription. Available handlers can be listed with the `GetSubscriptionHandlers` service.
    Handler : string; 
  }
  
  export class CreateSubscriptionOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateSubscriptionOrganizationUnitSetResponse> {
    SubscriptionID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    Enabled : boolean; 
    Default : boolean; 
    ConfirmationRequired : boolean; 
  }
  
  export class CreateSubscriptionOrganizationUnitSetResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateSubscriptionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateSupplierProduct extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateSupplierProductResponse> {
    SupplierOrganizationUnitID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    PrimitiveName : string; 
    Status : EVA.Core.ProductStatus; 
    Description : string; 
    PreferredMinimumOrderQuantity? : number; // Int32, nullable
    TaxCodeID : number; // Int32
  }
  
  export class CreateSupplierProductResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateUnitOfMeasure extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateUnitOfMeasureResponse> {
    Name : string; 
    Description : string; 
    BackendID : string; 
  }
  
  export class CreateUnitOfMeasureResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateUrlRewrite extends EVA.API.CreateRequest<EVA.Core.Services.Management.UrlRewriteDto> implements EVA.API.IRequestRespondsAs<EVA.API.CreateResponse> {
  }
  
  export class CreateUserOrigin extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.CreateUserOriginResponse> {
    Name : string; 
    Description : string; 
    BackendID : string; 
  }
  
  export class CreateUserOriginResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class ListCulturesResponseCultureDto {
    ID : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class DeleteAccount extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteAssortment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteCashHandler extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteCulture extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
  }
  
  export class DeleteCustomerReturnReason extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteDevice extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteDiscountLayer extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteEmployeeData extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteExchangeRate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteFraudItem extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteMessageTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitCountry extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitLanguage extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitSetScope extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitShippingMethod extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitSubset extends EVA.API.RequestMessageWithEmptyResponse {
    SetID : number; // Int32
    SubsetID : number; // Int32
  }
  
  export class DeletePaymentType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeletePriceListAdjustment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeletePriceListManualInputAdjustment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeletePriceListOrganizationUnit extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeletePriceListUsageType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductBarcode extends EVA.API.RequestMessageWithEmptyResponse {
    Barcode : string; 
    IsSupplierBarcode : boolean; 
  }
  
  export class DeleteProductGiftCard extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductSearchTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductUnitOfMeasure extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteRole extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteRoleSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShippingCost extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShippingMethodTransportationTime extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShippingRestriction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteStation extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteStationByProxyID extends EVA.API.RequestMessage implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
    ProxyID : string; 
  }
  
  export class DeleteSubscription extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteSubscriptionOrganizationUnitSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteSupplierProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteUnitOfMeasure extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteUrlRewrite extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class DeleteUserOrigin extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DetachFunctionalitiesFromRole extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    RoleID : number; // Int32
    Functionalities : string[]; 
    ScopedFunctionalities : EVA.Framework.FunctionalityWithScope[]; 
  }
  
  export class DetachOrganizationUnitsFromGroup extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrganizationUnitGroupID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class CreateDiscountDiscountConditionDto {
    Type : string; 
    Data : any; 
    UseAsActionCondition : boolean; 
  }
  
  export class GetDiscountByIDResponseDiscountConditionDto {
    ID : number; // Int32
    Type : string; 
    Data : any; 
    UseAsActionCondition : boolean; 
  }
  
  export class UpdateDiscountDiscountConditionDto {
    ID? : number; // Int32, nullable
    Type : string; 
    Data : any; 
    UseAsActionCondition : boolean; 
  }
  
  export class ValidateDiscountDiscountConditionDto {
    Type : string; 
    Data : any; 
    UseAsActionCondition : boolean; 
  }
  
  export class SearchDiscountsByQueryResponseDiscountDto {
    ID : number; // Int32
    Description : string; 
    IsActive : boolean; 
    IsVerified : boolean; 
    MaximumUsage? : number; // Int32, nullable
    CurrencyID : string; 
    TotalDiscountGiven : number; // Decimal
    UsageCount : number; // Int32
    CreatedByID : number; // Int32
    CreatedByFullName : string; 
    DiscountOrderType : EVA.Core.DiscountOrderTypes; 
    LayerID : number; // Int32
    LayerName : string; 
    OrganizationUnitSetID : number; // Int32
    OrganizationUnitSetName : string; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
  }
  
  export class ListDiscountLayersResponseDiscountLayerDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Sequence : number; // Int32
    IsExclusive : boolean; 
    // This layer is managed by EVA and cannot be changed.
    IsSystem : boolean; 
  }
  
  export class DownloadAssortmentProducts extends EVA.API.RequestMessageWithResourceResponse {
    AssortmentID : number; // Int32
  }
  
  export class DownloadCustomersSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadEmployeesSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadFraudItems extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class DownloadInitialInventorySample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadPriceListManualInputAdjustments extends EVA.API.RequestMessageWithResourceResponse {
    PriceListAdjustmentID : number; // Int32
  }
  
  export class DownloadPriceListManualInputAdjustmentsSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadShippingRestrictions extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadSupplierProducts extends EVA.API.RequestMessageWithResourceResponse {
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class DownloadSupplierProductsBarcodes extends EVA.API.RequestMessageWithResourceResponse {
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class DownloadSupplierProductsBarcodesSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadSupplierProductsPricing extends EVA.API.RequestMessageWithResourceResponse {
    OrganizationUnitID? : number; // Int32, nullable
    CurrencyID : string; 
  }
  
  export class DownloadSupplierProductsPricingSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadSupplierProductsSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DownloadSupplierProductsStock extends EVA.API.RequestMessageWithResourceResponse {
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class DownloadSupplierProductsStockSample extends EVA.API.RequestMessageWithResourceResponse {
  }
  
  export class DuplicateDiscount extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.DuplicateDiscountResponse> {
    DiscountID : number; // Int32
  }
  
  export class DuplicateDiscountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class EmployeeDataDto {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    UserEmailAddress : string; 
    EmployeeNumber : string; 
    Function : string; 
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    PrimaryOrganizationUnitName : string; 
    ManagerID? : number; // Int32, nullable
    ManagerFullName : string; 
    ManagerEmailAddress : string; 
    AdditionalOrganizationUnitIDs : number[]; 
  }
  
  export enum EmployeeImportColumns {
    Initials = 1,
    FirstName = 2,
    LastName = 3,
    Gender = 4,
    EmailAddress = 5,
    PhoneNumber = 6,
    Nickname = 7,
    LanguageID = 8,
    CountryID = 9,
    EmployeeNumber = 10,
    Function = 11,
    OrganizationUnit = 12,
    Role = 13,
    ContractID = 14,
    EmploymentType = 15,
    StartDate = 16,
    EndDate = 17,
  }
  
  export class ListExchangeRatesResponseExchangeRateDto {
    ID : number; // Int32
    FromCurrencyID : string; 
    ToCurrencyID : string; 
    ExchangeRate : number; // Decimal
  }
  
  export class ExportGeneralLedgerSummaryToExcel extends EVA.API.RequestMessageWithEmptyResponse {
    Filter : EVA.Core.ListGeneralLedgersFilter; 
  }
  
  export class ExportUnshippedPurchaseOrdersToExcel extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ExportUnshippedPurchaseOrdersToExcelResponse> {
    ShipFromOrganizationUnitID : number; // Int32
  }
  
  export class ExportUnshippedPurchaseOrdersToExcelResponse extends EVA.API.ResponseMessage {
    DownloadUrl : string; 
  }
  
  export class FraudItemDto {
    ID : number; // Int32
    TypeID : number; // Int32
    Data : string; 
    Object : any; 
  }
  
  export class GetSupportedFunctionalitiesResponseFunctionalityDefinition {
    Name : string; 
    Description : string; 
    NoInheritance : boolean; 
    Unscoped : boolean; 
  }
  
  export class GetAllFunctionalitiesForCurrentUserResponseFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
    OrganizationUnitIDs : number[]; 
  }
  
  export class GetAllFunctionalitiesForCurrentUserAsTreeResponseFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
    DisableHierarchy : boolean; 
  }
  
  export class FunctionalityDto {
    Functionality : string; 
    EndDate? : string; // DateTime, nullable
    DisableHierarchy : boolean; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
  }
  
  export class GetRoleResponseRoleWithFunctionalitiesDtoFunctionalityWithScope {
    Functionality : string; 
    Scope : EVA.Framework.FunctionalityScope; 
  }
  
  export enum GeneralLedgerExportColumns {
    Account = 1,
    AccountName = 2,
    Amount = 3,
    Date = 4,
    FinancialPeriod = 5,
    OrganizationUnit = 6,
    Order = 7,
  }
  
  export class GenerateDiscountCoupons extends EVA.API.RequestMessageWithEmptyResponse {
    DiscountID : number; // Int32
    Quantity : number; // Int32
  }
  
  export class GenerateIdentificationCodeForEmployee extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GenerateIdentificationCodeForEmployeeResponse> {
  }
  
  export class GenerateIdentificationCodeForEmployeeResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.Management.GenerateIdentificationCodeForEmployeeResponseUserIdWithIdentificationCodeDto; 
  }
  
  export class GenerateIdentificationPinForEmployee extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GenerateIdentificationPinForEmployeeResponse> {
    UserID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class GenerateIdentificationPinForEmployeeResponse extends EVA.API.ResponseMessage {
    Pin : string; 
  }
  
  export class GeneratePurchaseOrderExcelSample extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class GetAccount extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAccountResponse> {
    Id : number; // Int32
  }
  
  export class GetAccountResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.Management.AccountDto; 
  }
  
  export class GetAllFunctionalitiesForCurrentUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserResponse> {
  }
  
  export class GetAllFunctionalitiesForCurrentUserAsTree extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserAsTreeResponse> {
  }
  
  export class GetAllFunctionalitiesForCurrentUserAsTreeResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserAsTreeResponseOrganizationUnitDto[]; 
  }
  
  export class GetAllFunctionalitiesForCurrentUserResponse extends EVA.API.ResponseMessage {
    Functionalities : EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserResponseFunctionalityDto[]; 
  }
  
  export class GetAssortmentByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAssortmentByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetAssortmentByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    IsDefault : boolean; 
  }
  
  export class GetAvailablePaymentSettlementFileHandlers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAvailablePaymentSettlementFileHandlersResponse> {
  }
  
  export class GetAvailablePaymentSettlementFileHandlersResponse extends EVA.API.ResponseMessage {
    Handlers : string[]; 
  }
  
  export class GetAvailableRoles extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAvailableRolesResponse> {
    UserID : number; // Int32
  }
  
  export class GetAvailableRolesResponse extends EVA.API.ResponseMessage {
    AvailableRoles : EVA.Core.Services.Management.RoleDto[]; 
  }
  
  export class GetAvailableSettings extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAvailableSettingsResponse> {
  }
  
  export class GetAvailableSettingsResponse extends EVA.API.ResponseMessage {
    Settings : EVA.Core.Services.Management.GetAvailableSettingsResponseSetting[]; 
  }
  
  export class GetAvailableUserRequirementsProperties extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetAvailableUserRequirementsPropertiesResponse> {
  }
  
  export class GetAvailableUserRequirementsPropertiesResponse extends EVA.API.ResponseMessage {
    Properties : string[]; 
  }
  
  export class GetCarrierByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetCarrierByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetCarrierByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    BackendID : string; 
  }
  
  export class GetCashHandlerByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetCashHandlerByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetCashHandlerByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class GetConfigurationQrForDevice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetConfigurationQrForDeviceResponse> {
    DeviceID : number; // Int32
  }
  
  export class GetConfigurationQrForDeviceResponse extends EVA.API.ResponseMessage {
    QrData : string; 
  }
  
  export class GetCustomerReturnReasons extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetCustomerReturnReasonsResponse> {
  }
  
  export class GetCustomerReturnReasonsResponse extends EVA.API.ResponseMessage {
    CustomerReturnReasons : EVA.Framework.EnumDto[]; 
  }
  
  export class GetDataModelForTemplateHandler extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetDataModelForTemplateHandlerResponse> {
    Handler : string; 
  }
  
  export class GetDataModelForTemplateHandlerResponse extends EVA.API.ResponseMessage {
    DataModel : any; 
    SampleData : any; 
  }
  
  export class GetDiscountByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetDiscountByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetDiscountByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string; 
    IsActive : boolean; 
    Description : string; 
    MarketingDescription : string; 
    CampaignName : string; 
    NeedsReason : boolean; 
    DiscountOrderType : EVA.Core.DiscountOrderTypes; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    LedgerClassID : string; 
    MaximumUsage? : number; // Int32, nullable
    MaximumUsagePerOrder? : number; // Int32, nullable
    ActionType : string; 
    ActionData : any; 
    Conditions : EVA.Core.Services.Management.GetDiscountByIDResponseDiscountConditionDto[]; 
    ConditionType : EVA.Core.DiscountConditionTypes; 
    Trigger : EVA.Core.DiscountTriggers; 
    LayerID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    CurrencyID : string; 
    CreatedByFullName : string; 
    CreationTime : string; // DateTime
    LastModifiedByFullName : string; 
    LastModificationTime? : string; // DateTime, nullable
    VerifiedByFullName : string; 
    VerificationTime? : string; // DateTime, nullable
  }
  
  export class GetDiscountCoupons extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.GetDiscountCouponsResponse> {
    DiscountID : number; // Int32
  }
  
  export class GetDiscountCouponsResponse extends EVA.API.PagedResultResponse<EVA.Core.DiscountCouponDto> {
  }
  
  export class GetDiscountLayerByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetDiscountLayerByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetDiscountLayerByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Sequence : number; // Int32
    IsExclusive : boolean; 
    // This layer is managed by EVA and cannot be changed.
    IsSystem : boolean; 
  }
  
  export class GetEmployeeDataByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetEmployeeDataByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetEmployeeDataByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    UserEmailAddress : string; 
    EmployeeNumber : string; 
    Function : string; 
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    PrimaryOrganizationUnitName : string; 
    ManagerID? : number; // Int32, nullable
    ManagerFullName : string; 
    ManagerEmailAddress : string; 
    AdditionalOrganizationUnitIDs : number[]; 
  }
  
  export class GetEmployeeDataByUserID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetEmployeeDataByIDResponse> {
    UserID : number; // Int32
  }
  
  export class GetFlattenedFunctionalityByUserID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetFlattenedFunctionalityByUserIDResponse> {
    UserID : number; // Int32
    OrganizationUnitID : number; // Int32
  }
  
  export class GetFlattenedFunctionalityByUserIDResponse extends EVA.API.ResponseMessage {
    Functionalities : string[]; 
    ScopedFunctionalities : EVA.Framework.FunctionalityWithScope[]; 
  }
  
  export class GetFraudItem extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetFraudItemResponse> {
    ID : number; // Int32
  }
  
  export class GetFraudItemResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    TypeID : number; // Int32
    Data : string; 
    Object : any; 
  }
  
  export class GetFunctionalitiesByUserID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetFunctionalitiesByUserIDResponse> {
    UserID : number; // Int32
    OrganizationUnitID : number; // Int32
  }
  
  export class GetFunctionalitiesByUserIDResponse extends EVA.API.ResponseMessage {
    AvailableFunctionalities : string[]; 
    CurrentFunctionalities : string[]; 
    CurrentFunctionalitiesExtended : EVA.Core.Services.Management.FunctionalityDto[]; 
  }
  
  export class GetLanguages extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetLanguagesResponse> {
  }
  
  export class GetLanguagesResponse extends EVA.API.ResponseMessage {
    Languages : string[]; 
  }
  
  export class GetLedgerClasses extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetLedgerClassesResponse> {
  }
  
  export class GetLedgerClassesResponse extends EVA.API.ResponseMessage {
    LedgerClasses : string[]; 
  }
  
  export class GetMessageTemplateByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetMessageTemplateByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetMessageTemplateByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Header : string; 
    Template : string; 
    Footer : string; 
    Helpers : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class GetOrganizationUnitGroupByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitGroupByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetOrganizationUnitGroupByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    OrganizationUnits : EVA.Core.Services.Management.GetOrganizationUnitGroupByIDResponseOrganizationUnitGroupDto[]; 
  }
  
  export class GetOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitSetResponse> {
    ID : number; // Int32
  }
  
  export class GetOrganizationUnitSetDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitSetDetailsResponse> {
    ID : number; // Int32
    SubsetOrdering? : EVA.Core.Services.Management.OrganizationSubsetOrdering; 
  }
  
  export class GetOrganizationUnitSetDetailsResponse extends EVA.API.ResponseMessage {
    Set : EVA.Core.Services.Management.OrganizationUnitSetDetails; 
    DeclaredSubsets : EVA.Core.Services.Management.GetOrganizationUnitSetDetailsResponseOrganizationUnitSubset[]; 
  }
  
  export class GetOrganizationUnitSetResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetTypes; 
    OrganizationUnitID? : number; // Int32, nullable
    Scope : EVA.Framework.EnumDto; 
  }
  
  export class GetOrganizationUnitSetScopes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitSetScopesResponse> {
  }
  
  export class GetOrganizationUnitSetScopesResponse extends EVA.API.ResponseMessage {
    Scopes : EVA.Core.Services.Management.GetOrganizationUnitSetScopesResponseOrganizationUnitSetScope[]; 
  }
  
  export class GetOrganizationUnitShippingMethodByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitShippingMethodByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetOrganizationUnitShippingMethodByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShippingMethodID : number; // Int32
    ShippingMethodName : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    Priority : number; // Int32
  }
  
  export class GetOrganizationUnitSupplierDataByOrganizationUnitID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetOrganizationUnitSupplierDataByOrganizationUnitIDResponse> {
    OrganizationUnitID : number; // Int32
  }
  
  export class GetOrganizationUnitSupplierDataByOrganizationUnitIDResponse extends EVA.API.ResponseMessage {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    EstimatedDeliveryDays? : number; // Int32, nullable
  }
  
  export class GetPaymentMethods extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPaymentMethodsResponse> {
  }
  
  export class GetPaymentMethodsResponse extends EVA.API.ResponseMessage {
    PaymentMethods : EVA.Core.Services.Management.GetPaymentMethodsResponsePaymentMethodDto[]; 
  }
  
  export class GetPaymentTypeByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPaymentTypeByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPaymentTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    PaymentMethodID? : number; // Int32, nullable
    PaymentMethodName : string; 
    OrganizationUnitSetID? : number; // Int32, nullable
    OrganizationUnitSetName : string; 
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    IsRoundingType : boolean; 
    IsExternal : boolean; 
    ReturnAction : EVA.Core.PaymentReturnActions; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
  }
  
  export class GetPriceListAdjustmentByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListAdjustmentByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPriceListAdjustmentByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    PriceListID : number; // Int32
    PriceList : EVA.Core.Services.Management.GetPriceListAdjustmentByIDResponsePriceListDto; 
    ParentAdjustmentID? : number; // Int32, nullable
    ParentAdjustmentName : string; 
    Sequence : number; // Int32
    Name : string; 
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
    OverridePrice : boolean; 
    Type : string; 
    Data : any; 
    LabelID? : number; // Int32, nullable
    Label : string; 
  }
  
  export class GetPriceListByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPriceListByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    BackendSystemID : string; 
    CurrencyID : string; 
    TimeZone : string; 
    IncludingVat : boolean; 
    IsActive : boolean; 
    IsSpecialPricesPriceList : boolean; 
    SpecialPricesPriceListID? : number; // Int32, nullable
    SpecialPricesPriceList : EVA.Core.Services.Management.PriceListDto; 
  }
  
  export class GetPriceListManualInputAdjustmentByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListManualInputAdjustmentByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPriceListManualInputAdjustmentByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    PriceListAdjustmentID : number; // Int32
    ProductID : number; // Int32
    ProductName : string; 
    ProductCustomID : string; 
    Value : number; // Decimal
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class GetPriceListOrganizationUnitByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListOrganizationUnitByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPriceListOrganizationUnitByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    PriceListID : number; // Int32
    PriceList : EVA.Core.Services.Management.GetPriceListOrganizationUnitByIDResponsePriceListDto; 
    PriceListUsageTypeID : number; // Int32
    PriceListUsageTypeName : string; 
  }
  
  export class GetPriceListUsageTypeByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListUsageTypeByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPriceListUsageTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    RequiredUserType : EVA.Framework.UserTypes; 
  }
  
  export class GetPriceListUsageTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetPriceListUsageTypesResponse> {
  }
  
  export class GetPriceListUsageTypesResponse extends EVA.API.ResponseMessage {
    PriceListUsageTypes : EVA.Core.Services.Management.GetPriceListUsageTypesResponsePriceListUsageTypeDto[]; 
  }
  
  export class GetProductSearchTemplateByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetProductSearchTemplateByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetProductSearchTemplateByIDResponse extends EVA.API.ResponseMessage {
    Name : string; 
    LanguageID : string; 
    CountryID : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
  }
  
  export class GetRole extends EVA.API.GetRequestGeneric<EVA.Core.Services.Management.GetRoleResponse> {
  }
  
  export class GetRoleResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.Management.GetRoleResponseRoleWithFunctionalitiesDto; 
  }
  
  export class GetRoleSetByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetRoleSetByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetRoleSetByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Roles : EVA.Core.Services.Management.RoleDto[]; 
  }
  
  export class GetRolesForOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetRolesForOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
  }
  
  export class GetRolesForOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Roles : EVA.Core.Services.Management.RoleDto[]; 
  }
  
  export class GetSetting extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSettingResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    Key : string; 
  }
  
  export class GetSettingResponse extends EVA.API.ResponseMessage {
    Value : string; 
  }
  
  export class GetShippingCostByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetShippingCostByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShippingCostByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string; 
    ShippingMethodID? : number; // Int32, nullable
    ShippingMethodName : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    CountryID : string; 
    MinimumOrderAmount? : number; // Decimal, nullable
    MaximumOrderAmount? : number; // Decimal, nullable
    CurrencyID : string; 
    UnitPriceInTax : number; // Decimal
    ZipCodes : string[]; 
  }
  
  export class GetShippingMethodByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetShippingMethodByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShippingMethodByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    PaymentHandledByCarrier : boolean; 
    InvoicingHandledByCarrier : boolean; 
    CarrierID : number; // Int32
    CarrierName : string; 
    CarrierCode : string; 
    DeliveryType : EVA.Core.ShippingMethodDeliveryTypes; 
  }
  
  export class GetShippingRestrictionByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetShippingRestrictionByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShippingRestrictionByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    OrganizationUnitSetID : number; // Int32
    OrganizationUnitSetName : string; 
    CountryID : string; 
    CountryName : string; 
    ZipCodeFrom : string; 
    ZipCodeTo : string; 
    ProductPropertyTypeID : string; 
    ProductPropertyTypeValues : string[]; 
    Type : EVA.Core.ShippingRestrictionType; 
  }
  
  export class GetStationProxyStatus extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetStationProxyStatusResponse> {
    ProxyID : string; 
  }
  
  export class GetStationProxyStatusResponse extends EVA.API.ResponseMessage {
    Registered : boolean; 
    OrganizationUnitID : number; // Int32
    StationID : number; // Int32
  }
  
  export class GetStockDetailsForOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetStockDetailsForOrganizationUnitResponse> {
    ProductID : number; // Int32
    OrganizationUnitSetID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    StockLabelIDs : number[]; 
  }
  
  export class GetStockDetailsForOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.Services.Management.GetStockDetailsForOrganizationUnitResponseModel[]; 
  }
  
  export class GetStockMutationReasonsForOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetStockMutationReasonsForOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
  }
  
  export class GetStockMutationReasonsForOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Reasons : EVA.Core.Services.Management.GetStockMutationReasonsForOrganizationUnitResponseStockMutationReason[]; 
  }
  
  export class GetSubscriptionHandlers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSubscriptionHandlersResponse> {
  }
  
  export class GetSubscriptionHandlersResponse extends EVA.API.ResponseMessage {
    Handlers : string[]; 
  }
  
  export class GetSubscriptionOrganizationUnitSets extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSubscriptionOrganizationUnitSetsResponse> {
  }
  
  export class GetSubscriptionOrganizationUnitSetsResponse extends EVA.API.ResponseMessage {
    SubscriptionOrganizationUnitSets : EVA.Core.Services.Management.GetSubscriptionOrganizationUnitSetsResponseSubscriptionOrganizationUnitSetDto[]; 
  }
  
  export class GetSupplierForProductResponse extends EVA.API.GetListResponse<EVA.Core.Services.Management.GetSupplierForProductResponseSupplierDto> {
  }
  
  export class GetSupplierProductByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSupplierProductByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetSupplierProductByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    PrimitiveName : string; 
    Status : EVA.Core.ProductStatus; 
    Description : string; 
    PreferredMinimumOrderQuantity? : number; // Int32, nullable
    TaxCode : EVA.Framework.EnumDto; 
    QuantityOnHand : number; // Int32
    CostPrice? : number; // Decimal, nullable
    RecommendedRecommendedRetailPrice? : number; // Decimal, nullable
    CurrencyID : string; 
  }
  
  export class GetSuppliersForProduct extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSupplierForProductResponse> {
    ProductID : number; // Int32
  }
  
  export class GetSupportedFunctionalities extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetSupportedFunctionalitiesResponse> {
  }
  
  export class GetSupportedFunctionalitiesResponse extends EVA.API.ResponseMessage {
    Functionalities : string[]; 
    ScopedFunctionalities : EVA.Core.Services.Management.GetSupportedFunctionalitiesResponseFunctionalityDefinition[]; 
  }
  
  export class GetUnitOfMeasures extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetUnitOfMeasuresResponse> {
  }
  
  export class GetUnitOfMeasuresResponse extends EVA.API.ResponseMessage {
    UnitOfMeasures : EVA.Core.Services.Management.GetUnitOfMeasuresResponseUnitOfMeasureDto[]; 
  }
  
  export class GetUrlRewriteByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetUrlRewriteByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetUrlRewriteByIDResponse extends EVA.API.ResponseMessage {
    Rewrite : EVA.Core.Services.Management.UrlRewriteDto; 
  }
  
  export class GetUrlRewrites extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetUrlRewritesResponse> {
  }
  
  export class GetUrlRewritesResponse extends EVA.API.ResponseMessage {
    Rewrites : EVA.Core.Services.Management.UrlRewriteDto[]; 
  }
  
  export class GetUserOrigins extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetUserOriginsResponse> {
  }
  
  export class GetUserOriginsResponse extends EVA.API.ResponseMessage {
    UserOrigins : EVA.Core.Services.Management.GetUserOriginsResponseUserOriginDto[]; 
  }
  
  export class GetUserRequirements extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.GetUserRequirementsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class GetUserRequirementsResponse extends EVA.API.ResponseMessage {
    Requirements : { [ key : string ] : EVA.Core.UserRequirement }; 
  }
  
  export class GetUserRolesByUserID extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.GetUserRolesByUserIDResponse> {
    UserID : number; // Int32
    OrganizationUnitID : number; // Int32
  }
  
  export class GetUserRolesByUserIDResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.Management.GetUserRolesByUserIDResponseUserRoleDto[]; 
  }
  
  export class LedgerClassDto {
    ID : string; 
  }
  
  export class ListAccounts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListAccountsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListAccountsFilter>; 
  }
  
  export class ListAccountsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.Core.ListAccountsItem>; 
  }
  
  export class ListAssortmentProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListAssortmentProductsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListAssortmentProductsFilter>; 
  }
  
  export class ListAssortmentProductsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListAssortmentProductsResponseAssortmentProduct> {
  }
  
  export class ListAssortments extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListAssortmentsResponse> {
  }
  
  export class ListAssortmentsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListAssortmentsResponseAssortmentDto> {
  }
  
  export class ListAvailableDiscountActionsAndConditions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListAvailableDiscountActionsAndConditionsResponse> {
  }
  
  export class ListAvailableDiscountActionsAndConditionsResponse extends EVA.API.ResponseMessage {
    Conditions : string[]; 
    Actions : string[]; 
  }
  
  export class ListBadges extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListBadgesResponse> {
  }
  
  export class ListBadgesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.BadgeDto> {
  }
  
  export class ListCarriers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListCarriersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCarriersFilter>; 
  }
  
  export class ListCarriersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.CarrierDto> {
  }
  
  export class ListCashHandlers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListCashHandlersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCashHandlersFilter>; 
  }
  
  export class ListCashHandlersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListCashHandlersResponseCashHandlerDto> {
  }
  
  export class ListCultures extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListCulturesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.CultureFilter>; 
  }
  
  export class ListCulturesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListCulturesResponseCultureDto> {
  }
  
  export class ListCumulativeStock extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListCumulativeStockResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCumulativeStockFilter>; 
    IncludedFields : string[]; 
  }
  
  export class ListCumulativeStockResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListCumulativeStockResponseModel> {
  }
  
  export class ListDiscountLayers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListDiscountLayersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListDiscountLayerFilter>; 
  }
  
  export class ListDiscountLayersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListDiscountLayersResponseDiscountLayerDto> {
  }
  
  export class ListEmployeeDatas extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListEmployeeDatasResponse> {
  }
  
  export class ListEmployeeDatasResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.EmployeeDataDto> {
  }
  
  export class ListExchangeRates extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListExchangeRatesFilter, EVA.Core.Services.Management.ListExchangeRatesResponse> {
  }
  
  export class ListExchangeRatesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListExchangeRatesResponseExchangeRateDto> {
  }
  
  export class ListFraudItems extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListFraudItemsResponse> {
  }
  
  export class ListFraudItemsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.FraudItemDto> {
  }
  
  export class ListLedgerClass extends EVA.API.GetRequestGeneric<EVA.Core.Services.Management.ListLedgerClassResponse> {
  }
  
  export class ListLedgerClassResponse extends EVA.API.GetResponse<EVA.Core.Services.Management.LedgerClassDto[]> {
  }
  
  export class ListManagementShippingMethods extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListManagementShippingMethodsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListShippingMethodsFilter>; 
  }
  
  export class ListManagementShippingMethodsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ShippingMethodDto> {
  }
  
  export class ListMessageTemplateLayouts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListMessageTemplateLayoutsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
  }
  
  export class ListMessageTemplateLayoutsResponse extends EVA.API.ResponseMessage {
    Layouts : string[]; 
  }
  
  export class ListMessageTemplates extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListMessageTemplatesResponse> {
  }
  
  export class ListMessageTemplatesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListMessageTemplatesResponseMessageTemplateDto> {
  }
  
  export class ListOrganizationUnitCountries extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListOrganizationUnitCountriesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.OrganizationUnitCountryFilter>; 
  }
  
  export class ListOrganizationUnitCountriesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListOrganizationUnitCountriesResponseOrganizationUnitCountryDto> {
  }
  
  export class ListOrganizationUnitCurrencies extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListOrganizationUnitCurrenciesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.OrganizationUnitCurrencyFilter>; 
  }
  
  export class ListOrganizationUnitCurrenciesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListOrganizationUnitCurrenciesResponseOrganizationUnitCurrencyDto> {
  }
  
  export class ListOrganizationUnitGroups extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListOrganizationUnitGroupsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrganizationUnitGroupsFilter>; 
  }
  
  export class ListOrganizationUnitGroupsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListOrganizationUnitGroupsResponseOrganizationUnitGroupDto> {
  }
  
  export class ListOrganizationUnitLanguages extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListOrganizationUnitLanguagesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.OrganizationUnitLanguageFilter>; 
  }
  
  export class ListOrganizationUnitLanguagesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListOrganizationUnitLanguagesResponseOrganizationUnitLanguageDto> {
  }
  
  export class ListOrganizationUnitSets extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListOrganizationUnitSetsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrganizationUnitSetsFilter>; 
  }
  
  export class ListOrganizationUnitSetsResponse extends EVA.API.PagedResultResponse<EVA.Core.ListOrganizationUnitSetsItem> {
  }
  
  export class ListOrganizationUnitShippingMethods extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListOrganizationUnitShippingMethodsResponse> {
  }
  
  export class ListOrganizationUnitShippingMethodsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.OrganizationUnitShippingMethodDto> {
  }
  
  export class ListPaymentSettlements extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListSettlementsFilter, EVA.Core.Services.Management.ListPaymentSettlementsResponse> {
  }
  
  export class ListPaymentSettlementsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListPaymentSettlementsResponsePaymentSettlement> {
  }
  
  export class ListPaymentTypes2 extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListPaymentTypes2Response> {
  }
  
  export class ListPaymentTypes2Response extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListPaymentTypes2ResponsePaymentTypeDto> {
  }
  
  export class ListPendingUsers extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListPendingUsersResponse> {
  }
  
  export class ListPendingUsersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.PendingUser> {
  }
  
  export class ListPriceListAdjustments extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListPriceListAdjustmentsFilter, EVA.Core.Services.Management.ListPriceListAdjustmentsResponse> {
  }
  
  export class ListPriceListAdjustmentsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListPriceListAdjustmentsResponsePriceListAdjustmentDto> {
  }
  
  export class ListPriceListManualInputAdjustments extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListManualInputAdjustmentsFilter, EVA.Core.Services.Management.ListPriceListManualInputAdjustmentsResponse> {
  }
  
  export class ListPriceListManualInputAdjustmentsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListPriceListManualInputAdjustmentsResponsePriceListManualInputAdjustmentDto> {
  }
  
  export class ListPriceListOrganizationUnits extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListPriceListOrganizationUnitsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListPriceListOrganizationUnitsFilter>; 
  }
  
  export class ListPriceListOrganizationUnitsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListPriceListOrganizationUnitsResponsePriceListOrganizationUnitDto> {
  }
  
  export class ListPriceLists extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListPriceListsFilter, EVA.Core.Services.Management.ListPriceListsResponse> {
  }
  
  export class ListPriceListsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.PriceListDto> {
  }
  
  export class ListProductBarcodes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListProductBarcodesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListProductBarcodesFilter>; 
  }
  
  export class ListProductBarcodesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListProductBarcodesResponseProductBarcodeDto> {
  }
  
  export class ListProductGiftCards extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListProductGiftCardsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListProductGiftCardsFilter>; 
  }
  
  export class ListProductGiftCardsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListProductGiftCardsResponseProductGiftCardDto> {
  }
  
  export class ListProductPriceLedger extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListProductPriceLedgerResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListProductPriceLedgerFilter>; 
  }
  
  export class ListProductPriceLedgerResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListProductPriceLedgerResponseOrganizationUnitPriceChange> {
  }
  
  export class ListProductSearchTemplates extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListProductSearchTemplatesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ProductSearchTemplateFilters>; 
  }
  
  export class ListProductSearchTemplatesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListProductSearchTemplatesResponseProductSearchDto> {
  }
  
  export class ListProductUnitOfMeasures extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListProductUnitOfMeasuresResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListProductUnitOfMeasuresFilter>; 
  }
  
  export class ListProductUnitOfMeasuresResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListProductUnitOfMeasuresResponseProductUnitOfMeasureDto> {
  }
  
  export class ListRestockedProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListRestockedProductsResponse> {
    OrganizationUnitID : number; // Int32
    From : string; // DateTime
    To? : string; // DateTime, nullable
    StockLabelIDs : number[]; 
  }
  
  export class ListRestockedProductsResponse extends EVA.API.ResponseMessage {
    Results : { [ key : number ] : number[] }; 
  }
  
  export class ListRoles extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListRolesResponse> {
  }
  
  export class ListRoleSets extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListRoleSetsResponse> {
  }
  
  export class ListRoleSetsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListRoleSetsResponseRoleSetDto> {
  }
  
  export class ListRolesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.RoleDto> {
  }
  
  export class ListSettings extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListSettingsResponse> {
    OrganizationUnitID : number; // Int32
    KeyPrefix : string; 
  }
  
  export class ListSettingsPerOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListSettingsPerOrganizationUnitResponse> {
    KeyPrefix : string; 
  }
  
  export class ListSettingsPerOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Result : { [ key : number ] : { [ key : string ] : EVA.Core.Services.Management.SettingDto } }; 
  }
  
  export class ListSettingsResponse extends EVA.API.ResponseMessage {
    Result : { [ key : string ] : EVA.Core.Services.Management.SettingDto }; 
  }
  
  export class ListShippingCosts extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListShippingCostsResponse> {
  }
  
  export class ListShippingCostsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ShippingCostDto> {
  }
  
  export class ListShippingMethods extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListShippingMethodsResponse> {
  }
  
  export class ListShippingMethodsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListShippingMethodsResponseShippingMethodDto> {
  }
  
  export class ListShippingMethodTransportationTimes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListShippingMethodTransportationTimesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListTransportationTimesFilter>; 
  }
  
  export class ListShippingMethodTransportationTimesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.Core.ShippingMethodTransportationTimeItem>; 
  }
  
  export class ListShippingRestrictions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListShippingRestrictionsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListShippingRestrictionsFilter>; 
  }
  
  export class ListShippingRestrictionsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ShippingRestrictionDto> {
  }
  
  export class ListStockForOrganizationUnits extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListStockForOrganizationUnitsResponse> {
    DateTime? : string; // DateTime, nullable
    OrganizationUnitIDs : number[]; 
    SplitByOrganizationUnit : boolean; 
    DownloadOverview : boolean; 
    Query : string; 
  }
  
  export class ListStockForOrganizationUnitsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListStockForOrganizationUnitsResponseStockDto> {
    Products : { [ key : number ] : EVA.Core.Services.Management.ListStockForOrganizationUnitsResponseProductDto }; 
    Url : string; 
  }
  
  export class ListSubscriptions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListSubscriptionsResponse> {
  }
  
  export class ListSubscriptionsResponse extends EVA.API.ResponseMessage {
    Subscriptions : EVA.Core.Services.Management.ListSubscriptionsResponseSubscriptionDto[]; 
  }
  
  export class ListSupplierProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListSupplierProductsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListSupplierProductsFilter>; 
  }
  
  export class ListSupplierProductsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.ListSupplierProductsResponseSupplierProductDto> {
  }
  
  export class ListTemplateHandlers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ListTemplateHandlersResponse> {
  }
  
  export class ListTemplateHandlersResponse extends EVA.API.ResponseMessage {
    Handlers : string[]; 
  }
  
  export class ListUrlRewrites extends EVA.API.PagedResultRequest<EVA.Core.Services.Management.ListUrlRewritesResponse> {
  }
  
  export class ListUrlRewritesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.UrlRewriteDto> {
  }
  
  export class ListMessageTemplatesResponseMessageTemplateDto {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    LanguageID : string; 
    CountryID : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class CalculateStockDetailsResponseModel {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    ProductID : number; // Int32
    QuantityOnHand : number; // Int32
    QuantityCommitted : number; // Int32
    TotalQuantityAvailable : number; // Int32
  }
  
  export class GetStockDetailsForOrganizationUnitResponseModel {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    StockLabel : EVA.Framework.EnumDto; 
    QuantityOnHand : number; // Int32
    QuantityCommitted : number; // Int32
  }
  
  export class ListCumulativeStockResponseModel {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    OrganizationUnitBackendID : string; 
    Product : any; 
    QuantityOnHand : number; // Int32
  }
  
  export class MoveDiscountLayer extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    AfterDiscountLayerID : number; // Int32
  }
  
  export enum OrganizationSubsetOrdering {
    Ascending = 0,
    Descending = 1,
  }
  
  export class ListOrganizationUnitCountriesResponseOrganizationUnitCountryDto {
    ID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    CountryID : string; 
    InheritedFromOrganizationUnitID? : number; // Int32, nullable
    InheritedFromOrganizationUnitName : string; 
  }
  
  export class ListOrganizationUnitCurrenciesResponseOrganizationUnitCurrencyDto {
    ID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    CurrencyID : string; 
    CashHandlerID : number; // Int32
    CashHandlerName : string; 
    InheritedFromOrganizationUnitID? : number; // Int32, nullable
    InheritedFromOrganizationUnitName : string; 
  }
  
  export class GetAllFunctionalitiesForCurrentUserAsTreeResponseOrganizationUnitDto {
    ID : number; // Int32
    Functionalities : EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserAsTreeResponseFunctionalityDto[]; 
    Children : EVA.Core.Services.Management.GetAllFunctionalitiesForCurrentUserAsTreeResponseOrganizationUnitDto[]; 
  }
  
  export class GetOrganizationUnitGroupByIDResponseOrganizationUnitGroupDto {
    ID : number; // Int32
    Name : string; 
  }
  
  export class ListOrganizationUnitGroupsResponseOrganizationUnitGroupDto {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
  }
  
  export class ListOrganizationUnitLanguagesResponseOrganizationUnitLanguageDto {
    ID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    LanguageID : string; 
    InheritedFromOrganizationUnitID? : number; // Int32, nullable
    InheritedFromOrganizationUnitName : string; 
  }
  
  export class ListProductPriceLedgerResponseOrganizationUnitPriceChange {
    ProductID : number; // Int32
    PriceListID : number; // Int32
    PriceListUsageTypeID : number; // Int32
    PriceListUsageTypeName : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    OldPrice? : number; // Decimal, nullable
    NewPrice? : number; // Decimal, nullable
    OldOriginalPrice? : number; // Decimal, nullable
    NewOriginalPrice? : number; // Decimal, nullable
    CreationTime : string; // DateTime
    CurrencyID : string; 
  }
  
  export class OrganizationUnitSetDetails {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetTypes; 
    OperatorType : EVA.Core.OrganizationUnitSetOperatorTypes; 
    OrganizationUnitSetID? : number; // Int32, nullable
    Definition : EVA.Core.OrganizationUnitSetDefinition; 
    Subsets : EVA.Core.Services.Management.OrganizationUnitSetDetails[]; 
    Scope : EVA.Framework.EnumDto; 
  }
  
  export class GetOrganizationUnitSetScopesResponseOrganizationUnitSetScope {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    OrganizationUnitUniqueInScope : boolean; 
  }
  
  export class OrganizationUnitShippingMethodDto {
    ID : number; // Int32
    ShippingMethodID : number; // Int32
    ShippingMethodName : string; 
    ShippingMethodCarrierName : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    Priority : number; // Int32
  }
  
  export class GetOrganizationUnitSetDetailsResponseOrganizationUnitSubset {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetOperatorTypes; 
    SequenceNumber : number; // Int32
  }
  
  export class CreateOrganizationUnitSetOrganizationUnitSubSetDefinition {
    ID : number; // Int32
    OperatorType : EVA.Core.OrganizationUnitSetOperatorTypes; 
  }
  
  export class GetPaymentMethodsResponsePaymentMethodDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
  }
  
  export class ListPaymentSettlementsResponsePaymentSettlement {
    ID : number; // Int32
    PaymentTransactionID : number; // Int32
    TypeID : number; // Int32
    TypeName : string; 
    Amount : number; // Decimal
    CurrencyID : string; 
    LedgerClassID : string; 
  }
  
  export class ListPaymentTypes2ResponsePaymentTypeDto {
    ID : number; // Int32
    PaymentMethodID? : number; // Int32, nullable
    PaymentMethodName : string; 
    OrganizationUnitSetID? : number; // Int32, nullable
    OrganizationUnitSetName : string; 
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    IsRoundingType : boolean; 
    IsExternal : boolean; 
    ReturnAction : EVA.Core.PaymentReturnActions; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
  }
  
  export class PendingUser {
    ID : number; // Int32
    FullName : string; 
    EmailAddress : string; 
    GravatarHash : string; 
  }
  
  export class PreviewMessageTemplate extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.PreviewMessageTemplateResponse> {
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Header : string; 
    Template : string; 
    Footer : string; 
    Helpers : string; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    Type : EVA.Core.MessageTemplateTypes; 
    TargetContentType : EVA.Core.MessageTargetContentTypes; 
    SampleData : any; 
    StationID? : number; // Int32, nullable
  }
  
  export class PreviewMessageTemplateResponse extends EVA.API.ResponseMessage {
    Url : string; 
    Success : boolean; 
    Message : string; 
  }
  
  export class PreviewOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.PreviewOrganizationUnitSetResponse> {
    Definition : EVA.Core.OrganizationUnitSetDefinition; 
    Subsets : EVA.Core.Services.Management.PreviewOrganizationUnitSetPreviewOrganizationUnitSubSetDefinition[]; 
    SubsetOrdering? : EVA.Core.Services.Management.OrganizationSubsetOrdering; 
  }
  
  export class PreviewOrganizationUnitSetResponse extends EVA.API.ResponseMessage {
    Set : EVA.Core.Services.Management.OrganizationUnitSetDetails; 
  }
  
  export class PreviewOrganizationUnitSetPreviewOrganizationUnitSubSetDefinition {
    ID : number; // Int32
    OperatorType : EVA.Core.OrganizationUnitSetOperatorTypes; 
    SequenceNumber? : number; // Int32, nullable
  }
  
  export class ListPriceListAdjustmentsResponsePriceListAdjustmentDto {
    ID : number; // Int32
    PriceListID : number; // Int32
    PriceList : EVA.Core.Services.Management.ListPriceListAdjustmentsResponsePriceListAdjustmentDtoPriceListDto; 
    ParentAdjustmentID? : number; // Int32, nullable
    ParentAdjustmentName : string; 
    Sequence : number; // Int32
    Name : string; 
    Label : string; 
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
    OverridePrice : boolean; 
    Type : string; 
    Data : any; 
  }
  
  export class GetPriceListAdjustmentByIDResponsePriceListDto {
    Name : string; 
    CurrencyID : string; 
    TimeZone : string; 
  }
  
  export class PriceListDto {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    BackendSystemID : string; 
    CurrencyID : string; 
    TimeZone : string; 
    IncludingVat : boolean; 
    IsActive : boolean; 
    IsSpecialPricesPriceList : boolean; 
    SpecialPricesPriceListID? : number; // Int32, nullable
    SpecialPricesPriceList : EVA.Core.Services.Management.PriceListDto; 
  }
  
  export class GetPriceListOrganizationUnitByIDResponsePriceListDto {
    Name : string; 
    CurrencyID : string; 
  }
  
  export class ListPriceListAdjustmentsResponsePriceListAdjustmentDtoPriceListDto {
    Name : string; 
    CurrencyID : string; 
    TimeZone : string; 
  }
  
  export class ListPriceListOrganizationUnitsResponsePriceListOrganizationUnitDtoPriceListDto {
    Name : string; 
    CurrencyID : string; 
  }
  
  export class ListPriceListManualInputAdjustmentsResponsePriceListManualInputAdjustmentDto {
    ID : number; // Int32
    ProductID : number; // Int32
    ProductName : string; 
    ProductCustomID : string; 
    Value : number; // Decimal
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class ListPriceListOrganizationUnitsResponsePriceListOrganizationUnitDto {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    PriceListID : number; // Int32
    PriceList : EVA.Core.Services.Management.ListPriceListOrganizationUnitsResponsePriceListOrganizationUnitDtoPriceListDto; 
    PriceListUsageTypeID : number; // Int32
    PriceListUsageTypeName : string; 
  }
  
  export class GetPriceListUsageTypesResponsePriceListUsageTypeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    RequiredUserType : EVA.Framework.UserTypes; 
  }
  
  export class PrintQRCode extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    StationID? : number; // Int32, nullable
    QRData : string; 
  }
  
  export class ProcessUnshippedPurchaseOrdersFromExcel extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class ListProductBarcodesResponseProductBarcodeDto {
    ProductID : number; // Int32
    ProductCustomID : string; 
    ProductBackendID : string; 
    CatalogID : number; // Int32
    Origin : EVA.Core.ProductBarcodeOrigin; 
    Barcode : string; 
    ProductDisplayValue : string; 
    Quantity : number; // Int32
    Name : string; 
    UnitOfMeasure : EVA.Framework.EnumDto; 
    IsSupplierProduct : boolean; 
  }
  
  export class ListStockForOrganizationUnitsResponseProductDto {
    Product : any; 
    TaxRate : number; // Decimal
    TaxCodeID : number; // Int32
    UnitCost : number; // Decimal
    UnitPrice : number; // Decimal
    UnitPriceInTax : number; // Decimal
  }
  
  export class ListProductGiftCardsResponseProductGiftCardDto {
    ID : number; // Int32
    ProductID : number; // Int32
    ProductName : string; 
    Type : string; 
    Data : any; 
  }
  
  export class ListProductSearchTemplatesResponseProductSearchDto {
    ID : number; // Int32
    Name : string; 
    LanguageID : string; 
    CountryID : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
  }
  
  export class AddProductsToAssortmentProductSearchModel {
    Query : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
  }
  
  export class ListProductUnitOfMeasuresResponseProductUnitOfMeasureDto {
    ID : number; // Int32
    ProductID : number; // Int32
    ProductName : string; 
    UnitOfMeasureID : number; // Int32
    UnitOfMeasure : EVA.Framework.EnumDto; 
    Quantity : number; // Int32
  }
  
  export class RemoveProductsFromAssortment extends EVA.API.RequestMessageWithEmptyResponse {
    AssortmentID : number; // Int32
    ProductIDs : number[]; 
  }
  
  export class RoleDto {
    ID : number; // Int32
    Name : string; 
    UserTypeID : number; // Int32
    ApplicationID : number; // Int32
    Code : string; 
  }
  
  export class ListRoleSetsResponseRoleSetDto {
    ID : number; // Int32
    Name : string; 
  }
  
  export class GetRoleResponseRoleWithFunctionalitiesDto extends EVA.Core.Services.Management.RoleDto {
    Functionalities : string[]; 
    ScopedFunctionalities : EVA.Core.Services.Management.GetRoleResponseRoleWithFunctionalitiesDtoFunctionalityWithScope[]; 
  }
  
  export class SaveBadge extends EVA.API.RequestMessageWithEmptyResponse {
    Badge : EVA.Core.Services.Management.BadgeDto; 
  }
  
  export class SearchDiscountsByQuery extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.SearchDiscountsByQueryResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.SearchDiscountsByQueryFilter>; 
  }
  
  export class SearchDiscountsByQueryResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.Management.SearchDiscountsByQueryResponseDiscountDto> {
  }
  
  export class SearchStockMutations extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.SearchStockMutationsResponse> {
    Query : string; 
    PageConfig : EVA.Framework.ScrollablePageConfig<EVA.Core.StockMutationFilters>; 
  }
  
  export class SearchStockMutationsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.ScrollablePagedResult<EVA.Core.SearchStockMutationResult>; 
  }
  
  export class SendSampleMailMessageTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Template : string; 
    Helpers : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    EmailAddress : string; 
    SampleData : any; 
  }
  
  export class SetOrganizationUnitSupplierData extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    EstimatedDeliveryDays? : number; // Int32, nullable
  }
  
  export class SetRolesForRoleSet extends EVA.API.RequestMessageWithEmptyResponse {
    RoleSetID : number; // Int32
    Roles : number[]; 
  }
  
  export class SetSetting extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
    Key : string; 
    Value : string; 
    Sensitivity : EVA.Framework.SettingSensitivityTypes; 
  }
  
  export class GetAvailableSettingsResponseSetting {
    Key : string; 
    Description : string; 
    DefaultValue : any; 
    Sensitivity : EVA.Framework.SettingSensitivityTypes; 
    Type : string; 
  }
  
  export class SettingDto {
    OrganizationUnitID : number; // Int32
    OrganizationUnitParentID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    Key : string; 
    Value : string; 
    SensitivityType : EVA.Framework.SettingSensitivityTypes; 
    Description : string; 
  }
  
  export class SetUserRequirements extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
    Requirements : { [ key : string ] : EVA.Core.UserRequirement }; 
  }
  
  export class ShippingCostDto {
    ID : number; // Int32
    BackendID : string; 
    ShippingMethodID? : number; // Int32, nullable
    ShippingMethodName : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    CountryID : string; 
    ZipCodes : string[]; 
    MinimumOrderAmount? : number; // Decimal, nullable
    MaximumOrderAmount? : number; // Decimal, nullable
    CurrencyID : string; 
    UnitPriceInTax : number; // Decimal
  }
  
  export class ShippingMethodDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    PaymentHandledByCarrier : boolean; 
    InvoicingHandledByCarrier : boolean; 
    CarrierID : number; // Int32
    CarrierName : string; 
    CarrierCode : string; 
    DeliveryType : EVA.Core.ShippingMethodDeliveryTypes; 
  }
  
  export class ListShippingMethodsResponseShippingMethodDto {
    ID : number; // Int32
    Name : string; 
    CarrierID : number; // Int32
    CarrierName : string; 
  }
  
  export class ShippingRestrictionDto {
    ID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    OrganizationUnitSetID : number; // Int32
    OrganizationUnitSetName : string; 
    CountryID : string; 
    CountryName : string; 
    ZipCodeFrom : string; 
    ZipCodeTo : string; 
    ProductPropertyTypeID : string; 
    ProductPropertyTypeValues : string[]; 
    Type : EVA.Core.ShippingRestrictionType; 
  }
  
  export class CreateStationStationToCreate {
    BackendID : string; 
    Name : string; 
    OrganizationUnitID : number; // Int32
    ProxyID : string; 
  }
  
  export class ListStockForOrganizationUnitsResponseStockDto {
    ProductID : number; // Int32
    QuantityOnHand : number; // Int32
    QuantityCommitted : number; // Int32
    QuantityAvailable : number; // Int32
    StockLabel : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
  }
  
  export class GetStockMutationReasonsForOrganizationUnitResponseStockMutationReason {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class ListSubscriptionsResponseSubscriptionDto {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    UserField : string; 
    Handler : string; 
  }
  
  export class GetSubscriptionOrganizationUnitSetsResponseSubscriptionOrganizationUnitSetDto {
    ID : number; // Int32
    SubscriptionID : number; // Int32
    SubscriptionName : string; 
    OrganizationUnitSetID : number; // Int32
    OrganizationUnitSetName : string; 
    Enabled : boolean; 
    Default : boolean; 
    ConfirmationRequired : boolean; 
  }
  
  export class GetSupplierForProductResponseSupplierDto {
    ID : number; // Int32
    Name : string; 
    UnitCost : number; // Decimal
    Stock : number; // Int32
  }
  
  export class ListSupplierProductsResponseSupplierProductDto {
    ID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    PrimitiveName : string; 
    Status : EVA.Core.ProductStatus; 
    Description : string; 
    PreferredMinimumOrderQuantity? : number; // Int32, nullable
    TaxCode : EVA.Framework.EnumDto; 
    QuantityOnHand : number; // Int32
    CostPrice? : number; // Decimal, nullable
    RecommendedRecommendedRetailPrice? : number; // Decimal, nullable
    CurrencyID : string; 
  }
  
  export class SyncStationSyncDevice {
    Id : string; 
    Name : string; 
    DeviceTypes : string[]; 
    Address : string; 
    FormatType : string; 
    UseDirectConnection : boolean; 
    EcrID : string; 
    HardwareID : string; 
  }
  
  export class SyncStation extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    Name : string; 
    PublicIpAddress : string; 
    Devices : EVA.Core.Services.Management.SyncStationSyncDevice[]; 
  }
  
  export class GetUnitOfMeasuresResponseUnitOfMeasureDto extends EVA.Framework.EnumDto {
    BackendID : string; 
  }
  
  export class UnsetSetting extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    Key : string; 
  }
  
  export class UpdateAccount extends EVA.API.UpdateRequest<EVA.Core.Services.Management.AccountDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class UpdateAssortment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
  }
  
  export class UpdateCarrier extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    BackendID : string; 
  }
  
  export class UpdateCashHandler extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class UpdateCustomerReturnReason extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class UpdateDevice extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    TypeID : number; // Int32
    NetworkName : string; 
    IpAddress : string; 
    StationID? : number; // Int32, nullable
    AssemblyName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    BackendID : string; 
  }
  
  export class UpdatedFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
    IsRemoved : boolean; 
    EndDate? : string; // DateTime, nullable
    DisableHierarchy : boolean; 
  }
  
  export class UpdateDiscount extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string; 
    IsActive : boolean; 
    Description : string; 
    MarketingDescription : string; 
    CampaignName : string; 
    NeedsReason : boolean; 
    DiscountOrderType : EVA.Core.DiscountOrderTypes; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    LedgerClassID : string; 
    MaximumUsage? : number; // Int32, nullable
    MaximumUsagePerOrder? : number; // Int32, nullable
    ActionType : string; 
    ActionData : any; 
    Conditions : EVA.Core.Services.Management.UpdateDiscountDiscountConditionDto[]; 
    ConditionType : EVA.Core.DiscountConditionTypes; 
    Trigger : EVA.Core.DiscountTriggers; 
    LayerID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    CurrencyID : string; 
  }
  
  export class UpdateDiscountCoupon extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    CouponCode : string; 
    IsActive : boolean; 
  }
  
  export class UpdateDiscountLayer extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Sequence : number; // Int32
    IsExclusive : boolean; 
  }
  
  export class UpdatedUserFunctionalitiesDto {
    UserID : number; // Int32
    OrganizationUnitID : number; // Int32
    Functionalities : EVA.Core.Services.Management.UpdatedFunctionalityDto[]; 
  }
  
  export class UpdateEmployeeData extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    UserID : number; // Int32
    EmployeeNumber : string; 
    Function : string; 
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    ManagerID? : number; // Int32, nullable
    AdditionalOrganizationUnitIDs : number[]; 
  }
  
  export class UpdateExchangeRate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ExchangeRate : number; // Decimal
  }
  
  export class UpdateFraudItem extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Data : string; 
    Object : any; 
  }
  
  export class UpdateMessageTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Header : string; 
    Template : string; 
    Footer : string; 
    Helpers : string; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class UpdateOrganizationUnitCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    CashHandlerID : number; // Int32
  }
  
  export class UpdateOrganizationUnitGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
  }
  
  export class UpdateOrganizationUnitSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    ScopeID? : number; // Int32, nullable
    Definition : EVA.Core.OrganizationUnitSetDefinition; 
  }
  
  export class UpdateOrganizationUnitSetScope extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    OrganizationUnitUniqueInScope : boolean; 
  }
  
  export class UpdateOrganizationUnitShippingMethod extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ShippingMethodID : number; // Int32
    OrganizationUnitID : number; // Int32
    Priority : number; // Int32
  }
  
  export class UpdatePaymentType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    PaymentMethodID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    Name : string; 
    Code : string; 
    IsActive : boolean; 
    IsRoundingType : boolean; 
    IsExternal : boolean; 
    ReturnAction : EVA.Core.PaymentReturnActions; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
  }
  
  export class UpdatePriceList extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    BackendSystemID : string; 
    CurrencyID : string; 
    TimeZone : string; 
    IncludingVat : boolean; 
    IsActive : boolean; 
    IsSpecialPricesPriceList? : boolean; 
    SpecialPricesPriceListID? : number; // Int32, nullable
  }
  
  export class UpdatePriceListAdjustment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    PriceListID : number; // Int32
    ParentAdjustmentID? : number; // Int32, nullable
    Sequence : number; // Int32
    Name : string; 
    Label : string; 
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
    OverridePrice : boolean; 
    Type : string; 
    Data : any; 
  }
  
  export class UpdatePriceListManualInputAdjustment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Value : number; // Decimal
    EffectiveDate : string; // DateTime
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class UpdatePriceListOrganizationUnit extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    PriceListID : number; // Int32
    PriceListUsageTypeID : number; // Int32
  }
  
  export class UpdatePriceListUsageType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
    RequiredUserType : EVA.Framework.UserTypes; 
  }
  
  export class UpdateProductGiftCard extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ProductID : number; // Int32
    Type : string; 
    Data : any; 
  }
  
  export class UpdateProductSearchTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
  }
  
  export class UpdateProductUnitOfMeasure extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ProductID : number; // Int32
    UnitOfMeasureID : number; // Int32
    Quantity : number; // Int32
  }
  
  export class UpdateRole extends EVA.API.UpdateRequest<EVA.Core.Services.Management.RoleDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class UpdateRoleSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
  }
  
  export class UpdateShippingCost extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string; 
    ShippingMethodID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    CountryID : string; 
    ZipCodes : string[]; 
    MinimumOrderAmount? : number; // Decimal, nullable
    MaximumOrderAmount? : number; // Decimal, nullable
    CurrencyID : string; 
    UnitPriceInTax : number; // Decimal
  }
  
  export class UpdateShippingMethod extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    PaymentHandledByCarrier : boolean; 
    InvoicingHandledByCarrier : boolean; 
    CarrierID : number; // Int32
    DeliveryType : EVA.Core.ShippingMethodDeliveryTypes; 
  }
  
  export class UpdateShippingMethodTransportationTime extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ShippingMethodID? : number; // Int32, nullable
    FromCountryID : string; 
    ToCountryID : string; 
    TimeInDays : number; // Int32
  }
  
  export class UpdateShippingRestriction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    CountryID : string; 
    ZipCodeFrom : string; 
    ZipCodeTo : string; 
    ProductPropertyTypeID : string; 
    ProductPropertyTypeValues : string[]; 
    Type : EVA.Core.ShippingRestrictionType; 
  }
  
  export class UpdateStation extends EVA.API.UpdateRequest<EVA.Core.StationDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class UpdateStockLabel extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
    LedgerClassID : string; 
  }
  
  export class UpdateSubscription2 extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
    UserField : string; 
    Handler : string; 
  }
  
  export class UpdateSubscriptionOrganizationUnitSet extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    SubscriptionID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    Enabled : boolean; 
    Default : boolean; 
    ConfirmationRequired : boolean; 
  }
  
  export class UpdateSupplierProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    PrimitiveName : string; 
    Status : EVA.Core.ProductStatus; 
    Description : string; 
    PreferredMinimumOrderQuantity? : number; // Int32, nullable
    TaxCodeID : number; // Int32
  }
  
  export class UpdateSupplierProductPrices extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    CurrencyID : string; 
    UnitCost? : number; // Decimal, nullable
    RecommendedRetailPrice? : number; // Decimal, nullable
  }
  
  export class UpdateSupplierProductStock extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Quantity : number; // Int32
  }
  
  export class UpdateUnitOfMeasure extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    BackendID : string; 
  }
  
  export class UpdateUrlRewrite extends EVA.API.UpdateRequest<EVA.Core.Services.Management.UrlRewriteDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class UpdateUserFunctionalities extends EVA.API.RequestMessageWithEmptyResponse {
    Data : EVA.Core.Services.Management.UpdatedUserFunctionalitiesDto[]; 
    UserID : number; // Int32
    OrganizationUnitID : number; // Int32
    Functionalities : EVA.Core.Services.Management.UpdatedFunctionalityDto[]; 
  }
  
  export class UpdateUserOrigin extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    BackendID : string; 
  }
  
  export class UpdateUserRoles extends EVA.API.RequestMessageWithEmptyResponse {
    RoleID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitGroupID? : number; // Int32, nullable
    IsRemoved : boolean; 
    UserID : number; // Int32
    EndDate? : string; // DateTime, nullable
    UserType : EVA.Framework.UserTypes; 
    DisableHierarchy : boolean; 
    Pending : boolean; 
  }
  
  export class UploadAssortmentProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.UploadAssortmentProductsResponse> {
    AssortmentID : number; // Int32
    Data : string; 
    // When a product is currently part of the assortment but is not present in the Excel that is uploaded, it's removed from the assortment.
    DeleteMissing : boolean; 
  }
  
  export class UploadAssortmentProductsResponse extends EVA.API.ResponseMessage {
    Messages : string[]; 
  }
  
  export class UploadCustomers extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class UploadEmployees extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class UploadFraudItems extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class UploadInitialInventory extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.UploadInitialInventoryResponse> {
    Data : string; 
    IgnoreInTransitStock : boolean; 
  }
  
  export class UploadInitialInventoryResponse extends EVA.API.ResponseMessage {
    Messages : string[]; 
  }
  
  export class UploadPaymentSettlementFile extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
    Handler : string; 
  }
  
  export class UploadPriceListManualInputAdjustments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.UploadPriceListManualInputAdjustmentsResponse> {
    PriceListAdjustmentID : number; // Int32
    Data : string; 
  }
  
  export class UploadPriceListManualInputAdjustmentsResponse extends EVA.API.ResponseMessage {
    Messages : string[]; 
  }
  
  export class UploadPurchaseOrderExcel extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class UploadShippingRestrictions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.UploadShippingRestrictionsResponse> {
    Data : string; 
  }
  
  export class UploadShippingRestrictionsResponse extends EVA.API.ResponseMessage {
    Messages : string[]; 
  }
  
  export class UploadSupplierProductsBase extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.UploadSupplierProductsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    Data : string; 
  }
  
  export class UploadSupplierProducts extends EVA.Core.Services.Management.UploadSupplierProductsBase {
  }
  
  export class UploadSupplierProductsBarcodes extends EVA.Core.Services.Management.UploadSupplierProductsBase {
  }
  
  export class UploadSupplierProductsPricing extends EVA.Core.Services.Management.UploadSupplierProductsBase {
  }
  
  export class UploadSupplierProductsResponse extends EVA.API.ResponseMessage {
    TotalProductCount : number; // Int32
    FailedCount : number; // Int32
    Messages : { [ key : string ] : string }; 
    DeletedCount : number; // Int32
  }
  
  export class UploadSupplierProductsStock extends EVA.Core.Services.Management.UploadSupplierProductsBase {
  }
  
  export class UrlRewriteDto {
    ID : number; // Int32
    RequestPath : string; 
    TargetPath : string; 
    UrlRewriteType : EVA.Core.UrlRewriteTypes; 
    Description : string; 
    IsActive : boolean; 
    IsRegex : boolean; 
  }
  
  export class GenerateIdentificationCodeForEmployeeResponseUserIdWithIdentificationCodeDto {
    UserId : number; // Int32
    IdentificationCode : string; 
  }
  
  export class GetUserOriginsResponseUserOriginDto extends EVA.Framework.EnumDto {
    BackendID : string; 
  }
  
  export class GetUserRolesByUserIDResponseUserRoleDto {
    ID : number; // Int32
    UserID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitGroupID? : number; // Int32, nullable
    RoleID : number; // Int32
    EndDate? : string; // DateTime, nullable
    DisableHierarchy : boolean; 
    Pending : boolean; 
    Role : EVA.Core.Services.Management.RoleDto; 
  }
  
  export class ValidateDiscount extends EVA.API.RequestMessageGeneric<EVA.Core.Services.Management.ValidateDiscountResponse> {
    BackendID : string; 
    IsActive : boolean; 
    Description : string; 
    MarketingDescription : string; 
    NeedsReason : boolean; 
    DiscountOrderType : EVA.Core.DiscountOrderTypes; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    LedgerClassID : string; 
    MaximumUsage? : number; // Int32, nullable
    MaximumUsagePerOrder? : number; // Int32, nullable
    ActionType : string; 
    ActionData : any; 
    Conditions : EVA.Core.Services.Management.ValidateDiscountDiscountConditionDto[]; 
    ConditionType : EVA.Core.DiscountConditionTypes; 
    Trigger : EVA.Core.DiscountTriggers; 
    LayerID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    CurrencyID : string; 
  }
  
  export class ValidateDiscountResponse extends EVA.API.ResponseMessage {
    Messages : string[]; 
    ActionMessages : string[]; 
    ConditionMessages : { [ key : number ] : string[] }; 
  }
  
  export class VerifyDiscount extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    DiscountID : number; // Int32
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Core.Services {

  export class AddBundleProductToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    LineActionType? : EVA.Core.LineActionTypes;
    BundleProductID : number; // Int32
    LineSelection : EVA.Core.Services.AddBundleProductToOrderLineSelection[];
  }

  export class AddBundleProductToOrderLineSelection {
    ProductBundleLineID : number; // Int32
    SelectedProductID : number; // Int32
    LineSelection : EVA.Core.Services.AddBundleProductToOrderLineSelection[];
  }

  export class AddDiscountToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    CouponCode : string;
    DiscountID? : number; // Int32, nullable
    DiscountAmount? : number; // Decimal, nullable
    // Obsolete
    CurrencyID : string;
    Reason : string;
    OrderLines : EVA.Core.OrderLineWithQuantity[];
    Password : string;
  }

  export class AddLineToPurchaseOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AddLineToPurchaseOrderResponse> {
    OrderID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
    UnitPrice? : number; // Decimal, nullable
    RequestedDate? : string; // DateTime, nullable
    Reference : string;
    StockLabelID? : number; // Int32, nullable
  }

  export class AddLineToPurchaseOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.AddLineToPurchaseOrderResponseModel;
  }

  export class AddProductToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AddProductToOrderResponse> {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    ForceCreate : boolean;
    Barcode : string;
    ProductID? : number; // Int32, nullable
    QuantityOrdered? : number; // Int32, nullable
    LineActionType? : EVA.Core.LineActionTypes;
    StockLabelID? : number; // Int32, nullable
    ParentID? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    GroupID : string;
  }

  export class AddProductToOrderResponse extends EVA.Core.SimpleShoppingCartResponse {
    // Created or updated OrderLineID
    OrderLineID : number; // Int32
  }

  export class AddProductToWishList extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AddProductToWishListResponse> {
    OrderID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
    SingleProductPerLine : boolean;
  }

  export class AddProductToWishListResponse extends EVA.API.ResponseMessage {
    WishListLineID : number; // Int32
    WishListLineIDs : number[];
  }

  export class AddPushNotificationDevice extends EVA.API.RequestMessageWithEmptyResponse {
    DeviceToken : string;
    DeviceOS : string;
    MobileAppID : string;
    BackendSystemID : string;
  }

  export class AddressBookDto {
    ID : number; // Int32
    Address : EVA.Core.AddressDto;
    Description : string;
    DefaultShippingAddress : boolean;
    DefaultBillingAddress : boolean;
  }

  export class AddServiceProductToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AddServiceProductToOrderResponse> {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    ForceCreate : boolean;
    ProductID : number; // Int32
    Description : string;
    UnitPriceInTax? : number; // Decimal, nullable
    UnitCost? : number; // Decimal, nullable
    UnitPrice? : number; // Decimal, nullable
  }

  export class AddServiceProductToOrderResponse extends EVA.Core.SimpleShoppingCartResponse {
    // Created or updated OrderLineID
    OrderLineID : number; // Int32
  }

  export class AddStockResourceToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AddStockResourceToOrderResponse> {
    ResourceID : number; // Int32
    OrderID? : number; // Int32, nullable
    SessionID : string;
  }

  export class AddStockResourceToOrderResponse extends EVA.Core.SimpleShoppingCartResponse {
    // Created or updated OrderLineID
    OrderLineID : number; // Int32
  }

  export class AddUserToGroup extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    GroupID : number; // Int32
  }

  export class AddWishListProductToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    WishListOrderID : number; // Int32
    OrderID? : number; // Int32, nullable
    // Required if you are not the owner of the wishlist.
    AccessToken : string;
    TargetOrderID? : number; // Int32, nullable
    SessionID : string;
    LineActionType? : EVA.Core.LineActionTypes;
    Name : string;
    Remark : string;
    WishListLines : EVA.Core.Services.AddWishListProductToOrderLine[];
  }

  export class AddWishListProductToOrderLine {
    WishListLineID : number; // Int32
    Quantity : number; // Int32
  }

  export class AdjustStockAdjustment {
    BackendID : string;
    ProductID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    StockLabelID : number; // Int32
    StockResourceID? : number; // Int32, nullable
    StockMutationReasonID : number; // Int32
    Quantity : number; // Int32
    Remark : string;
    ProductBackendID : string;
  }

  export class AdjustStock extends EVA.API.RequestMessageWithEmptyResponse {
    ProductID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    SourceLabel? : number; // Int32, nullable
    Reason? : number; // Int32, nullable
    Quantity? : number; // Int32, nullable
    Remark : string;
    BackendSystemID : string;
    Adjustments : EVA.Core.Services.AdjustStockAdjustment[];
  }

  export class ApplicationDto {
    ID : number; // Int32
    Name : string;
    OrganizationUnitID : number; // Int32
    AuthenticationToken : string;
    AssetsBaseUrl : string;
    RequiredUserTypeID? : number; // Int32, nullable
    BaseUrl : string;
  }

  export class ApplyBundleProductLineSelection {
    ProductBundleLineID : number; // Int32
    SelectedProductID : number; // Int32
    LineSelection : EVA.Core.Services.ApplyBundleProductLineSelection[];
  }

  export class ApplyBundleProductSelection extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    LineActionType? : EVA.Core.LineActionTypes;
    BundleProductOrderLineID : number; // Int32
    LineSelection : EVA.Core.Services.ApplyBundleProductLineSelection[];
  }

  export class ApplySalesTaxEstimateForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SalesTaxEstimateForOrderResponse> {
    OrderID : number; // Int32
  }

  export enum ApprovementFailureReasons {
    AlreadyApproved = 1,
    OrderAlreadyPaid = 2,
  }

  export class ApprovePayment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ApprovePaymentResponse> {
    PaymentID : number; // Int32
  }

  export class ApprovePaymentResponse extends EVA.API.ResponseMessage {
    HasBeenApproved : boolean;
    Reason : EVA.Core.Services.ApprovementFailureReasons;
  }

  export class AssignedToUser {
    ID : number; // Int32
    FullName : string;
    EmailAddress : string;
  }

  export class AttachAddressToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AttachAddressToOrderResponse> {
    OrderID? : number; // Int32, nullable
    OrderIDs : number[];
    BillingAddressID? : number; // Int32, nullable
    ShippingAddressID? : number; // Int32, nullable
    BillingAddressBookID? : number; // Int32, nullable
    ShippingAddressBookID? : number; // Int32, nullable
  }

  export class AttachAddressToOrderResponse extends EVA.API.ResponseMessage {
    CreditcardDisabled : boolean;
  }

  export class AttachBlobToInvoice extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
    BlobID : string;
  }

  export class AttachBlobToOrder extends EVA.API.RequestMessageWithEmptyResponse {
    BlobID : string;
    Name : string;
    Type? : EVA.Core.OrderBlobTypes;
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
  }

  export class AttachCustomerToOrder extends EVA.API.RequestMessageWithEmptyResponse {
    UserID? : number; // Int32, nullable
    OrderID : number; // Int32
  }

  export class AttachIdentificationToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AttachIdentificationToOrderResponse> {
    OrderID : number; // Int32
    Type : EVA.Core.IdentificationTypes;
    Number : string;
    ValidTo : string; // DateTime
    IssuingDate? : string; // DateTime, nullable
    IssuingCity : string;
    IssuingCountryID : string;
    OriginatingCountryID : string;
    DocumentMimeType : string;
    Document : string;
  }

  export class AttachIdentificationToOrderResponse extends EVA.API.ResponseMessage {
    IdentificationID : number; // Int32
  }

  export class AttachOrderToSession extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    SessionID : string;
  }

  export class AuthenticateWithThirdPartyLogin extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AuthenticateWithThirdPartyLoginResponse> {
    Code : string;
    Data : { [ key : string ] : string };
  }

  export class AuthenticateWithThirdPartyLoginResponse extends EVA.API.ResponseMessage {
    Authentication : EVA.Framework.AuthenticationResults;
    AuthenticationToken : string;
  }

  export class AutocompleteAddress extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AutocompleteAddressResponse> {
    Query : string;
  }

  export class AutocompleteAddressResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.AddressSuggestion[];
  }

  export class AutocompleteOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.AutocompleteOrderResponse> {
    OrderID : number; // Int32
  }

  export class AutocompleteOrderResponse extends EVA.API.ResponseMessage {
    IsCompleted : boolean;
  }

  export class GetStockAvailabilityEstimateForProductsResponseAvailabilityDate {
    Date : string; // DateTime
    QuantityAvailable? : number; // Int32, nullable
    PurchaseOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponsePurchaseOrderLine[];
  }

  export class GetProductAvailabilityAvailabilityOptions {
    Delivery : EVA.Core.Services.GetProductAvailabilityDeliveryAvailability;
    Pickup : EVA.Core.Services.GetProductAvailabilityPickupAvailability;
    // In case a product is not currently available (either for pick-up or delivery),<br />look at future stock to calculate when it's available again. This is more expensive to calculate.
    FutureAvailability? : boolean;
    QuantityAvailable? : boolean;
  }

  export enum AvailabilityTimelineItemTypes {
    CurrentAvailability = 0,
    ExpectedCommitment = 1,
    ExpectedReplenishment = 2,
    ExpectedShipment = 3,
  }

  export class GetProductSupplierInfoForProductsResponseBarcode {
    Code : string;
    UnitOfMeasureID : number; // Int32
    Quantity : number; // Int32
  }

  export class BookInvoice extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class ListBrandsResponseBrandDto {
    ID : number; // Int32
    Name : string;
    BackendID : string;
  }

  export class GetPotentialBundleProductsForOrderResponseBundleProduct {
    BundleProductID : number; // Int32
    BundlePricing : EVA.Core.Services.BundleProductPriceInfo;
    BundleProductContent : any;
  }

  export class BundleProductContainingProduct {
    BundleProductID : number; // Int32
    BundlePricing : EVA.Core.Services.BundleProductPriceInfo;
    BundleProductContent : any;
  }

  export class BundleProductLine {
    ID : number; // Int32
    BackendID : string;
    DefaultProductID? : number; // Int32, nullable
    Options : EVA.Core.Services.BundleProductLineOption[];
    IsRequired : boolean;
    IncludedInBundlePrice : boolean;
    Description : string;
    IsDeleted : boolean;
  }

  export class BundleProductLineOption {
    ProductID : number; // Int32
    Lines : EVA.Core.Services.BundleProductLine[];
    ProductBundleLineID : number; // Int32
    AdditionalUnitPriceInTax? : number; // Decimal, nullable
    ID : number; // Int32
    Quantity : number; // Int32
    Sequence : number; // Int32
  }

  export class BundleProductPriceInfo {
    UnitPrice : number; // Decimal
    UnitPriceInTax : number; // Decimal
    OriginalUnitPrice? : number; // Decimal, nullable
    OriginalUnitPriceInTax? : number; // Decimal, nullable
    TaxRate : number; // Decimal
    CurrencyID : string;
  }

  export class CancelOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CancelOrderResponse> {
    OrderID : number; // Int32
    OrderLineIDs : number[];
  }

  export class CancelOrderLine extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CancelOrderLineResponse> {
    OrderLineID : number; // Int32
  }

  export class CancelOrderLineResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.OrderCancellationOptions;
  }

  export class CancelOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.OrderCancellationOptions;
  }

  export class CancelPayment extends EVA.API.RequestMessageWithEmptyResponse {
    PaymentID : number; // Int32
  }

  export class CancelShipments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CancelShipmentsResponse> {
    ShipmentIDs : number[];
  }

  export class CancelShipmentsResponse extends EVA.API.ResponseMessage {
    Total : number; // Int32
    Errors : number; // Int32
    Message : string;
  }

  export class CancelWishList extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
  }

  export class CardBalanceCheck extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CardBalanceCheckResponse> {
    CardNumber : string;
    CardPin : string;
    Barcode : string;
    CardType : string;
    OrderID? : number; // Int32, nullable
  }

  export class CardBalanceCheckResponse extends EVA.API.ResponseMessage {
    CardID : string;
    Balance : number; // Decimal
    CurrencyID : string;
    CanSpendAll? : boolean;
    RemainingBalance? : number; // Decimal, nullable
  }

  export class GetGiftCardOptionsResponseCardBusinessRules {
    ActivateValues : number[];
    ActivateValueMin? : number; // Decimal, nullable
    ActivateValueMax? : number; // Decimal, nullable
    ReloadValueMin? : number; // Decimal, nullable
    ReloadValueMax? : number; // Decimal, nullable
    PurchaseValueMin? : number; // Decimal, nullable
    PurchaseValueMax? : number; // Decimal, nullable
    Reloadable? : boolean;
    Refundable? : boolean;
  }

  export class CompleteCloseCashJournalCashCorrection {
    Amount : number; // Decimal
    Description : string;
  }

  export class CompleteOpenCashJournalCashCorrection {
    Amount : number; // Decimal
    Description : string;
  }

  export class GetCashExpenseTypesResponseCashExpenseTypeDto {
    ID : number; // Int32
    BackendID : string;
    Name : string;
    Description : string;
    LedgerClassID : string;
    AmountType : EVA.Core.CashExpenseAmountTypes;
    TaxCodeID? : number; // Int32, nullable
    TaxCodeName : string;
    OrganizationUnitSet : EVA.Core.Services.CashExpenseTypeOrganizationUnitSet;
  }

  export class CashExpenseTypeOrganizationUnitSet {
    ID : number; // Int32
    Name : string;
  }

  export class GetAvailableCashHandlersResponseCashHandler {
    ID : number; // Int32
    Name : string;
    CurrencyID : string;
  }

  export class GetCurrentCashJournalsResponseCashJournal {
    ID? : number; // Int32, nullable
    OpeningTime? : string; // DateTime, nullable
    OpeningAmount? : number; // Decimal, nullable
    Type : EVA.Core.CashJournalTypes;
    CurrencyID : string;
    PaymentType : EVA.Core.Services.GetCurrentCashJournalsResponsePaymentTypeDto;
    PreviousCashJournal : EVA.Core.Services.GetCurrentCashJournalsResponsePreviousCashJournal;
    DeviceID : number; // Int32
  }

  export class StartOpenCashJournalResponseCashJournal {
    ID : number; // Int32
    OpeningTime : string; // DateTime
    ClosingTime? : string; // DateTime, nullable
    OpeningAmount : number; // Decimal
    ClosingAmount? : number; // Decimal, nullable
  }

  export class GetCashJournalDenominationsResponseCashJournalDenomination {
    CurrencyID : string;
    AvailableCoins : number[];
    AvailableBankNotes : number[];
  }

  export class ChangeUserPassword extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ChangeUserPasswordResponse> {
    UserID : number; // Int32
    NewPassword : string;
    OldPassword : string;
  }

  export class ChangeUserPasswordResponse extends EVA.API.ResponseMessage {
    Success : boolean;
    Result : EVA.Core.Services.PasswordValidationResults;
  }

  export class CheckEmailAddressAvailability extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CheckUsernameAvailabilityResponse> {
    EmailAddress : string;
    AsEmployee? : boolean;
  }

  export class CheckNicknameAvailability extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CheckUsernameAvailabilityResponse> {
    Nickname : string;
    AsEmployee? : boolean;
  }

  export class CheckUsernameAvailabilityResponse extends EVA.API.ResponseMessage {
    IsAvailable : boolean;
    IsValid : boolean;
    PasswordResetRequired : boolean;
  }

  export class CloseFinancialPeriod extends EVA.API.RequestMessageWithEmptyResponse {
    FinancialPeriodID : number; // Int32
  }

  export class MoveCommitmentsCommitmentMovement {
    SourceOrderLineID : number; // Int32
    DestinationOrderLineID : number; // Int32
  }

  export class CommitOrderLinesResponseCommitmentResultForOrderLine {
    OrderLineID : number; // Int32
    IsCommitted : boolean;
  }

  export class CommitOrderLines extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CommitOrderLinesResponse> {
    OrderID : number; // Int32
    OrderLineIDs : number[];
    CommitmentStatus? : EVA.Core.OrderLineCommitmentStatus;
  }

  export class CommitOrderLinesResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.Services.CommitOrderLinesResponseCommitmentResultForOrderLine[];
  }

  export class CompleteCloseCashJournal extends EVA.API.RequestMessageWithEmptyResponse {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
    Coins : { [ key : number ] : number };
    BankNotes : { [ key : number ] : number };
    TotalAmount : number; // Decimal
    Corrections : EVA.Core.Services.CompleteCloseCashJournalCashCorrection[];
    Data : any;
  }

  export class CompleteOpenCashJournal extends EVA.API.RequestMessageWithEmptyResponse {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
    Coins : { [ key : number ] : number };
    BankNotes : { [ key : number ] : number };
    TotalAmount : number; // Decimal
    OpeningDeviationCorrection : EVA.Core.Services.CompleteOpenCashJournalCashCorrection;
  }

  export class CompleteWishList extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class ConfigurableGroup {
    ProductID : number; // Int32
    Properties : any;
    LogicalLevel : string;
    ConfigurableProperty : string;
    Value : any;
    Values : any[];
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    Quantity : number; // Int32
    Children : EVA.Core.Services.ConfigurableGroup[];
    OrderLines : EVA.Core.Services.ConfigurableOrderLine[];
  }

  export class ConfigurableOrderLine {
    OrderLineID : number; // Int32
    Quantity : number; // Int32
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
  }

  export class ConfirmPurchaseOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    BackendID : string;
  }

  export class ConfirmSubscription extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ConfirmSubscriptionResponse> {
    Token : string;
  }

  export class ConfirmSubscriptionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Status : EVA.Core.SubscriptionStatus;
  }

  export class ListShopsInAreaCoordinate {
    Latitude : number; // Double
    Longitude : number; // Double
  }

  export class CountryDto {
    ID : string;
    Name : string;
  }

  export class CreateAccountForIncognitoUser extends EVA.API.RequestMessageWithEmptyResponse {
    Password : string;
  }

  export class CreateAddressBookItem extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    UserID? : number; // Int32, nullable
    Description : string;
    Address : EVA.Core.AddressDataDto;
    UseAsDefaultShippingAddress : boolean;
    UseAsDefaultBillingAddress : boolean;
  }

  export class CreateAnonymousToken extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateAnonymousTokenResponse> {
    OrganizationUnitID : number; // Int32
    LanguageID : string;
  }

  export class CreateAnonymousTokenResponse extends EVA.API.ResponseMessage {
    Token : string;
  }

  export class CreateApiKey extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateApiKeyResponse> {
    UserID : number; // Int32
    ApplicationID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    RequestPermanentApiKey : boolean;
  }

  export class CreateApiKeyResponse extends EVA.API.ResponseMessage {
    ApiKey : string;
    ExpirationDate? : string; // DateTime, nullable
  }

  export class CreateCashDeposit extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
    // Required for monetary deposits
    Number : string;
    TotalAmount : number; // Decimal
    Coins : { [ key : number ] : number };
    BankNotes : { [ key : number ] : number };
  }

  export class CreateCashExpense extends EVA.API.RequestMessageWithEmptyResponse {
    DeviceID : number; // Int32
    TypeID : number; // Int32
    Amount : number; // Decimal
    TaxCodeID : number; // Int32
    Description : string;
    // Optional image of the receipt
    BlobID : string;
  }

  export class CreateCashExpenseType extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateCashExpenseTypeResponse> {
    BackendID : string;
    Name : string;
    Description : string;
    LedgerClassID : string;
    AmountType : EVA.Core.CashExpenseAmountTypes;
    TaxCodeID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
  }

  export class CreateCashExpenseTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateCompanyForUser extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    Name : string;
    RegistrationNumber : string;
    RegistrationCity : string;
    RegistrationCountryID : string;
    VatNumber : string;
    LegalFormID : number; // Int32
    EstablishedDate? : string; // DateTime, nullable
    ContactEmailAddress : string;
    ContactPhoneNumber : string;
    AccountHolderName : string;
    IBAN : string;
    BIC : string;
  }

  export class CreateCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
    Name : string;
    Precision : number; // Int16
  }

  export class CreateCustomer extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateCustomerResponse> {
    User : EVA.Core.Services.CustomerDto;
    SessionID : string;
    NoAccount : boolean;
    AutoLogin : boolean;
  }

  export class CreateCustomerResponse extends EVA.API.ResponseMessage {
    User : EVA.Core.LoggedInUserDto;
    Result : EVA.Core.Services.CreateCustomerResults;
  }

  export enum CreateCustomerResults {
    CreatedCustomer = 0,
    InvalidEmail = 1,
    EmailAlreadyInUse = 3,
    NicknameAlreadyInUse = 4,
    PhoneNumberAlreadyInUse = 5,
    AutoLoginFailed = 6,
  }

  export class CreateCustomerWithCompany extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateCustomerWithCompanyResponse> {
    Nickname : string;
    EmailAddress : string;
    Gender : string;
    Initials : string;
    FirstName : string;
    LastName : string;
    PhoneNumber : string;
    LanguageID : string;
    CountryID : string;
    Company : EVA.Core.Services.CustomerCompany;
  }

  export class CreateCustomerWithCompanyResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.CreateCustomerResults;
  }

  export class CreateFinancialPeriodAudit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateFinancialPeriodAuditResponse> {
    OrganizationUnitID : number; // Int32
    To? : string; // DateTime, nullable
    Till? : string; // DateTime, nullable
  }

  export class CreateFinancialPeriodAuditResponse extends EVA.API.ResponseMessage {
    IDs : number[];
    ID : number; // Int32
  }

  export class CreateInterbranchOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    // The date when the shipment is expected in the other store
    ExpectedDeliveryDate? : string; // DateTime, nullable
  }

  export class CreateInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceResponse> {
    OrganizationUnitID : number; // Int32
    SupplierOrganizationUnitID? : number; // Int32, nullable
    PaymentTermStartDate? : string; // DateTime, nullable
    PaymentTermDueDate? : string; // DateTime, nullable
    InvoiceDate : string; // DateTime
    InvoiceNumber : string;
    Description : string;
    Blobs : EVA.Core.InvoiceBlobDto[];
    OriginalTotalAmount? : number; // Decimal, nullable
    Type : EVA.Core.InvoiceTypes;
    HoldStatusID? : number; // Int32, nullable
    FiscalID : string;
    TaxReverseCharge : boolean;
    CalculationMethod? : EVA.Core.InvoiceCalculationMethod;
  }

  export class CreateInvoiceAdditionalAmount extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceAdditionalAmountResponse> {
    InvoiceID : number; // Int32
    TypeID : number; // Int32
    OriginalAmount : number; // Decimal
    Amount : number; // Decimal
    TaxRate? : number; // Decimal, nullable
    TaxCodeID : number; // Int32
  }

  export class CreateInvoiceAdditionalAmountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoiceAdditionalAmountType extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceAdditionalAmountTypeResponse> {
    Name : string;
    Description : string;
    LedgerClassID : string;
  }

  export class CreateInvoiceAdditionalAmountTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoiceDispute extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceDisputeResponse> {
    InvoiceID : number; // Int32
    InvoiceLineID? : number; // Int32, nullable
    InvoiceAdditionalAmountID? : number; // Int32, nullable
    ReasonID : number; // Int32
    Amount : number; // Decimal
    Description : string;
    Type? : EVA.Core.InvoiceDisputeTypes;
  }

  export class CreateInvoiceDisputeReason extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceDisputeReasonResponse> {
    Name : string;
    Description : string;
    LedgerClassID : string;
    AutoResolve : boolean;
  }

  export class CreateInvoiceDisputeReasonResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoiceDisputeResolveAction extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoiceDisputeResolveActionResponse> {
    InvoiceDisputeID : number; // Int32
    Amount : number; // Decimal
    Description : string;
    LedgerClassID : string;
  }

  export class CreateInvoiceDisputeResolveActionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoiceDisputeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoiceLine {
    OrderLineID? : number; // Int32, nullable
    ShipmentLineID? : number; // Int32, nullable
    Quantity? : number; // Int32, nullable
    ExpectedQuantity? : number; // Int32, nullable
    UnitPrice? : number; // Decimal, nullable
    TaxRate? : number; // Decimal, nullable
  }

  export class CreateInvoiceLines extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
    Lines : EVA.Core.Services.CreateInvoiceLine[];
  }

  export class CreateInvoicePayment extends EVA.API.RequestMessageWithEmptyResponse {
    PaymentTransactionID : number; // Int32
    InvoiceID? : number; // Int32, nullable
  }

  export class CreateInvoiceResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateInvoicesForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateInvoicesForOrderResponse> {
    OrderID : number; // Int32
    LinesToInvoice : EVA.Core.Services.CreateInvoicesForOrderOrderLineToInvoice[];
  }

  export class CreateInvoicesForOrderResponse extends EVA.API.ResponseMessage {
    Invoices : EVA.Core.Services.CreateInvoicesForOrderResponseInvoice[];
  }

  export class CreateManualInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateManualInvoiceResponse> {
    OrganizationUnitID : number; // Int32
    Series : string;
    Number : number; // Int32
    InvoiceDate : string; // DateTime
    Customer : EVA.Core.Services.ManualCustomer;
    Lines : EVA.Core.Services.ManualLine[];
  }

  export class CreateManualInvoiceResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
  }

  export class CreateOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateOrderResponse> {
    SessionID : string;
    OrganizationUnitID? : number; // Int32, nullable
    Type : EVA.Core.OrderTypes;
  }

  export class PrepareOrderForCheckout extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class CreateOrderLineUnitPriceCorrection extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateOrderLineUnitPriceCorrectionResponse> {
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    UnitPrice? : number; // Decimal, nullable
    IncludingTax : boolean;
  }

  export class CreateOrderLineUnitPriceCorrectionResponse extends EVA.API.GetResponse<EVA.Core.OrderLineDto> {
  }

  export class CreateOrderResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
  }

  export class CreateOrganizationOpeningHours extends EVA.API.RequestMessageWithEmptyResponse {
    OpeningHoursDto : EVA.Core.OpeningHoursDataDto[];
  }

  export class CreateOrganizationUnit extends EVA.API.CreateRequest<EVA.Core.OrganizationUnitDto> implements EVA.API.IRequestRespondsAs<EVA.API.CreateResponse> {
  }

  export class CreateOrganizationUnitSupplier extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    SupplierOrganizationUnitID : number; // Int32
    Type : EVA.Core.OrganizationUnitSupplierTypes;
  }

  export class CreatePayment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreatePaymentResponse> {
    OrderID : number; // Int32
    PaymentTypeID? : number; // Int32, nullable
    Amount? : number; // Decimal, nullable
    Properties : any;
    Code : string;
  }

  export class CreatePaymentResponse extends EVA.API.ResponseMessage {
    PaymentTransaction : EVA.Core.PaymentTransactionDto;
    PaymentTransactions : EVA.Core.PaymentTransactionDto[];
    OpenAmount : number; // Decimal
    Properties : any;
  }

  export class CreateProductAvailabilityData extends EVA.API.CreateRequest<EVA.Core.ProductAvailabilityDataDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }

  export class CreateProductBundle extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    BackendID : string;
    BundleProductID : number; // Int32
    Lines : EVA.Core.Services.CreateProductBundleLine[];
  }

  export class CreateProductBundleLine {
    DefaultProductID? : number; // Int32, nullable
    Description : string;
    BackendID : string;
    Type : EVA.Core.ProductBundleLineTypes;
    Options : EVA.Core.Services.CreateProductBundleLineOption[];
  }

  export class CreateProductBundleLineOption {
    ProductID : number; // Int32
  }

  export class CreateProductRequirement extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateProductRequirementResponse> {
    ProductID : number; // Int32
    Name : string;
    DataType : EVA.Core.ProductRequirementDataTypes;
    IsArray : boolean;
    IsRequired : boolean;
    Data : any;
  }

  export class CreateProductRequirementResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateProductStructure extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateProductStructureResponse> {
    Code : string;
    Name : string;
    LanguageID : string;
    CountryID : string;
    Definition : EVA.Core.ProductStructureDefinition;
  }

  export class CreateProductStructureResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreatePurchaseOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreatePurchaseOrderResponse> {
    OrganizationUnitID : number; // Int32
    SupplierID? : number; // Int32, nullable
    BackendID : string;
  }

  export class CreatePurchaseOrderResponse extends EVA.API.ResponseMessage {
    Success : boolean;
    ID : number; // Int32
  }

  export class CreateRecurringTask extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
    FullName : string;
    Cron : string;
    Arguments : { [ key : string ] : string };
  }

  export class CreateRefund extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateRefundResponse> {
    OrderID? : number; // Int32, nullable
    PaymentMethod : string;
    PaymentTransactionID? : number; // Int32, nullable
    Amount? : number; // Decimal, nullable
    CurrencyID : string;
    Properties : any;
  }

  export class CreateRefundResponse extends EVA.API.ResponseMessage {
    Success : boolean;
    PaymentTransactions : EVA.Core.PaymentTransactionDto[];
    Properties : any;
  }

  export class CreateReturnToSupplierOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class CreateShipmentReceipt extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateShipmentReceiptResponse> {
    BackendID : string;
    BackendSystemID : string;
    ShipmentID : number; // Int32
    CompletesShipment : boolean;
    Lines : EVA.Core.Services.CreateShipmentReceiptLine[];
  }

  export class CreateShipmentReceiptResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateStockAllocationRule extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    OrganizationUnitSupplierID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    Value : number; // Int32
    ValueType : EVA.Core.StockAllocationRuleValueTypes;
    RefillPeriodInDays? : number; // Int32, nullable
    Type : EVA.Core.StockAllocationRuleTypes;
    ProductSearchTemplateID? : number; // Int32, nullable
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }

  export class CreateStockMutations extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitBackendID : string;
    Mutations : EVA.Core.Services.CreateStockMutationsStockMutation[];
  }

  export class CreateStockNotification extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StockNotificationResponse> {
    ProductID : number; // Int32
    OrganizationUnitID : number; // Int32
    EmailAddress : string;
    CountryID : string;
    LanguageID : string;
  }

  export class CreateStockNotificationForCurrentUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StockNotificationResponse> {
    ProductID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    CountryID : string;
    LanguageID : string;
  }

  export class CreateStockResource extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateStockResourceResponse> {
    Resources : { [ key : string ] : string };
  }

  export class CreateStockResourceResponse extends EVA.API.ResponseMessage {
    ResourceID : number; // Int32
  }

  export class CreateTaxCode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateTaxCodeResponse> {
    Name : string;
    Description : string;
    LedgerClassID : string;
    BackendID : string;
  }

  export class CreateTaxCodeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class CreateTaxRate extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    CountryID : string;
    TaxCodeID : number; // Int32
    Rate : number; // Decimal
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }

  export class CreateUserGroup extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    Name : string;
  }

  export class CreateUserPhoneNumber extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    UserID? : number; // Int32, nullable
    PhoneNumber : string;
    Type : EVA.Core.PhoneNumberTypes;
    Description : string;
    IsPrimary : boolean;
  }

  export class CreateWishList extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateWishListResponse> {
    Name : string;
    Data : any;
  }

  export class CreateWishListFromShoppingCart extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateWishListFromShoppingCartResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    Name : string;
    Data : any;
  }

  export class CreateWishListFromShoppingCartResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
    AccessToken : string;
  }

  export class CreateWishListPayment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateWishListPaymentResponse> {
    OrderID : number; // Int32
    // Required if you are not the owner of the wishlist.
    AccessToken : string;
    Code : string;
    Amount : number; // Decimal
    Properties : any;
    Name : string;
    Remark : string;
    Lines : EVA.Core.Services.CreateWishListPaymentLine[];
  }

  export class CreateWishListPaymentFromShoppingCart extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreateWishListPaymentResponse> {
    DummyOrderID : number; // Int32
    SessionID : string;
    OrderID : number; // Int32
    // Required if you are not the owner of the wishlist.
    AccessToken : string;
    Code : string;
    Properties : any;
    Name : string;
    Remark : string;
  }

  export class CreateWishListPaymentLine {
    WishListLineID : number; // Int32
    Amount : number; // Decimal
  }

  export class CreateWishListPaymentResponse extends EVA.API.ResponseMessage {
    PaymentTransaction : EVA.Core.Services.WishListPaymentTransactionDto;
    OpenAmount : number; // Decimal
    Properties : any;
  }

  export class CreateWishListResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
    AccessToken : string;
  }

  export class CustomerCompany {
    Name : string;
    RegistrationNumber : string;
    RegistrationCity : string;
    RegistrationCountryID : string;
    VatNumber : string;
    LegalForm : EVA.Core.LegalForms;
    EstablishedDate? : string; // DateTime, nullable
    VisitorsAddress : EVA.Core.AddressDataDto;
    DeliveryAddress : EVA.Core.AddressDataDto;
    ReturnsAddress : EVA.Core.AddressDataDto;
    InvoiceAddress : EVA.Core.AddressDataDto;
    InvoiceEmailAddress : string;
    ContactEmailAddress : string;
    ContactPhoneNumber : string;
    AccountHolderName : string;
    IBAN : string;
    BIC : string;
    LogoID : string;
  }

  export class CustomerDto {
    EmailAddress : string;
    Gender : string;
    Initials : string;
    FirstName : string;
    LastName : string;
    PhoneNumber : string;
    DateOfBirth? : string; // DateTime, nullable
    PlaceOfBirth : string;
    BankAccount : string;
    Nickname : string;
    Password : string;
    LanguageID : string;
    CountryID : string;
    FiscalID : string;
    SocialSecurityNumber : string;
    OriginID? : number; // Int32, nullable
    ShippingAddress : EVA.Core.AddressDataDto;
    BillingAddress : EVA.Core.AddressDataDto;
  }

  export class DeleteAddressBookItem extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteCashDeposit extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteCashExpense extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteCashExpenseType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
  }

  export class DeleteEntityTranslation extends EVA.API.RequestMessageWithEmptyResponse {
    EntityID : number; // Int32
    EntityType : string;
    EntityField : string;
    LanguageID : string;
    CountryID : string;
  }

  export class DeleteInvoice extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
  }

  export class DeleteInvoiceAdditionalAmount extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteInvoiceAdditionalAmountType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteInvoiceBlob extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
    BlobID : string;
  }

  export class DeleteInvoiceDispute extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteInvoiceDisputeReason extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteInvoiceDisputeResolveAction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteOrganizationOpeningHours extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }

  export class DeleteOrganizationUnit extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
  }

  export class DeleteOrganizationUnitSupplier extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteProductAvailabilityData extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }

  export class DeleteProductBundle extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteProductRequirement extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteProductStructure extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteRecurringTask extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
  }

  export class DeleteStockAllocationRule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteStockNotification extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    EmailAddress : string;
  }

  export class DeleteStringTranslation extends EVA.API.RequestMessageWithEmptyResponse {
    Key : string;
    LanguageID : string;
    CountryID : string;
  }

  export class DeleteTaxCode extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteTaxRate extends EVA.API.DeleteRequest implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }

  export class DeleteUser extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteUserGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeleteUserPhoneNumber extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class DeliverShipment extends EVA.API.RequestMessageWithEmptyResponse {
    // Either this or ShipmentBackendID is required.
    ShipmentID? : number; // Int32, nullable
    // Either this or ShipmentID is required. If ShipmentBackendID is specified, ShipmentBackendSystem is also required.
    ShipmentBackendID : string;
    // Required if ShipmentBackendID is specified.
    ShipmentBackendSystemID : string;
  }

  export class GetProductAvailabilityDeliveryAvailability {
    // Include the expected date on which the provided products can be home-delivered.
    AvailabilityDate? : boolean;
  }

  export class GetProductAvailabilityResponseDeliveryAvailabilityResult {
    AvailabilityDate? : string; // DateTime, nullable
    IsAvailable : boolean;
    QuantityAvailable? : number; // Int32, nullable
    // Indicates whether or not there is currently stock available for home-delivery.
    HasStock : boolean;
  }

  export class GetStockAvailabilityEstimateForOrderResponseDependsOnPurchaseOrderLine {
    ID : number; // Int32
    BackendID : string;
    ProductID : number; // Int32
    OrderID : number; // Int32
    QuantityToShip : number; // Int32
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    RequestedDate : string; // DateTime
    CreationTime : string; // DateTime
  }

  export class DetachCompanyFromUser extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
  }

  export class DetachCustomerFromOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class DetachOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.DetachOrderResponse> {
    OrderID : number; // Int32
  }

  export class DetachOrderFromSession extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
  }

  export class DetachOrderResponse extends EVA.API.ResponseMessage {
    ReminderToken : string;
  }

  export class DisableDiscountOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    DiscountID : number; // Int32
  }

  export enum DocumentTypes {
    Order = 0,
    Quote = 1,
    Invoice = 2,
    ReturnToSupplier = 3,
    Interbranch = 4,
  }

  export class DownloadFinancialPeriodAudits extends EVA.API.RequestMessageWithResourceResponse {
    OrganizationUnitID : number; // Int32
    FiscalYear : number; // Int32
  }

  export class DownloadFinancialPeriodDeposit extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    FinancialPeriodID : number; // Int32
  }

  export class DuplicateOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.DuplicateOrderResponse> {
    OrderID : number; // Int32
    OrderLineIDs : number[];
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class DuplicateOrderResponse extends EVA.API.ResponseMessage {
    DuplicatedOrderID : number; // Int32
  }

  export class EditProductStructure extends EVA.API.RequestMessageGeneric<EVA.Core.Services.EditProductStructureResponse> {
    ID : number; // Int32
    Code : string;
    Name : string;
    LanguageID : string;
    CountryID : string;
    Definition : EVA.Core.ProductStructureDefinition;
  }

  export class EditProductStructureResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class EnableDisabledDiscountOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    DiscountID : number; // Int32
  }

  export class EnqueueTask extends EVA.API.RequestMessageWithEmptyResponse {
    FullName : string;
    Arguments : { [ key : string ] : string };
  }

  export class EnrollSentinel extends EVA.API.RequestMessageWithEmptyResponse {
    SentinelID : string;
  }

  export class GetEnumValuesResponseEnumValue {
    Name : string;
    Value : number; // Int32
    Description : string;
  }

  export class ExemptOrderFromTax extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    // A short code (max 10 characters) identifying the tax exemption.
    TaxExemptionCode : string;
    // A longer description with the justification for the tax exemption.
    TaxExemptionReason : string;
  }

  export class ListExternalOrderStatusForOrderResponseExternalOrderStatus {
    Name : string;
    Status : string;
    CanPollStatus : boolean;
  }

  export class FeedSubscriptionDto {
    ID : number; // Int32
    Name : string;
    WebhookUrl : string;
  }

  export class FinalizePayment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.FinalizePaymentResponse> {
    PaymentTransactionID : number; // Int32
    Amount? : number; // Decimal, nullable
  }

  export class FinalizePaymentResponse extends EVA.API.ResponseMessage {
    PaymentTransaction : EVA.Core.PaymentTransactionDto;
    OpenAmount : number; // Decimal
  }

  export class FinancialPeriodBlobDto {
    FinancialPeriodID : number; // Int32
    Name : string;
    MimeType : string;
    BlobID : string;
  }

  export class GetFinancialPeriodInformationResponseFinancialPeriodOrganizationUnit {
    ID : number; // Int32
    Name : string;
  }

  export class FindStockResource extends EVA.API.RequestMessageGeneric<EVA.Core.Services.FindStockResourceResponse> {
    Type : string;
    Value : string;
  }

  export class FindStockResourceResponse extends EVA.API.ResponseMessage {
    Resource : EVA.Core.Services.StockResourceDto;
  }

  export class FlushCache extends EVA.API.RequestMessageWithEmptyResponse {
    Pattern : string;
  }

  export class ForcePlaceOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ForcePlaceOrderResponse> {
    OrderID : number; // Int32
  }

  export class ForcePlaceOrderResponse extends EVA.API.ResponseMessage {
    ValidationResult : EVA.Core.OrderExportValidationResult;
  }

  export class FullyReceiveDeliveryNoteNumber extends EVA.API.RequestMessageGeneric<EVA.Core.Services.FullyReceiveDeliveryNoteNumberResponse> {
    DeliveryNoteNumber : string;
  }

  export class FullyReceiveDeliveryNoteNumberResponse extends EVA.API.ResponseMessage {
    ReservedOrdersCount : number; // Int32
  }

  export class FullyReceiveShipment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.FullyReceiveShipmentResponse> {
    ID? : number; // Int32, nullable
    BackendID : string;
  }

  export class FullyReceiveShipmentResponse extends EVA.API.ResponseMessage {
    ReservedOrdersCount : number; // Int32
  }

  export class FullyShipPurchaseOrder extends EVA.API.RequestMessageWithEmptyResponse {
    PurchaseOrderID : number; // Int32
    ShipmentBackendID : string;
    BackendSystemID : string;
    TrackingCode : string;
  }

  export class GetAvailableServiceDetailsResponseFunctionalityInfo {
    Functionality : string;
    Scope : EVA.Framework.FunctionalityScope;
  }

  export class ListGeneralLedgersResponseGeneralLedger {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.Services.ListGeneralLedgersResponseOrganizationUnit;
    FinancialPeriodID : number; // Int32
    Amount : number; // Decimal
    Remark : string;
    PaymentTransactionID? : number; // Int32, nullable
    CreationTime : string; // DateTime
    OrderID? : number; // Int32, nullable
    AccountName : string;
    AccountObjectAccount : string;
    StockMutationID? : number; // Int32, nullable
    CurrencyID : string;
    Offset1 : string;
    Offset2 : string;
    Offset3 : string;
    Offset4 : string;
    Offset5 : string;
    Offset6 : string;
    FinancialEventID? : number; // Int32, nullable
  }

  export class GenerateDeviceHubBarcode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateDeviceHubBarcodeResponse> {
  }

  export class GenerateDeviceHubBarcodeResponse extends EVA.API.ResponseMessage {
    DeviceID : string;
    Barcode : string;
  }

  export class GenerateEnrollmentToken extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateEnrollmentTokenResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GenerateEnrollmentTokenResponse extends EVA.API.ResponseMessage {
    Token : string;
  }

  export class GenerateScanModeBarcode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateScanModeBarcodeResponse> {
  }

  export class GenerateScanModeBarcodeResponse extends EVA.API.ResponseMessage {
    DeviceID : string;
    Barcode : string;
  }

  export class GenerateSessionBarcode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateSessionBarcodeResponse> {
    OrderID : number; // Int32
  }

  export class GenerateSessionBarcodeResponse extends EVA.API.ResponseMessage {
    Barcode : string;
  }

  export class GenerateTemporaryPasswordForUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateTemporaryPasswordForUserResponse> {
    UserID : number; // Int32
  }

  export class GenerateTemporaryPasswordForUserResponse extends EVA.API.ResponseMessage {
    Password : string;
  }

  export class GenerateTerminalReport extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GenerateTerminalResponse> {
    OrganizationUnitID : number; // Int32
    StationID : number; // Int32
  }

  export class GenerateTerminalResponse extends EVA.API.ResponseMessage {
    CopyReceiptsPrinted : number; // Int32
    TotalCopyReceiptsAmount : number; // Decimal
    ReceiptsPrinted : number; // Int32
    CashDrawerOpenings : number; // Int32
    ReturnCount : number; // Int32
    ReturnAmount : number; // Decimal
    DiscountCount : number; // Int32
    DiscountAmount : number; // Decimal
    Change : number; // Decimal
    Payments : EVA.Core.Services.GenerateTerminalResponsePayment[];
    Taxes : EVA.Core.Services.GenerateTerminalResponseTax[];
    ProductGroups : EVA.Core.Services.GenerateTerminalResponseProductGroup[];
    TotalPayments : number; // Decimal
    TotalTaxes : number; // Decimal
    PaymentsPerUser : EVA.Core.Services.GenerateTerminalResponsePaymentPerUser[];
  }

  export class GetActivePaymentTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetActivePaymentTypesResponse> {
  }

  export class GetActivePaymentTypesResponse extends EVA.API.ResponseMessage {
    Result : string[];
  }

  export class GetAddressForZipCode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAddressForZipCodeResponse> {
    ZipCode : string;
    HouseNumber : string;
  }

  export class GetAddressForZipCodeResponse extends EVA.API.GetResponse<EVA.Core.AddressDataDto> {
  }

  export class GetAnonymousToken extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAnonymousTokenResponse> {
    OrganizationUnitID : number; // Int32
    LanguageID : string;
  }

  export class GetAnonymousTokenResponse extends EVA.API.ResponseMessage {
    Token : string;
  }

  export class GetApplicationConfiguration extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetApplicationConfigurationResponse> {
  }

  export class GetApplicationConfigurationResponse extends EVA.API.ResponseMessage {
    Configuration : { [ key : string ] : any };
  }

  export class GetAutocompleteAddressByReference extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAutocompleteAddressByReferenceResponse> {
    Suggestion : EVA.Core.AddressSuggestion;
  }

  export class GetAutocompleteAddressByReferenceResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.AddressSuggestionDetails;
  }

  export class GetAvailabilityIndication extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailabilityIndicationResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    // Providing this will limit the pickup availability indication to only these OrganizationUnits.
    PickupOrganizationUnitIDs : number[];
    // The products for which to retrieve the availability.<br />The QuantityRequested will default to 1 if not provided. If this field is left null then OrderID must have a value and visa versa.
    Products : EVA.Core.ProductQuantityDto[];
    // If provided this will return the availability indication for the products on the Order. This can be used instead of manually providing Products on this request.
    OrderID? : number; // Int32, nullable
    // If true, limits the pickup availability results to only the OrganizationUnit<br />that has the product available the quickest. If multiple OrganizationUnits have the same availability, it's not defined<br />which OrganizationUnit is returned.
    FastestPickupShopOnly? : boolean;
    // If true, the OrganizationUnits returned not only have their basic information returned, but also their OpeningHours.
    DetailedShopInformation : boolean;
    IncludeAvailabilityTexts : boolean;
    // If provided, limits the availability to indication to the provided types.<br />The types can be combined to provide both Delivery and Pickup indications, but this is also the default behavior<br />so specifying this is not necessary. Specify this only if you only need either Delivery or Pickup indications,<br />this can result in better performance due to a smaller response size.
    Type? : EVA.Core.GetAvailabilityTypes;
  }

  export class GetAvailabilityIndicationResponse extends EVA.API.ResponseMessage {
    Products : EVA.Core.ProductAvailabilityIndication[];
  }

  export class GetAvailableCashAmountForDevice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableCashAmountForDeviceResponse> {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
  }

  export class GetAvailableCashAmountForDeviceResponse extends EVA.API.ResponseMessage {
    Amount : number; // Decimal
    CurrencyID : string;
  }

  export class GetAvailableCashHandlers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableCashHandlersResponse> {
    CurrencyID : string;
  }

  export class GetAvailableCashHandlersResponse extends EVA.API.ResponseMessage {
    Handlers : EVA.Core.Services.GetAvailableCashHandlersResponseCashHandler[];
  }

  export class GetAvailableCurrencies extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableCurrenciesResponse> {
  }

  export class GetAvailableCurrenciesResponse extends EVA.API.ResponseMessage {
    Currencies : EVA.Core.CurrencyDto[];
  }

  export class GetAvailableGiftWrappingLinesForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableGiftWrappingLinesForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetAvailableGiftWrappingLinesForOrderResponse extends EVA.API.ResponseMessage {
    Lines : EVA.Core.Services.GiftWrappingLineAvailability[];
  }

  export class GetAvailablePaymentMethods extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailablePaymentMethodsResponse> {
    OrderID? : number; // Int32, nullable
    ReturnUnusablePaymentMethods : boolean;
  }

  export class GetAvailablePaymentMethodsResponse extends EVA.API.ResponseMessage {
    PaymentMethods : string[];
    Results : EVA.Core.Services.GetAvailablePaymentMethodsResponseMethodModel[];
  }

  export class GetAvailableRefundPaymentMethodsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableRefundPaymentMethodsResponse> {
    OrderID : number; // Int32
  }

  export class GetAvailableRefundPaymentMethodsForUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableRefundPaymentMethodsResponse> {
    UserID : number; // Int32
  }

  export class GetAvailableRefundPaymentMethodsResponse extends EVA.API.ResponseMessage {
    Methods : EVA.Core.Services.GetAvailableRefundPaymentMethodsResponsePaymentMethod[];
  }

  export class GetAvailableServiceDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableServiceDetailsResponse> {
    Type : string;
  }

  export class GetAvailableServiceDetailsResponse extends EVA.API.ResponseMessage {
    Description : string;
    Request : EVA.Core.Services.GetAvailableServiceDetailsResponseTypeDefinition;
    Response : EVA.Core.Services.GetAvailableServiceDetailsResponseTypeDefinition;
    Routes : EVA.Core.Services.GetAvailableServiceDetailsResponseRoute[];
    Security : EVA.Core.Services.GetAvailableServiceDetailsResponseSecurityInfo;
    AvailableInSentinelOpsMode : boolean;
  }

  export class GetAvailableServices extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableServicesResponse> {
  }

  export class GetAvailableServicesResponse extends EVA.API.ResponseMessage {
    Services : EVA.Core.Services.GetAvailableServicesResponseService[];
  }

  export class GetAvailableSubscriptions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableSubscriptionsResponse> {
  }

  export class GetAvailableSubscriptionsResponse extends EVA.API.ResponseMessage {
    Subscriptions : EVA.Core.Services.GetAvailableSubscriptionsResponseSubscriptionDto[];
  }

  export class GetAvailableThirdPartiesForLogin extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetAvailableThirdPartiesForLoginResponse> {
  }

  export class GetAvailableThirdPartiesForLoginResponse extends EVA.API.ResponseMessage {
    AuthenticationMethods : string[];
  }

  export class GetBundleProductDetailResponse extends EVA.API.ResponseMessage {
    Lines : EVA.Core.Services.BundleProductLine[];
    BundleProductID : number; // Int32
    Products : EVA.Core.Services.GetBundleProductProduct[];
    IsDeleted : boolean;
  }

  export class GetBundleProductDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetBundleProductDetailResponse> {
    BundleProductID : number; // Int32
    IncludedFields : string[];
  }

  export class GetBundleProductProduct {
    ID : number; // Int32
    CustomID : string;
    Type : EVA.Core.ProductTypes;
    Content : any;
    Pricing : EVA.Core.Services.BundleProductPriceInfo;
  }

  export class GetBundleProductsForProduct extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetBundleProductsForProductResponse> {
    ProductID : number; // Int32
    IncludedFields : string[];
  }

  export class GetBundleProductsForProductResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.BundleProductContainingProduct[];
  }

  export class GetCashExpenseTypeByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCashExpenseTypeByIDResponse> {
    ID : number; // Int32
  }

  export class GetCashExpenseTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string;
    Name : string;
    Description : string;
    LedgerClassID : string;
    AmountType : EVA.Core.CashExpenseAmountTypes;
    TaxCodeID? : number; // Int32, nullable
    TaxCodeName : string;
    OrganizationUnitSet : EVA.Core.Services.CashExpenseTypeOrganizationUnitSet;
  }

  export class GetCashExpenseTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCashExpenseTypesResponse> {
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class GetCashExpenseTypesResponse extends EVA.API.ResponseMessage {
    CashExpenseTypes : EVA.Core.Services.GetCashExpenseTypesResponseCashExpenseTypeDto[];
  }

  export class GetCashJournalDenominations extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCashJournalDenominationsResponse> {
    DeviceID : number; // Int32
  }

  export class GetCashJournalDenominationsResponse extends EVA.API.ResponseMessage {
    CashJournalDenominations : EVA.Core.Services.GetCashJournalDenominationsResponseCashJournalDenomination[];
  }

  export class GetCompanyForUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCompanyForUserResponse> {
    UserID : number; // Int32
  }

  export class GetCompanyForUserResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.CompanyDto;
  }

  export class GetConfigurableOrderView extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetConfigurableOrderViewResponse> {
    OrderID : number; // Int32
    LogicalLevel : string;
    GroupByPropertyType : string;
    IncludeAllChildren : boolean;
    ProductProperties : string[];
  }

  export class GetConfigurableOrderViewResponse extends EVA.API.ResponseMessage {
    PropertyGroups : EVA.Core.Services.PropertyGroup[];
    OtherLines : { [ OrderLineTypes : number ] : EVA.Core.Services.SimpleOrderLine[] };
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
  }

  export class GetConfigurableProductDetail extends EVA.API.GetRequestGeneric<EVA.Core.Services.GetConfigurableProductDetailResponse> {
    Includes : string[];
  }

  export class GetConfigurableProductDetailResponse extends EVA.API.ResponseMessage {
    Configurable : EVA.Core.ConfigurableProductDto;
  }

  export class GetConfigurableProductsDetail extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetConfigurableProductsDetailResponse> {
    ProductIDs : number[];
    Includes : string[];
  }

  export class GetConfigurableProductsDetailResponse extends EVA.API.ResponseMessage {
    Configurables : { [ key : number ] : EVA.Core.ConfigurableProductDto };
  }

  export class GetContractNumber extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetContractNumberResponse> {
    OrderLineID : number; // Int32
  }

  export class GetContractNumberResponse extends EVA.API.ResponseMessage {
    ContractNumber : string;
  }

  export class GetCurrency extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCurrencyResponse> {
    ID : string;
  }

  export class GetCurrencyResponse extends EVA.API.ResponseMessage {
    ID : string;
    Name : string;
    Precision : number; // Int16
  }

  export class GetCurrentApplication extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCurrentApplicationResponse> {
  }

  export class GetCurrentApplicationResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string;
    OrganizationUnitID : number; // Int32
    // Obsolete: Please use the ApplicationConfiguration property instead
    AssetsBaseUrl : string;
    RequiredUserTypeID? : number; // Int32, nullable
    // Obsolete: Please use the ApplicationConfiguration property instead
    BaseUrl : string;
  }

  export class GetCurrentCashJournals extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCurrentCashJournalsResponse> {
    DeviceID : number; // Int32
  }

  export class GetCurrentCashJournalsResponse extends EVA.API.ResponseMessage {
    CashJournals : EVA.Core.Services.GetCurrentCashJournalsResponseCashJournal[];
  }

  export class GetCurrentFinancialPeriodSummary extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCurrentFinancialPeriodSummaryResponse> {
  }

  export class GetCurrentFinancialPeriodSummaryResponse extends EVA.API.ResponseMessage {
    FinancialPeriodID : number; // Int32
    FinancialPeriodStatus : EVA.Core.FinancialPeriodStatus;
  }

  export class GetCurrentUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetCurrentUserResponse> {
  }

  export class GetCurrentUserResponse extends EVA.API.ResponseMessage {
    User : EVA.Core.LoggedInUserDto;
  }

  export class GetDeliveryOrderData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetDeliveryOrderDataResponse> {
    OrderID : number; // Int32
  }

  export class GetDeliveryOrderDataResponse extends EVA.API.ResponseMessage {
    DeliveryOrderData : EVA.Core.DeliveryOrderData;
  }

  export class GetDevice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetDeviceResponse> {
    ID : number; // Int32
  }

  export class GetDeviceResponse extends EVA.API.GetResponse<EVA.Core.DeviceDto> {
  }

  export class GetDeviceTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetDeviceTypesResponse> {
  }

  export class GetDeviceTypesResponse extends EVA.API.ResponseMessage {
    DeviceTypes : EVA.Framework.FlagsEnumDto[];
  }

  export class GetEmailAddressDomainSuggestions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetEmailAddressDomainSuggestionsResponse> {
    // The number of suggestions to return. Defaults to 5 and is limited to 10.
    MaxSuggestions? : number; // Int32, nullable
  }

  export class GetEmailAddressDomainSuggestionsResponse extends EVA.API.ResponseMessage {
    // A list of the domain names, ordered by usage count. Each domain is returned in the form of `domain.tld`.
    Domains : string[];
  }

  export class GetEntityTranslation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetEntityTranslationResponse> {
    EntityID : number; // Int32
    EntityType : string;
    EntityField : string;
    LanguageID : string;
    CountryID : string;
  }

  export class GetEntityTranslationResponse extends EVA.API.ResponseMessage {
    EntityID : number; // Int32
    EntityType : string;
    EntityField : string;
    LanguageID : string;
    CountryID : string;
    Value : string;
  }

  export class GetEnumValues extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetEnumValuesResponse> {
    Name : string;
  }

  export class GetEnumValuesResponse extends EVA.API.ResponseMessage {
    Values : EVA.Core.Services.GetEnumValuesResponseEnumValue[];
    IsFlags : boolean;
  }

  export class GetFinancialPeriodAccountsSummary extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFinancialPeriodAccountsSummaryResponse> {
    FinancialPeriodID : number; // Int32
  }

  export class GetFinancialPeriodAccountsSummaryResponse extends EVA.API.ResponseMessage {
    Accounts : EVA.Core.AccountSummary[];
  }

  export class GetFinancialPeriodClosingImpediments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFinancialPeriodClosingImpedimentsResponse> {
    FinancialPeriodID : number; // Int32
  }

  export class GetFinancialPeriodClosingImpedimentsResponse extends EVA.API.ResponseMessage {
    Impediments : EVA.Core.FinancialPeriodClosingImpediment[];
  }

  export class GetFinancialPeriodDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFinancialPeriodDetailsResponse> {
    FinancialPeriodID : number; // Int32
  }

  export class GetFinancialPeriodDetailsResponse extends EVA.API.ResponseMessage {
    Details : EVA.Core.FinancialPeriodDetailsDto;
  }

  export class GetFinancialPeriodExportDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFinancialPeriodExportDocumentsResponse> {
    ID : number; // Int32
  }

  export class GetFinancialPeriodExportDocumentsResponse extends EVA.API.ResponseMessage {
    RequestDocuments : EVA.Core.TransputJobDocument[];
    ResponseDocuments : EVA.Core.TransputJobDocument[];
  }

  export class GetFinancialPeriodInformation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFinancialPeriodInformationResponse> {
    // If left null, defaults to the current period of the logged in user.
    FinancialPeriodID? : number; // Int32, nullable
  }

  export class GetFinancialPeriodInformationResponse extends EVA.API.ResponseMessage {
    FinancialPeriodID : number; // Int32
    Status : EVA.Core.FinancialPeriodStatus;
    CashJournals : EVA.Core.CashJournalDetailsModel[];
    PaymentTypeSummaries : EVA.Core.Services.GetFinancialPeriodInformationResponsePaymentTypeSummary[];
    OrganizationUnit : EVA.Core.Services.GetFinancialPeriodInformationResponseFinancialPeriodOrganizationUnit;
  }

  export class GetFiscalOrderData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFiscalOrderDataResponse> {
    OrderID : number; // Int32
  }

  export class GetFiscalOrderDataResponse extends EVA.API.ResponseMessage {
    FiscalID : string;
    VatNumber : string;
  }

  export class GetFlatOrganizationUnitTree extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetFlatOrganizationUnitTreeResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetFlatOrganizationUnitTreeResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Core.Services.GetFlatOrganizationUnitTreeResponseOrganizationUnitDto[];
  }

  export class GetGiftCardOptions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetGiftCardOptionsResponse> {
    ProductID : number; // Int32
    CardNumber : string;
  }

  export class GetGiftCardOptionsResponse extends EVA.API.ResponseMessage {
    CardID : string;
    Status : string;
    CurrencyID : string;
    BusinessRules : EVA.Core.Services.GetGiftCardOptionsResponseCardBusinessRules;
  }

  export class GetGiftWrappingOptionsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetGiftWrappingOptionsForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetGiftWrappingOptionsForOrderResponse extends EVA.API.ResponseMessage {
    WrapOrder : boolean;
    WrapIndividually : boolean;
    GiftWraps : EVA.Core.Services.GiftWrap[];
    Message : string;
    GreetingCardProductID? : number; // Int32, nullable
  }

  export class GetInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceResponse> {
    ID : number; // Int32
  }

  export class GetInvoiceAdditionalAmountsForInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceAdditionalAmountsForInvoiceResponse> {
    InvoiceID : number; // Int32
  }

  export class GetInvoiceAdditionalAmountsForInvoiceResponse extends EVA.API.ResponseMessage {
    InvoiceAdditionalAmounts : EVA.Core.Services.GetInvoiceAdditionalAmountsForInvoiceResponseInvoiceAdditionalAmountDto[];
  }

  export class GetInvoiceAdditionalAmountTypeByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceAdditionalAmountTypeByIDResponse> {
    ID : number; // Int32
  }

  export class GetInvoiceAdditionalAmountTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string;
    Description : string;
    LedgerClassID : string;
  }

  export class GetInvoiceAdditionalAmountTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceAdditionalAmountTypesResponse> {
  }

  export class GetInvoiceAdditionalAmountTypesResponse extends EVA.API.ResponseMessage {
    InvoiceAdditionalAmountTypes : EVA.Core.Services.GetInvoiceAdditionalAmountTypesResponseInvoiceAdditionalAmountTypeDto[];
  }

  export class GetInvoiceDisputeReasonByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceDisputeReasonByIDResponse> {
    ID : number; // Int32
  }

  export class GetInvoiceDisputeReasonByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string;
    Description : string;
    LedgerClassID : string;
    AutoResolve : boolean;
  }

  export class GetInvoiceDisputeReasons extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceDisputeReasonsResponse> {
  }

  export class GetInvoiceDisputeReasonsResponse extends EVA.API.ResponseMessage {
    InvoiceDisputeReasons : EVA.Core.Services.GetInvoiceDisputeReasonsResponseInvoiceDisputeReasonDto[];
  }

  export class GetInvoiceDisputesForInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceDisputesForInvoiceResponse> {
    InvoiceID : number; // Int32
  }

  export class GetInvoiceDisputesForInvoiceResponse extends EVA.API.ResponseMessage {
    InvoiceDisputes : EVA.Core.Services.GetInvoiceDisputesForInvoiceResponseInvoiceDisputeDto[];
    TotalDisputedAmount : number; // Decimal
  }

  export class GetInvoiceExportByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceExportByIDResponse> {
    ID : number; // Int32
  }

  export class GetInvoiceExportByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    InvoiceID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class GetInvoiceExportDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoiceExportDocumentsResponse> {
    ID : number; // Int32
  }

  export class GetInvoiceExportDocumentsResponse extends EVA.API.ResponseMessage {
    RequestDocuments : EVA.Core.TransputJobDocument[];
    ResponseDocuments : EVA.Core.TransputJobDocument[];
  }

  export class GetInvoicePayments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetInvoicePaymentsResponse> {
    OrderID : number; // Int32
    InvoiceID? : number; // Int32, nullable
  }

  export class GetInvoicePaymentsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetInvoicePaymentsResponseInvoicePayment[];
  }

  export class GetInvoiceResponse extends EVA.API.ResponseMessage {
    Invoice : EVA.Core.InvoiceDetailsDto;
  }

  export class GetOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrderResponse> {
    OrderID : number; // Int32
    IncludeFailedPayments : boolean;
    IncludePendingPayments : boolean;
    ProductProperties : string[];
    ShowOnlyShippableLines : boolean;
  }

  export class GetOrderExportByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrderExportByIDResponse> {
    ID : number; // Int32
  }

  export class GetOrderExportByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    OrderID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    IsDelivery : boolean;
    ShipFromOrganizationUnitID? : number; // Int32, nullable
    ShipFromOrganizationUnitName : string;
    ShipToOrganizationUnitID : number; // Int32
    ShipToOrganizationUnitName : string;
    Lines : EVA.Core.Services.GetOrderExportByIDResponseOrderExportLineDto[];
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class GetOrderExportDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrderExportDocumentsResponse> {
    ID : number; // Int32
  }

  export class GetOrderExportDocumentsResponse extends EVA.API.ResponseMessage {
    RequestDocuments : EVA.Core.TransputJobDocument[];
    ResponseDocuments : EVA.Core.TransputJobDocument[];
  }

  export class GetOrderResponse extends EVA.API.GetResponse<EVA.Core.OrderDto> {
    Amounts : EVA.Core.OpenOrderAmounts;
    HasMoreLines : boolean;
  }

  export class GetOrderStatistics extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrderStatisticsResponse> {
    OrderID : number; // Int32
  }

  export class GetOrderStatisticsResponse extends EVA.API.ResponseMessage {
    Statistics : EVA.Core.OrderStatistics;
  }

  export class GetOrderSummaryForShipping extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrderSummaryForShippingResponse> {
    OrderID : number; // Int32
  }

  export class GetOrderSummaryForShippingResponse extends EVA.API.ResponseMessage {
    Lines : EVA.Core.Services.GetOrderSummaryForShippingResponseOrderLineSummary[];
  }

  export class GetOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetOrganizationUnitCreditBalance extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitCreditBalanceResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetOrganizationUnitCreditBalanceResponse extends EVA.API.ResponseMessage {
    CreditBalance : number; // Decimal
  }

  export class GetOrganizationUnitDetailed extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitDetailedResponse> {
    ID : number; // Int32
  }

  export class GetOrganizationUnitDetailedResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ParentID? : number; // Int32, nullable
    Name : string;
    Description : string;
    AddressID? : number; // Int32, nullable
    Address : EVA.Core.AddressDto;
    EmailAddress : string;
    PhoneNumber : string;
    Type : EVA.Framework.OrganizationUnitTypes;
    Status : EVA.Core.OrganizationUnitStatus;
    OpeningHours : EVA.Core.OpeningHoursDto[];
    Subnet : string;
    RegisterCashLimit? : number; // Decimal, nullable
    SafeCashLimit? : number; // Decimal, nullable
    VisibleByApplicationID : number; // Int32
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    RegistrationNumber : string;
    VatNumber : string;
    BankAccount : string;
    CurrencyID : string;
    TimeZone : string;
    CocNumber : string;
  }

  export class GetOrganizationUnitNotes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitNotesResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetOrganizationUnitNotesResponse extends EVA.API.ResponseMessage {
    Notes : string;
  }

  export class GetOrganizationUnitOpeningHoursForPeriod extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitOpeningHoursForPeriodResponse> {
    OrganizationUnitID : number; // Int32
    From : string; // DateTime
    To : string; // DateTime
  }

  export class GetOrganizationUnitOpeningHoursForPeriodResponse extends EVA.API.ResponseMessage {
    OpeningHours : { [ key : string ] : EVA.Core.Services.GetOrganizationUnitOpeningHoursForPeriodResponseOrganizationUnitOpeningHours };
  }

  export class GetOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.OrganizationUnitDto;
  }

  export class GetOrganizationUnitSettings extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitSettingsResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetOrganizationUnitSettingsResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ParentID? : number; // Int32, nullable
    BackendID : string;
    BackendRelationID : string;
    BackendCompanyID : string;
    BranchNumber : string;
    GlobalLocationNumber : string;
    RegisterCashLimit? : number; // Decimal, nullable
    SafeCashLimit? : number; // Decimal, nullable
    CashHandlerID? : number; // Int32, nullable
    CashHandlerName : string;
    TypeID : number; // Int32
    Subnet : string;
    UseForAccounting : boolean;
    AttachedToUserID? : number; // Int32, nullable
    IpAddress : string;
    CountryID : string;
    LanguageID : string;
    CurrencyID : string;
    CostPriceCurrencyID : string;
    TimeZone : string;
    AssortmentID? : number; // Int32, nullable
    AssortmentName : string;
    RoleSetID : number; // Int32
    RoleSetName : string;
  }

  export class GetOrganizationUnitsForUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitsForUserResponse> {
    IncludeNonLoginOrganizationUnits : boolean;
    UserTypeFilter : EVA.Framework.UserTypes;
  }

  export class GetOrganizationUnitsForUserResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.OrganizationUnitDto[];
  }

  export class GetOrganizationUnitTree extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetOrganizationUnitTreeResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetOrganizationUnitTreeResponse extends EVA.API.GetResponse<EVA.Core.Services.OrganizationUnitTreeDto> {
  }

  export class GetPaymentTransaction extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPaymentTransactionResponse> {
    PaymentTransactionID : number; // Int32
  }

  export class GetPaymentTransactionResponse extends EVA.API.ResponseMessage {
    PaymentTransaction : EVA.Core.PaymentTransactionDto;
  }

  export class GetPaymentTransactionsForInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPaymentTransactionsResponse> {
    InvoiceID : number; // Int32
  }

  export class GetPaymentTransactionsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPaymentTransactionsResponse> {
    OrderID : number; // Int32
  }

  export class GetPaymentTransactionsResponse extends EVA.API.ResponseMessage {
    PaymentTransactions : EVA.Core.Services.GetPaymentTransactionsResponsePaymentTransaction[];
  }

  export class GetPickProductDiscountOptionsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPickProductDiscountOptionsForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetPickProductDiscountOptionsForOrderLine extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPickProductDiscountOptionsForOrderLineResponse> {
    OrderLineID : number; // Int32
  }

  export class GetPickProductDiscountOptionsForOrderLineResponse extends EVA.API.ResponseMessage {
    BaseAmount : number; // Decimal
    Options : number[];
    Tiers : EVA.Core.Services.PickProductTierOptions[];
    CurrentSelection? : number; // Int32, nullable
    CurrentTier : string;
  }

  export class GetPickProductDiscountOptionsForOrderResponse extends EVA.API.ResponseMessage {
    OptionsPerLine : { [ key : number ] : EVA.Core.Services.GetPickProductDiscountOptionsForOrderResponsePickProductDiscountOptions };
  }

  export class GetPotentialBundleProductsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPotentialBundleProductsForOrderResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    IncludedFields : string[];
    ProductIDs : number[];
  }

  export class GetPotentialBundleProductsForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetPotentialBundleProductsForOrderResponseBundleProduct[];
  }

  export class GetPotentialDiscountsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPotentialDiscountsResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
  }

  export class GetPotentialDiscountsForProductSearch extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPotentialDiscountsResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    SearchProductsRequest : EVA.Core.Services.SearchProducts;
  }

  export class GetPotentialDiscountsResponse extends EVA.API.ResponseMessage {
    OrderDiscounts : EVA.Core.Services.PotentialDiscountDto[];
    ProductDiscounts : { [ key : number ] : EVA.Core.Services.PotentialDiscountDto[] };
  }

  export class GetProductAvailability extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductAvailabilityResponse> {
    Products : EVA.Core.Services.GetProductAvailabilityProduct[];
    OrganizationUnitID? : number; // Int32, nullable
    Options : EVA.Core.Services.GetProductAvailabilityAvailabilityOptions;
  }

  export class GetProductAvailabilityData extends EVA.API.GetRequestGeneric<EVA.Core.Services.GetProductAvailabilityDataResponse> {
  }

  export class GetProductAvailabilityDataResponse extends EVA.API.GetResponse<EVA.Core.ProductAvailabilityDataDto> {
  }

  export class GetProductAvailabilityResponse extends EVA.API.ResponseMessage {
    Products : EVA.Core.Services.GetProductAvailabilityResponseProductAvailabilityResult[];
  }

  export class GetProductBundle extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductBundleResponse> {
    ID : number; // Int32
    IncludedFields : string[];
  }

  export class GetProductBundleLineDto {
    ID : number; // Int32
    Description : string;
    BackendID : string;
    Type : EVA.Core.ProductBundleLineTypes;
    DefaultProduct : EVA.Core.Services.ProductBundlesProductInfo;
    Options : EVA.Core.Services.GetProductBundleLineOptionDto[];
  }

  export class GetProductBundleLineOptionDto {
    ID : number; // Int32
    Sequence : number; // Int32
    Quantity : number; // Int32
    Product : EVA.Core.Services.ProductBundlesProductInfo;
  }

  export class GetProductBundleResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string;
    BundleProduct : EVA.Core.Services.ProductBundlesProductInfo;
    BundlePricing : EVA.Core.Services.BundleProductPriceInfo;
    Lines : EVA.Core.Services.GetProductBundleLineDto[];
  }

  export class GetProductDetail extends EVA.API.GetRequestGeneric<EVA.Core.Services.GetProductDetailResponse> {
  }

  export class GetProductDetailResponse extends EVA.API.GetResponse<any> {
  }

  export class GetProductPrices extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductPricesResponse> {
    ProductIDs : number[];
  }

  export class GetProductPricesResponse extends EVA.API.ResponseMessage {
    Prices : EVA.Core.Services.PriceInfo[];
  }

  export class GetProductPricing extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductPricingResponse> {
    ProductID : number; // Int32
  }

  export class GetProductPricingResponse extends EVA.API.ResponseMessage {
    UnitPrice : number; // Decimal
    OriginalUnitPrice? : number; // Decimal, nullable
    TaxRate : number; // Decimal
    UnitPriceInTax : number; // Decimal
    OriginalUnitPriceInTax? : number; // Decimal, nullable
    CurrencyID : string;
    UnitCost? : number; // Decimal, nullable
    CostPriceCurrencyID : string;
  }

  export class GetProductRequirementByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductRequirementByIDResponse> {
    ID : number; // Int32
  }

  export class GetProductRequirementByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ProductID : number; // Int32
    ProductCustomID : string;
    ProductName : string;
    Name : string;
    DataType : EVA.Core.ProductRequirementDataTypes;
    IsArray : boolean;
    IsRequired : boolean;
    Data : any;
  }

  export class GetProductRequirementValuesForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductRequirementValuesForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetProductRequirementValuesForOrderLine extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductRequirementValuesForOrderLineResponse> {
    OrderLineID : number; // Int32
  }

  export class GetProductRequirementValuesForOrderLineResponse extends EVA.API.ResponseMessage {
    Values : { [ key : number ] : any };
  }

  export class GetProductRequirementValuesForOrderResponse extends EVA.API.ResponseMessage {
    Values : { [ key : number ] : { [ key : number ] : any } };
  }

  export class GetProductRunRates extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductRunRatesResponse> {
    ProductIDs : number[];
    WarehouseOrganizationUnitID : number; // Int32
    Since : string; // DateTime
  }

  export class GetProductRunRatesResponse extends EVA.API.ResponseMessage {
    TotalQuantity : number; // Int32
    DailyRunRate : number; // Double
    MonthlyRunRate : number; // Double
    RunRates : EVA.Core.Services.GetProductRunRatesResponseRunRate[];
  }

  export class GetProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductsResponse> {
    ProductIDs : number[];
    IncludedFields : string[];
  }

  export class GetProductSearchSuggestions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductSearchSuggestionsResponse> {
    Text : string;
    MaxSuggestions? : number; // Int32, nullable
  }

  export class GetProductSearchSuggestionsResponse extends EVA.API.ResponseMessage {
    Suggestions : EVA.Core.SuggestionModel[];
  }

  export class GetProductsResponse extends EVA.API.ResponseMessage {
    Products : { [ key : number ] : any };
  }

  export class GetProductStructure extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductStructureResponse> {
    Code : string;
    LanguageID : string;
    CountryID : string;
  }

  export class GetProductStructureResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Code : string;
    Name : string;
    LanguageID : string;
    CountryID : string;
    Definition : EVA.Core.ProductStructureDefinition;
  }

  export class GetProductSupplierInfoForProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductSupplierInfoForProductsResponse> {
    ProductIDs : number[];
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class GetProductSupplierInfoForProductsResponse extends EVA.API.ResponseMessage {
    ProductSupplierInfos : EVA.Core.Services.GetProductSupplierInfoForProductsResponseProductSupplierInfo[];
  }

  export class GetProductUnitOfMeasureQuantities extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetProductUnitOfMeasureQuantitiesResponse> {
    Products : EVA.Core.Services.GetProductUnitOfMeasureQuantitiesModel[];
  }

  export class GetProductUnitOfMeasureQuantitiesResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.Services.GetProductUnitOfMeasureQuantitiesResponseModel[];
  }

  export class GetPurchaseOrderShipment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetPurchaseOrderShipmentResponse> {
    ShipmentID : number; // Int32
  }

  export class GetPurchaseOrderShipmentResponse extends EVA.API.ResponseMessage {
    Shipment : EVA.Core.PurchaseOrderShipmentDto;
  }

  export class GetQuantityOnHandForProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetQuantityOnHandForProductsResponse> {
    OrganizationUnitID : number; // Int32
    ProductIDs : number[];
  }

  export class GetQuantityOnHandForProductsResponse extends EVA.API.GetResponse<{ [ key : number ] : number }> {
  }

  export class GetRelatedOrderLines extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetRelatedOrderLinesResponse> {
    OrderLineID : number; // Int32
  }

  export class GetRelatedOrderLinesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetRelatedOrderLinesResponseModel[];
  }

  export class GetRelatedOrders extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetRelatedOrdersResponse> {
    OrderID : number; // Int32
  }

  export class GetRelatedOrdersResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetRelatedOrdersResponseModel[];
  }

  export class GetRequiredDataForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetRequiredDataForOrderResponse> {
    OrderID : number; // Int32
    RequiredFor : EVA.Core.RequiredFor;
  }

  export class GetRequiredDataForOrderResponse extends EVA.API.ResponseMessage {
    RequiredData : EVA.Core.RequiredData;
  }

  export class GetRequiredOrganizationUnitFields extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetRequiredOrganizationUnitFieldsResponse> {
  }

  export class GetRequiredOrganizationUnitFieldsResponse extends EVA.API.ResponseMessage {
    RequiredFields : string[];
  }

  export class GetReturnableStatusForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetReturnableStatusForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetReturnableStatusForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ReturnableStatusForOrderLine[];
    ReturnSets : EVA.Core.Services.OrderLinesReturnSet[];
  }

  export class GetReturnToSupplierData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetReturnToSupplierDataResponse> {
    OrderID : number; // Int32
  }

  export class GetReturnToSupplierDataResponse extends EVA.API.ResponseMessage {
    Reason : EVA.Framework.EnumDto;
  }

  export class GetSalesTaxEstimateForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SalesTaxEstimateForOrderResponse> {
    OrderID : number; // Int32
  }

  export class GetShipmentDetails extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentDetailsResponse> {
    ID? : number; // Int32, nullable
    BackendID : string;
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class GetShipmentDetailsResponse extends EVA.API.ResponseMessage {
    ReceiveMethod : EVA.Core.ShipmentReceiveMethods;
    IsCompleted : boolean;
    WorkSet : EVA.Core.ReceiveShipmentWorkSet;
  }

  export class GetShipmentExportByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentExportByIDResponse> {
    ID : number; // Int32
  }

  export class GetShipmentExportByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShipmentID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    ShippedFromOrganizationUnitID? : number; // Int32, nullable
    ShippedFromOrganizationUnitName : string;
    ShippedToOrganizationUnitID : number; // Int32
    ShippedToOrganizationUnitName : string;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class GetShipmentExportDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentExportDocumentsResponse> {
    ID : number; // Int32
  }

  export class GetShipmentExportDocumentsResponse extends EVA.API.ResponseMessage {
    RequestDocuments : EVA.Core.TransputJobDocument[];
    ResponseDocuments : EVA.Core.TransputJobDocument[];
  }

  export class GetShipmentLines extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentLinesResponse> {
    ShipmentID : number; // Int32
  }

  export class GetShipmentLinesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetShipmentLinesResponseModel[];
  }

  export class GetShipmentReceipt extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentReceiptResponse> {
    ShipmentReceiptID : number; // Int32
  }

  export class GetShipmentReceiptResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string;
    BackendSystemID : string;
    TotalQuantityReceived : number; // Int32
    Lines : EVA.Core.Services.GetShipmentReceiptResponseLineDto[];
  }

  export class GetShipmentSettings extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShipmentSettingsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class GetShipmentSettingsResponse extends EVA.API.ResponseMessage {
    OrganizationUnitID : number; // Int32
    DefaultReceiveMethod : EVA.Core.ShipmentReceiveMethods;
  }

  export class GetShippingMethodsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShippingMethodsForOrderResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
  }

  export class GetShippingMethodsForOrderResponse extends EVA.API.ResponseMessage {
    ShippingMethods : EVA.Core.ShippingMethodByOrderLineDto[];
  }

  export class GetShoppingCart extends EVA.API.RequestMessageGeneric<EVA.Core.ShoppingCartResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    ProductProperties : string[];
    // By default only confirmed payments are returned, enabling this flag will return all PaymentTransactions
    IncludeAllPayments? : boolean;
  }

  export class GetShoppingCartInfo extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShoppingCartInfoResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
  }

  export class GetShoppingCartInfoResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
    QuantityOrdered : number; // Int32
    TotalAmount : number; // Decimal
    // Obsolete
    ForeignTotalAmount : number; // Decimal
    CurrencyID : string;
  }

  export class GetShopsByProximity extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetShopsByProximityResponse> {
    // Amount of stores to return, defaults to 10, max 100
    Limit? : number; // Int32, nullable
    // Range around the coordinates to look for shops, in meters, defaults to setting `DefaultShopProximityRange` / 50000, max 250000
    Range? : number; // Int32, nullable
    // Filter only stores with available stock
    HasStock : boolean;
    Status : EVA.Core.OrganizationUnitStatus;
    ProductID? : number; // Int32, nullable
    Latitude : number; // Double
    Longitude : number; // Double
  }

  export class GetShopsByProximityResponse extends EVA.API.ResponseMessage {
    Shops : EVA.Core.Services.GetShopsByProximityResponseShopInfo[];
  }

  export class GetStation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStationResponse> {
    ID : number; // Int32
  }

  export class GetStationResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.StationDto;
  }

  export class GetStockAvailabilityEstimateForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponse> {
    OrderID : number; // Int32
    OrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForOrderOrderLine[];
  }

  export class GetStockAvailabilityEstimateForOrderResponse extends EVA.API.ResponseMessage {
    OrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseOrderLine[];
  }

  export class GetStockAvailabilityEstimateForProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    Products : EVA.Core.Services.GetStockAvailabilityEstimateForProductsProduct[];
    // If set true the service will also return reserved OrderLines
    IncludeReservedOrders : boolean;
    // If set to true the service will also return purchase OrderLines meant for shops
    IncludeShopReplenishments : boolean;
  }

  export class GetStockAvailabilityEstimateForProductsResponse extends EVA.API.ResponseMessage {
    Products : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseProduct[];
  }

  export class GetStockAvailabilityTimeline extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockAvailabilityTimelineResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    ProductIDs : number[];
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    Type : EVA.Core.Services.AvailabilityTimelineItemTypes;
  }

  export class GetStockAvailabilityTimelineResponse extends EVA.API.ResponseMessage {
    TimelineItems : EVA.Core.Services.GetStockAvailabilityTimelineResponseTimelineItem[];
  }

  export class GetStockByStockLabelForProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockByStockLabelForProductsResponse> {
    OrganizationUnitID : number; // Int32
    ProductIDs : number[];
    StockLabelIDs : number[];
  }

  export class GetStockByStockLabelForProductsResponse extends EVA.API.ResponseMessage {
    Stock : { [ key : number ] : EVA.Core.Services.GetStockByStockLabelForProductsResponseStockLabelStock[] };
  }

  export class GetStockDetailsForProduct extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockDetailsForProductResponse> {
    ProductID : number; // Int32
  }

  export class GetStockDetailsForProductResponse extends EVA.API.ResponseMessage {
    PromisedDeliveryDate? : string; // DateTime, nullable
    PromisedDeliveryStatus? : EVA.Core.ProductPromisedDeliveryStatuses;
    QuantityOnHand : number; // Int32
    SellableQuantityAvailable : number; // Int32
    StockPerLabel : { [ key : number ] : number };
    StockInTransit : EVA.Core.InTransit[];
    SellableStockInStoresWithinApplication : number; // Int32
    SellableStockInWarehouses : EVA.Core.OrganizationUnitWithStock[];
  }

  export class GetStockLabels extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockLabelsResponse> {
  }

  export class GetStockLabelsResponse extends EVA.API.ResponseMessage {
    StockLabels : EVA.Core.Services.GetStockLabelsResponseStockLabelDto[];
  }

  export class GetStockNotification extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StockNotificationResponse> {
    ProductID : number; // Int32
    OrganizationUnitID : number; // Int32
    EmailAddress : string;
  }

  export class GetStockNotificationForCurrentUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StockNotificationResponse> {
    ProductID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class GetStockResource extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStockResourceResponse> {
    ResourceID : number; // Int32
  }

  export class GetStockResourceResponse extends EVA.API.ResponseMessage {
    Resource : EVA.Core.Services.StockResourceDto;
  }

  export class GetStringTranslation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetStringTranslationResponse> {
    Key : string;
    LanguageID : string;
    CountryID : string;
  }

  export class GetStringTranslationResponse extends EVA.API.ResponseMessage {
    Key : string;
    LanguageID : string;
    CountryID : string;
    Value : string;
  }

  export class GetSuppliersForOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetSuppliersForOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
  }

  export class GetSuppliersForOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.GetSuppliersForOrganizationUnitResponseModel[];
  }

  export class GetSupplierStockForProduct extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetSupplierStockForProductResponse> {
    OrganizationUnitID : number; // Int32
    SupplierID : number; // Int32
    ProductID : number; // Int32
  }

  export class GetSupplierStockForProductResponse extends EVA.API.ResponseMessage {
    AvailableStock : number; // Int32
  }

  export class GetTaxRate extends EVA.API.GetRequest implements EVA.API.IRequestRespondsAs<EVA.Core.Services.GetTaxRateResponse> {
  }

  export class GetTaxRateResponse extends EVA.API.GetResponse<EVA.Core.TaxRateModel> {
  }

  export class GetTokenInfo extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetTokenInfoResponse> {
    Authorization : string;
  }

  export class GetTokenInfoResponse extends EVA.API.ResponseMessage {
    UserID : number; // Int32
    ExpirationDate? : string; // DateTime, nullable
    OrganizationUnitID? : number; // Int32, nullable
    ApplicationID? : number; // Int32, nullable
    LanguageID : string;
    TemporaryAccessType : string;
    TemporaryAccessData : any;
  }

  export class GetTransportOrderLineData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetTransportOrderLineDataResponse> {
    OrderLineID : number; // Int32
  }

  export class GetTransportOrderLineDataResponse extends EVA.API.ResponseMessage {
    TransportOrderLineData : EVA.Core.TransportOrderLineData;
  }

  export class GetUser extends EVA.API.GetRequestGeneric<EVA.Core.Services.GetUserResponse> {
  }

  export class GetUserBySocialSecurityNumber extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserBySocialSecurityNumberResponse> {
    SocialSecurityNumber : string;
    AsEmployee? : boolean;
  }

  export class GetUserBySocialSecurityNumberResponse extends EVA.API.ResponseMessage {
    UserID? : number; // Int32, nullable
  }

  export class GetUserConsignment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserConsignmentResponse> {
    UserID : number; // Int32
  }

  export class GetUserConsignmentResponse extends EVA.API.ResponseMessage {
    UseConsignment : boolean;
  }

  export class GetUserDebtorData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserDebtorDataResponse> {
    UserID : number; // Int32
  }

  export class GetUserDebtorDataResponse extends EVA.API.ResponseMessage {
    PaymentTerms : string;
    CreditLimit? : number; // Decimal, nullable
    ColloPrice? : number; // Decimal, nullable
    PalletPrice? : number; // Decimal, nullable
    OversizedPrice? : number; // Decimal, nullable
    AssignedToUser : EVA.Core.Services.AssignedToUser;
    IsTaxExempt : boolean;
  }

  export class GetUserGroupByID extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserGroupByIDResponse> {
    ID : number; // Int32
  }

  export class GetUserGroupByIDResponse extends EVA.API.ResponseMessage {
    Name : string;
  }

  export class GetUserIdentificationByID extends EVA.API.GetRequestGeneric<EVA.Core.Services.GetUserIdentificationByIDResponse> {
  }

  export class GetUserIdentificationByIDResponse extends EVA.API.GetResponse<EVA.Core.Services.IdentificationDto> {
  }

  export class GetUserInfoBySocialSecurityNumber extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserInfoBySocialSecurityNumberResponse> {
    CountryID : string;
    SocialSecurityNumber : string;
  }

  export class GetUserInfoBySocialSecurityNumberResponse extends EVA.API.ResponseMessage {
    Data : EVA.Core.UserDto;
    Address : EVA.Core.AddressDto;
  }

  export class GetUserPhoneNumbers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserPhoneNumbersResponse> {
    UserID? : number; // Int32, nullable
  }

  export class GetUserPhoneNumbersResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.UserPhoneNumberModel[];
  }

  export class GetUserResponse extends EVA.API.GetResponse<EVA.Core.UserDto> {
  }

  export class GetUserSubscriptions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetUserSubscriptionsResponse> {
    UserID? : number; // Int32, nullable
  }

  export class GetUserSubscriptionsResponse extends EVA.API.ResponseMessage {
    Subscriptions : EVA.Core.Services.GetUserSubscriptionsResponseUserSubscriptionDto[];
  }

  export class GetWarehouseOrderData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetWarehouseOrderDataResponse> {
    OrderID : number; // Int32
  }

  export class GetWarehouseOrderDataResponse extends EVA.API.ResponseMessage {
    WarehouseOrderData : EVA.Core.WarehouseOrderData;
  }

  export class GetWebshops extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetWebshopsResponse> {
  }

  export class GetWebshopsResponse extends EVA.API.ResponseMessage {
    Webshops : EVA.Core.Services.GetWebshopsResponseWebshopDto[];
  }

  export class GetWishList extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetWishListResponse> {
    OrderID : number; // Int32
    // Required if you are not the owner of the wishlist.
    AccessToken : string;
    IncludedProperties : string[];
    ShowUnconfirmedFundings : boolean;
  }

  export class GetWishListOrderLineData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetWishListOrderLineDataResponse> {
    OrderID : number; // Int32
  }

  export class GetWishListOrderLineDataResponse extends EVA.API.ResponseMessage {
    Lines : EVA.Core.Services.GetWishListOrderLineDataResponseWishListOrderLineDataDto[];
  }

  export class GetWishListResponse extends EVA.API.GetResponse<EVA.Core.Services.WishListDto> {
  }

  export class GetWishListsForUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.GetWishListsForUserResponse> {
    ID? : number; // Int32, nullable
    ShowClosedOrders : boolean;
    ShowUnconfirmedFundings : boolean;
    HasOrderLines : boolean;
    IncludedProperties : string[];
  }

  export class GetWishListsForUserResponse extends EVA.API.GetResponse<EVA.Core.Services.WishListDto[]> {
  }

  export class GiftWrap {
    Message : string;
    GreetingCardProductID? : number; // Int32, nullable
    Lines : EVA.Core.Services.WrapLine[];
  }

  export class GiftWrappingLineAvailability {
    OrderLineID : number; // Int32
    QuantityWrapped : number; // Int32
    QuantityAvailable : number; // Int32
    TotalQuantityWrappable : number; // Int32
  }

  export class IdentificationDto {
    ID : number; // Int32
    Type : EVA.Core.IdentificationTypes;
    Number : string;
    ValidTo : string; // DateTime
    IssuingDate? : string; // DateTime, nullable
    IssuingCity : string;
    IssuingCountryID : string;
    OriginatingCountryID : string;
    DocumentID : string;
  }

  export class InterbranchOrganizationUnit {
    ID : number; // Int32
    Name : string;
  }

  export class CreateInvoicesForOrderResponseInvoice {
    ID : number; // Int32
    InvoiceNumber : string;
    TypeID : number; // Int32
    StatusID : number; // Int32
  }

  export class ListInvoicesForOrderResponseInvoice {
    ID : number; // Int32
    InvoiceNumber : string;
    InvoiceDate? : string; // DateTime, nullable
    CreatedByID : number; // Int32
    CreationTime : string; // DateTime
    TotalAmount : number; // Decimal
    PaidAmount : number; // Decimal
    OpenAmount : number; // Decimal
    Payments : EVA.Core.Services.ListInvoicesForOrderResponseInvoicePayment[];
  }

  export class GetInvoiceAdditionalAmountsForInvoiceResponseInvoiceAdditionalAmountDto {
    ID : number; // Int32
    TypeID : number; // Int32
    TypeName : string;
    OriginalAmount : number; // Decimal
    Amount : number; // Decimal
    OriginalAmountInTax : number; // Decimal
    AmountInTax : number; // Decimal
    TaxRate : number; // Decimal
    TaxCodeID : number; // Int32
    TaxCodeName : string;
  }

  export class GetInvoiceAdditionalAmountTypesResponseInvoiceAdditionalAmountTypeDto {
    ID : number; // Int32
    Name : string;
    Description : string;
    LedgerClassID : string;
  }

  export class GetInvoiceDisputesForInvoiceResponseInvoiceDisputeDto {
    ID : number; // Int32
    InvoiceLineID? : number; // Int32, nullable
    InvoiceAdditionalAmountID? : number; // Int32, nullable
    ReasonID : number; // Int32
    ReasonName : string;
    Amount : number; // Decimal
    Description : string;
    IsResolved : boolean;
    ResolvedAmount : number; // Decimal
    Type? : EVA.Core.InvoiceDisputeTypes;
    ResolveActions : EVA.Core.InvoiceDisputeResolveActionDto[];
  }

  export class GetInvoiceDisputeReasonsResponseInvoiceDisputeReasonDto {
    ID : number; // Int32
    Name : string;
    Description : string;
    LedgerClassID : string;
    AutoResolve : boolean;
  }

  export class ListInvoiceExportsForInvoiceResponseInvoiceExportDto {
    ID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class ListInvoiceLedgerResponseInvoiceLedgerDto {
    InvoiceID : number; // Int32
    InvoiceLineID? : number; // Int32, nullable
    InvoiceDisputeID? : number; // Int32, nullable
    TypeID : number; // Int32
    TypeName : string;
    OldValue : string;
    NewValue : string;
    Description : string;
    CreatedByID : number; // Int32
    CreatedByFullName : string;
    CreationTime : string; // DateTime
  }

  export class GetInvoicePaymentsResponseInvoicePayment {
    PaymentTransactionID : number; // Int32
    InvoiceID? : number; // Int32, nullable
    Amount : number; // Decimal
    TypeName : string;
    TypeCode : string;
    MethodName : string;
    MethodCode : string;
  }

  export class CreateShipmentReceiptLine {
    ShipmentLineID : number; // Int32
    StockLabelID? : number; // Int32, nullable
    QuantityReceived : number; // Int32
    Resource : EVA.Core.Services.CreateShipmentReceiptResource;
    CompletesShipmentLine : boolean;
  }

  export class ShipOrderLinesLine {
    ID : number; // Int32
    Quantity : number; // Int32
    BackendReference : string;
  }

  export class GetShipmentReceiptResponseLineDto {
    QuantityReceived : number; // Int32
    ShipmentLine : EVA.Core.Services.GetShipmentReceiptResponseLineDtoShipmentLineDto;
    StockLabel : EVA.Framework.EnumDto;
  }

  export class ListAddressBook extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListAddressBookResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListAddressBookFilter>;
    UserID? : number; // Int32, nullable
  }

  export class ListAddressBookResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.AddressBookDto> {
  }

  export class ListApplications extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListApplicationsResponse> {
  }

  export class ListApplicationsResponse extends EVA.API.GetResponse<EVA.Core.Services.ApplicationDto[]> {
  }

  export class ListAvailableRecurringTasks extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListAvailableRecurringTasksResponse> {
  }

  export class ListAvailableRecurringTasksResponse extends EVA.API.ResponseMessage {
    Tasks : EVA.Core.Services.ListAvailableRecurringTasksResponseTaskPluginDto[];
  }

  export class ListAvailableShippingMethods extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListAvailableShippingMethodsResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    OrderLineIDs : number[];
  }

  export class ListAvailableShippingMethodsResponse extends EVA.API.ResponseMessage {
    AvailableShippingMethods : EVA.Core.ShippingMethodByOrderLineDto[];
  }

  export class ListAvailableTimeZones extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListAvailableTimeZonesResponse> {
  }

  export class ListAvailableTimeZonesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListAvailableTimeZonesResponseModel[];
  }

  export class ListBlobsForFinancialPeriod extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListBlobsForFinancialPeriodResponse> {
    FinancialPeriodID : number; // Int32
  }

  export class ListBlobsForFinancialPeriodResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.FinancialPeriodBlobDto[];
  }

  export class ListBlobsForInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListBlobsForInvoiceResponse> {
    InvoiceID : number; // Int32
  }

  export class ListBlobsForInvoiceResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListBlobsForInvoiceResponseModel[];
  }

  export class ListBlobsForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListBlobsForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListBlobsForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.OrderBlobDto[];
  }

  export class ListBookings extends EVA.API.PagedResultRequest<EVA.Core.Services.ListBookingsResponse> {
  }

  export class ListBookingsResponse extends EVA.API.PagedResultResponse<EVA.Core.GeneralLedgerDto> {
  }

  export class ListBrands extends EVA.API.PagedResultRequest<EVA.Core.Services.ListBrandsResponse> {
  }

  export class ListBrandsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListBrandsResponseBrandDto> {
  }

  export class ListCashDeposits extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListCashDepositsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCashDepositsFilter>;
  }

  export class ListCashDepositsResponse extends EVA.API.PagedResultResponse<EVA.Core.ListCashDepositsItem> {
  }

  export class ListCashExpenses extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListCashExpensesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCashExpensesFilter>;
  }

  export class ListCashExpensesResponse extends EVA.API.PagedResultResponse<EVA.Core.ListCashExpensesItem> {
  }

  export class ListCashTransactionLedger extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListCashTransactionLedgerResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCashTransactionLedgerFilter>;
  }

  export class ListCashTransactionLedgerGroups extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListCashTransactionLedgerGroupsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListCashTransactionLedgerFilter>;
  }

  export class ListCashTransactionLedgerGroupsResponse extends EVA.API.PagedResultResponse<EVA.Core.ListCashTransactionLedgerGroup> {
  }

  export class ListCashTransactionLedgerResponse extends EVA.API.PagedResultResponse<EVA.Core.ListCashTransactionLedgerItem> {
  }

  export class ListCommittedOrderLines extends EVA.API.PagedResultRequest<EVA.Core.Services.ListCommittedOrderLinesResponse> {
    ProductID : number; // Int32
  }

  export class ListCommittedOrderLinesResponse extends EVA.API.PagedResultResponse<EVA.Core.CommittedOrderLine> {
  }

  export class ListCountries extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListCountriesResponse> {
    FetchAll : boolean;
  }

  export class ListCountriesResponse extends EVA.API.GetResponse<EVA.Core.Services.CountryDto[]> {
  }

  export class ListCurrencies extends EVA.API.FilteredPagedResultRequest<EVA.Core.Services.ListCurrenciesFilter, EVA.Core.Services.ListCurrenciesResponse> {
  }

  export class ListCurrenciesFilter {
    ID : string;
    Name : string;
  }

  export class ListCurrenciesResponse extends EVA.API.PagedResultResponse<EVA.Core.CurrencyDto> {
  }

  export class ListDevices extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListDevicesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListDevicesFilter>;
  }

  export class ListDevicesResponse extends EVA.API.PagedResultResponse<EVA.Core.ListDevicesModel> {
  }

  export class ListEntityTranslations extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListEntityTranslationsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListEntityTranslationsFilter>;
  }

  export class ListEntityTranslationsResponse extends EVA.API.PagedResultResponse<EVA.Core.ListEntityTranslation> {
  }

  export class ListEventLedger extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListEventLedgerResponse> {
    Query : string;
    PageConfig : EVA.Framework.ScrollablePageConfig<EVA.Core.EventLedgerFilters>;
  }

  export class ListEventLedgerResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.ScrollablePagedResult<EVA.Core.EventLedgerDocument>;
  }

  export class ListExternalOrderStatusForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListExternalOrderStatusForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListExternalOrderStatusForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListExternalOrderStatusForOrderResponseExternalOrderStatus[];
  }

  export class ListFeedSubscriptions extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListFeedSubscriptionsResponse> {
  }

  export class ListFeedSubscriptionsResponse extends EVA.API.GetResponse<EVA.Core.Services.FeedSubscriptionDto[]> {
  }

  export class ListFinancialEvents extends EVA.API.PagedRequestMessage<EVA.Core.ListFinancialEventsFilter, EVA.Core.Services.ListFinancialEventsResponse> {
  }

  export class ListFinancialEventsResponse extends EVA.API.PagedResponseMessage<EVA.Core.ListFinancialEventRow> {
  }

  export class ListFinancialPeriodAudits extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListFinancialPeriodAuditsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListAuditsFilter>;
  }

  export class ListFinancialPeriodAuditsResponse extends EVA.API.PagedResultResponse<EVA.Core.FinancialPeriodAuditDto> {
  }

  export class ListFinancialPeriodExports extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListFinancialPeriodExportsResponse> {
    FinancialPeriodID : number; // Int32
  }

  export class ListFinancialPeriodExportsResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.Services.ListFinancialPeriodExportsResponseModel[];
  }

  export class ListFinancialPeriods extends EVA.API.PagedResultRequest<EVA.Core.Services.ListFinancialPeriodsResponse> {
  }

  export class ListFinancialPeriodsResponse extends EVA.API.PagedResultResponse<EVA.Core.FinancialPeriodDto> {
  }

  export class ListGeneralLedgers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListGeneralLedgersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListGeneralLedgersFilter>;
  }

  export class ListGeneralLedgersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListGeneralLedgersResponseGeneralLedger> {
  }

  export class ListInterbranchOrganizationUnitForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListInterbranchOrganizationUnitForOrderResponse> {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    ExcludeClosed : boolean;
  }

  export class ListInterbranchOrganizationUnitForOrderResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Core.Services.InterbranchOrganizationUnit[];
  }

  export class ListInvoiceExportsForInvoice extends EVA.API.PagedResultRequest<EVA.Core.Services.ListInvoiceExportsForInvoiceResponse> {
    InvoiceID : number; // Int32
  }

  export class ListInvoiceExportsForInvoiceResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListInvoiceExportsForInvoiceResponseInvoiceExportDto> {
  }

  export class ListInvoiceLedger extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListInvoiceLedgerFilter, EVA.Core.Services.ListInvoiceLedgerResponse> {
  }

  export class ListInvoiceLedgerResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListInvoiceLedgerResponseInvoiceLedgerDto> {
  }

  export class ListInvoices extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListInvoicesResponse> {
    // Obsolete. Please use the PageConfig.Filter.
    InvoiceNumber : string;
    // Obsolete. Please use the PageConfig.Filter.
    Type : EVA.Core.InvoiceTypes;
    // Obsolete. Please use the PageConfig.Filter.
    StartDate? : string; // DateTime, nullable
    // Obsolete. Please use the PageConfig.Filter.
    EndDate? : string; // DateTime, nullable
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListInvoiceFilter>;
  }

  export class ListInvoicesForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListInvoicesForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListInvoicesForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListInvoicesForOrderResponseInvoice[];
  }

  export class ListInvoicesResponse extends EVA.API.PagedResultResponse<EVA.Core.ListInvoicesDto> {
  }

  export class ListManualDiscounts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListManualDiscountsResponse> {
    // Defaults to Sales
    OrderType : EVA.Core.OrderTypes;
  }

  export class ListManualDiscountsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListManualDiscountsResponseManualDiscountDto[];
  }

  export class ListMessageQueueErrors extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListMessageQueueErrorsFilter, EVA.Core.Services.ListMessageQueueErrorsResponse> {
  }

  export class ListMessageQueueErrorsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.MessageQueueErrorDto> {
  }

  export class ListOrderExportsForOrder extends EVA.API.PagedResultRequest<EVA.Core.Services.ListOrderExportsForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListOrderExportsForOrderResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListOrderExportsForOrderResponseOrderExportDto> {
  }

  export class ListOrderLedgerForOrder extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListOrderLedgerFilter, EVA.Core.Services.ListOrderLedgerForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListOrderLedgerForOrderResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListOrderLedgerForOrderResponseOrderLedgerDto> {
  }

  export class ListOrderLines extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListOrderLinesResponse> {
    OrderID : number; // Int32
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrderLinesFilter>;
    ProductProperties : string[];
  }

  export class ListOrderLinesInvoiceSummary extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListOrderLinesInvoiceSummaryResponse> {
    OrderID : number; // Int32
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrderLinesFilter>;
  }

  export class ListOrderLinesInvoiceSummaryResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListOrderLinesInvoiceSummaryResponseModel> {
  }

  export class ListOrderLinesResponse extends EVA.API.PagedResultResponse<EVA.Core.OrderLineDto> {
  }

  export class ListOrdersForCustomer extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListOrdersForCustomerFilter, EVA.Core.Services.ListOrdersForCustomerResponse> {
    ID : number; // Int32
  }

  export class ListOrdersForCustomerResponse extends EVA.API.PagedResultResponse<EVA.Core.OrderDto> {
  }

  export class ListOrderShipments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListOrderShipmentsResponse> {
    OrderID : number; // Int32
  }

  export class ListOrderShipmentsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListOrderShipmentsResponseModel[];
  }

  export class ListOrdersWithCustomerReferences extends EVA.API.PagedResultRequest<EVA.Core.Services.ListOrdersWithCustomerReferencesResponse> {
  }

  export class ListOrdersWithCustomerReferencesResponse extends EVA.API.PagedResultResponse<EVA.Core.OrderWithCustomerReferences> {
  }

  export class ListOrganizationUnitByProximity extends EVA.API.PagedResultRequest<EVA.Core.Services.ListOrganizationUnitByProximityResponse> {
    Latitude : number; // Double
    Longitude : number; // Double
  }

  export class ListOrganizationUnitByProximityResponse extends EVA.API.PagedResultResponse<EVA.Core.OrganizationUnitDto> {
  }

  export class ListOrganizationUnits extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListOrganizationUnitsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrganizationUnitsFilter>;
  }

  export class ListOrganizationUnitsForEnrollment extends EVA.API.PagedResultRequest<EVA.Core.Services.ListOrganizationUnitsForEnrollmentResponse> {
  }

  export class ListOrganizationUnitsForEnrollmentResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.OrganizationUnitEnrollmentDto[];
  }

  export class ListOrganizationUnitsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListOrganizationUnitsResponseOrganizationUnit> {
  }

  export class ListOrganizationUnitSuppliers extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListOrganizationUnitSuppliersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListOrganizationUnitSuppliersFilter>;
  }

  export class ListOrganizationUnitSuppliersResponse extends EVA.API.PagedResultResponse<EVA.Core.ListOrganizationUnitSuppliersModel> {
  }

  export class ListProductAvailabilityData extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListProductAvailabilityDataResponse> {
  }

  export class ListProductAvailabilityDataResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.ProductAvailabilityDataDto[];
  }

  export class ListProductBundles extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListProductBundlesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListProductBundlesFilter>;
    IncludedFields : string[];
  }

  export class ListProductBundlesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.Core.Services.ListProductBundlesResponseResult>;
  }

  export class ListProductBundlesResponseResult {
    ID : number; // Int32
    BackendID : string;
    BundleProduct : EVA.Core.Services.ProductBundlesProductInfo;
    BundlePricing : EVA.Core.Services.BundleProductPriceInfo;
  }

  export class ListProductRequirements extends EVA.API.PagedResultRequest<EVA.Core.Services.ListProductRequirementsResponse> {
  }

  export class ListProductRequirementsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ProductRequirementDto> {
  }

  export class ListProductStructures extends EVA.API.PagedResultRequest<EVA.Core.Services.ListProductStructuresResponse> {
  }

  export class ListProductStructuresResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.GetProductStructureResponse> {
  }

  export class ListPurchaseOrderShipmentLines extends EVA.API.PagedResultRequest<EVA.Core.Services.ListPurchaseOrderShipmentLinesResponse> {
    ShipmentID : number; // Int32
  }

  export class ListPurchaseOrderShipmentLinesResponse extends EVA.API.PagedResultResponse<EVA.Core.PurchaseOrderShipmentLineDto> {
  }

  export class ListPurchaseOrderShipments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListPurchaseOrderShipmentsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListPurchaseOrderShipmentsFilter>;
    OrganizationUnitID? : number; // Int32, nullable
    BackendID : string;
    TrackingCode : string;
    IsCompleted? : boolean;
  }

  export class ListPurchaseOrderShipmentsResponse extends EVA.API.PagedResultResponse<EVA.Core.PurchaseOrderShipmentDto> {
  }

  export class ListRecurringTasks extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListRecurringTasksResponse> {
  }

  export class ListRecurringTasks2 extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListRecurringTasks2Response> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.Services.ListRecurringTasks2ListRecurringTasksFilter>;
  }

  export class ListRecurringTasks2Response extends EVA.API.PagedResultResponse<EVA.Framework.RecurringTask> {
  }

  export class ListRecurringTasks2ListRecurringTasksFilter {
    ID : string;
    TypeName : string;
    Query : string;
  }

  export class ListRecurringTasksResponse extends EVA.API.ResponseMessage {
    Tasks : EVA.Framework.RecurringTask[];
  }

  export class ListRequiredStockResourceTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListRequiredStockResourceTypesResponse> {
    ProductID : number; // Int32
  }

  export class ListRequiredStockResourceTypesResponse extends EVA.API.ResponseMessage {
    RequiredStockResourceTypes : EVA.Core.StockResourceTypeDto[];
  }

  export class ListReturnableSuppliersForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListReturnableSuppliersForOrderResponse> {
    OrderID : number; // Int32
  }

  export class ListReturnableSuppliersForOrderResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ListReturnableSuppliersForOrderResponseModel[];
  }

  export class ListShipmentExportsForShipment extends EVA.API.PagedResultRequest<EVA.Core.Services.ListShipmentExportsForShipmentResponse> {
    ShipmentID : number; // Int32
  }

  export class ListShipmentExportsForShipmentResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListShipmentExportsForShipmentResponseShipmentExportDto> {
  }

  export class ListShipmentLines extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListShipmentLinesFilter, EVA.Core.Services.ListShipmentLinesResponse> {
  }

  export class ListShipmentLinesResponse extends EVA.API.PagedResultResponse<EVA.Core.ShipmentLineDto> {
  }

  export class ListShipmentLinesToInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListShipmentLinesToInvoiceResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListShipmentLinesToInvoiceFilter>;
  }

  export class ListShipmentLinesToInvoiceResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListShipmentLinesToInvoiceResponseModel> {
  }

  export class ListShipmentsToInvoice extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListShipmentsToInvoiceResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListShipmentsToInvoiceFilter>;
  }

  export class ListShipmentsToInvoiceResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListShipmentsToInvoiceResponseModel> {
  }

  export class ListShopsInArea extends EVA.API.PagedResultRequest<EVA.Core.Services.ListShopsInAreaResponse> {
    NorthWest : EVA.Core.Services.ListShopsInAreaCoordinate;
    SouthEast : EVA.Core.Services.ListShopsInAreaCoordinate;
    Status : EVA.Core.OrganizationUnitStatus;
  }

  export class ListShopsInAreaResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListShopsInAreaResponseShopInfo> {
  }

  export class ListStationsForOrganizationUnit extends EVA.API.PagedResultRequest<EVA.Core.Services.ListStationsForOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
    DeviceTypeID? : number; // Int32, nullable
  }

  export class ListStationsForOrganizationUnitResponse extends EVA.API.PagedResultResponse<EVA.Core.StationDto> {
  }

  export class ListStockAllocationRules extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListStockAllocationRulesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListStockAllocationRulesFilter>;
  }

  export class ListStockAllocationRulesResponse extends EVA.API.PagedResultResponse<EVA.Core.ListStockAllocationRulesItem> {
  }

  export class ListStockMutations extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListStockMutationsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListStockMutationsFilter>;
  }

  export class ListStockMutationsResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.Core.StockMutationDto>;
  }

  export class ListStockResourcesByProduct extends EVA.API.PagedResultRequest<EVA.Core.Services.ListStockResourcesByProductResponse> {
    ProductID : number; // Int32
    OrganizationUnitIDs : number[];
  }

  export class ListStockResourcesByProductResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ProductWithResourceDto> {
  }

  export class ListStockResourceStockMutations extends EVA.API.PagedResultRequest<EVA.Core.Services.ListStockResourceStockMutationsResponse> {
  }

  export class ListStockResourceStockMutationsResponse extends EVA.API.PagedResultResponse<EVA.Core.StockMutationDto> {
  }

  export class ListStockResourceTypes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListStockResourceTypesResponse> {
  }

  export class ListStockResourceTypesResponse extends EVA.API.ResponseMessage {
    StockResourceTypes : EVA.Core.StockResourceTypeDto[];
  }

  export class ListStringTranslations extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListStringTranslationsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListStringTranslationsFilter>;
  }

  export class ListStringTranslationsResponse extends EVA.API.PagedResultResponse<EVA.Core.ListStringTranslation> {
  }

  export class ListSuspendedOrders extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListSuspendedOrdersResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListSuspendedOrdersFilter>;
  }

  export class ListSuspendedOrdersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ListSuspendedOrdersResponseSuspendedOrderDto> {
  }

  export class ListTaxCodes extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListTaxCodesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.Services.ListTaxCodesFilter>;
  }

  export class ListTaxCodesFilter {
    ID? : number; // Int32, nullable
    Name : string;
    // Only returns tax codes which currently have an active tax rate for your current country. Defaults to true.
    ActiveOnly : boolean;
  }

  export class ListTaxCodesResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.TaxCodeItem> {
  }

  export class ListTaxRates extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListTaxRatesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListTaxRateModelFilters>;
  }

  export class ListTaxRatesResponse extends EVA.API.PagedResultResponse<EVA.Core.TaxRateModel> {
  }

  export class ListTransputJobs extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListTransputJobsFilter, EVA.Core.Services.ListTransputJobsResponse> {
  }

  export class ListTransputJobsResponse extends EVA.API.PagedResultResponse<EVA.Core.TransputJobWithRelatedExportDataDto> {
  }

  export class ListUserGroups extends EVA.API.PagedResultRequest<EVA.Core.Services.ListUserGroupsResponse> {
  }

  export class ListUserGroupsForUser extends EVA.API.PagedResultRequest<EVA.Core.Services.ListUserGroupsForUserResponse> {
    UserID : number; // Int32
  }

  export class ListUserGroupsForUserResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.UserGroupDto> {
  }

  export class ListUserGroupsResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.UserGroupDto> {
  }

  export class ListUserIdentifications extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListUserIdentificationsResponse> {
    UserID : number; // Int32
  }

  export class ListUserIdentificationsResponse extends EVA.API.ResponseMessage {
    Identifications : EVA.Core.Services.IdentificationDto[];
  }

  export class ListUsersForUserGroup extends EVA.API.PagedResultRequest<EVA.Core.Services.ListUsersForUserGroupResponse> {
    UserGroupID : number; // Int32
  }

  export class ListUsersForUserGroupResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.SimpleUserDto> {
  }

  export class ListUsersWithBadgesByIDs extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ListUsersWithBadgesByIDsResponse> {
    UserIDs : number[];
  }

  export class ListUsersWithBadgesByIDsResponse extends EVA.API.ResponseMessage {
    Users : EVA.Core.UserDto[];
  }

  export class Login extends EVA.API.RequestMessageGeneric<EVA.Core.Services.LoginResponse> implements EVA.Core.ILoginRequest {
    Username : string;
    Password : string;
    OrganizationUnitID? : number; // Int32, nullable
    ConfirmationToken : string;
    AuthenticationToken : string;
    IdentificationCode : string;
    RegisterApiKey : boolean;
    SelectOrganizationByApplicationID : boolean;
    LanguageID : string;
    CustomAuthenticatorType : string;
    CustomAuthenticateData : any;
    ClientVersion : string;
    Context : string;
    PublicLogin : boolean;
    UserType : EVA.Framework.UserTypes;
    AsEmployee? : boolean;
  }

  export class LoginResponse extends EVA.API.ResponseMessage {
    Authentication : EVA.Framework.AuthenticationResults;
    OrganizationUnits : EVA.Core.OrganizationUnitDto[];
    User : EVA.Core.LoggedInUserDto;
    LoggedInOrganizationID? : number; // Int32, nullable
    IsCustomAuthenticateResult : boolean;
    AuthenticationToken : string;
    OrganizationUnitCurrencyID : string;
  }

  export class Logout extends EVA.API.RequestMessageGeneric<EVA.Core.Services.LogoutResponse> {
    ExpireAllSessions : boolean;
    ClockOut : boolean;
  }

  export class LogoutResponse extends EVA.API.ResponseMessage {
    LogoutSuccesful : boolean;
  }

  export class GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatusMadeToOrderPurchaseOrderLine {
    ID : number; // Int32
    OrderID : number; // Int32
    RequestedDate? : string; // DateTime, nullable
    IsOverdue : boolean;
    BackendID : string;
    QuantityToShip : number; // Int32
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    IsConfirmed : boolean;
    ShipFromOrganizationUnit : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatusMadeToOrderShipFromOrganizationUnit;
  }

  export class GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatusMadeToOrderShipFromOrganizationUnit {
    ID : number; // Int32
    Name : string;
  }

  export class MakeUserPhoneNumberPrimary extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }

  export class ManualCustomer {
    FirstName : string;
    LastName : string;
    FiscalID : string;
  }

  export class ListManualDiscountsResponseManualDiscountDto {
    ID : number; // Int32
    BackendID : string;
    Description : string;
    MarketingDescription : string;
    Type : string;
    NeedsReason : boolean;
    FixedAmount? : number; // Decimal, nullable
    MaxAmount? : number; // Decimal, nullable
    CurrencyID : string;
  }

  export class ManualLine {
    ProductID? : number; // Int32, nullable
    Description : string;
    TaxRate : number; // Decimal
    Quantity : number; // Int32
    TotalAmountInTax : number; // Decimal
  }

  export class ManualTriggerRecurringTask extends EVA.API.RequestMessageWithEmptyResponse {
    Token : string;
  }

  export class MessageQueueErrorDto {
    ID : number; // Int32
    Status : EVA.Core.MessageQueueErrorStatuses;
    MessageID : string;
    MessageBody : string;
    MessageTypeName : string;
    ExceptionMessage : string;
    StackTrace : string;
    ErrorCode : string;
    HostInfo : string;
    Headers : string;
    Addresses : string;
    CreationTime : string; // DateTime
  }

  export class GetAvailablePaymentMethodsResponseMethodModel {
    Name : string;
    IsUsable : boolean;
    NotUsableError : EVA.Core.PaymentMethodNotUsableError;
    Types : EVA.Core.Services.GetAvailablePaymentMethodsResponseTypeModel[];
  }

  export class AddLineToPurchaseOrderResponseModel {
    ID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
    UnitPrice : number; // Decimal
    RequestedDate? : string; // DateTime, nullable
    Reference : string;
  }

  export class GetProductUnitOfMeasureQuantitiesResponseModel {
    ProductID : number; // Int32
    UnitOfMeasures : EVA.Core.Services.GetProductUnitOfMeasureQuantitiesResponseResult[];
  }

  export class GetProductUnitOfMeasureQuantitiesModel {
    ID : number; // Int32
    Quantity : number; // Int32
  }

  export class GetRelatedOrderLinesResponseModel extends EVA.Core.OrderLineDto {
    OrderType : EVA.Core.OrderTypes;
    SoldFromOrganizationUnit : EVA.Core.Services.GetRelatedOrderLinesResponseOrganizationUnit;
    ShipFromOrganizationUnit : EVA.Core.Services.GetRelatedOrderLinesResponseOrganizationUnit;
  }

  export class GetRelatedOrdersResponseModel {
    RelatedOrderID : number; // Int32
    BackendID : string;
    Description : string;
    CreationTime : string; // DateTime
    TypeID : number; // Int32
    SoldFromOrganizationUnit : EVA.Core.Services.GetRelatedOrdersResponseNamedDto;
    ShipFromOrganizationUnit : EVA.Core.Services.GetRelatedOrdersResponseNamedDto;
  }

  export class GetShipmentLinesResponseModel {
    ID : number; // Int32
    CustomID : string;
    ProductID : number; // Int32
    Description : string;
    BackendReference : string;
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    CurrencyID : string;
    UnitPrice : number; // Decimal
    // Obsolete
    ExchangeRate : number; // Decimal
    // Obsolete
    ForeignUnitPrice : number; // Decimal
    // Obsolete
    ForeignTotalAmount : number; // Decimal
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    UnitPriceInTax : number; // Decimal
    // Obsolete
    ForeignUnitPriceInTax : number; // Decimal
    // Obsolete
    ForeignTotalAmountInTax : number; // Decimal
    TaxRate : number; // Decimal
    DeliveryType : EVA.Core.ShipmentLineDeliveryTypes;
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    IsCompleted : boolean;
  }

  export class GetSuppliersForOrganizationUnitResponseModel {
    ID : number; // Int32
    Name : string;
  }

  export class ListAvailableTimeZonesResponseModel {
    ID : string;
    CountryID : string;
    CountryName : string;
    Offset : number; // Int32
  }

  export class ListBlobsForInvoiceResponseModel {
    Name : string;
    MimeType : string;
    BlobID : string;
    CreationTime : string; // DateTime
  }

  export class ListFinancialPeriodExportsResponseModel {
    ID : number; // Int32
    Name : string;
    Trigger : EVA.Core.FinancialPeriodExportTrigger;
    Status : EVA.Core.TransputJobStatuses;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class ListOrderLinesInvoiceSummaryResponseModel extends EVA.Core.OrderLineDto {
    QuantityLeftToInvoice : number; // Int32
  }

  export class ListOrderShipmentsResponseModel {
    ID : number; // Int32
    BackendID : string;
    ShipmentDate : string; // DateTime
    CompletionTime? : string; // DateTime, nullable
    TrackingCode : string;
    TrackingLink : string;
    ShippedFromOrganizationUnit : EVA.Core.OrganizationUnitDto;
    ShippedToOrganizationUnit : EVA.Core.OrganizationUnitDto;
    TotalQuantityShipped : number; // Int32
    TotalQuantityDelivered : number; // Int32
  }

  export class ListReturnableSuppliersForOrderResponseModel {
    ID : number; // Int32
    BackendID : string;
    Name : string;
  }

  export class ListShipmentLinesToInvoiceResponseModel {
    ID : number; // Int32
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    QuantityInvoiced : number; // Int32
    QuantityAvailableForInvoice : number; // Int32
    CurrencyID : string;
    UnitPrice : number; // Decimal
    TaxRate : number; // Decimal
    TotalAmountInvoiced : number; // Decimal
    TotalAmountDelivered : number; // Decimal
    ProductID : number; // Int32
    CustomID : string;
    ProductName : string;
    SupplierProductBackendID : string;
    DeliveryType : EVA.Core.ShipmentLineDeliveryTypes;
  }

  export class ListShipmentsToInvoiceResponseModel {
    ID : number; // Int32
    OrderIDs : number[];
    OrderBackendIDs : string[];
    ShipmentDate : string; // DateTime
    LastDeliveryDate? : string; // DateTime, nullable
    CompletionTime? : string; // DateTime, nullable
    BackendID : string;
    TrackingCode : string;
    TotalQuantityInvoiced : number; // Int32
    TotalQuantityReceived : number; // Int32
    TotalAmountReceived : number; // Decimal
    TotalAmountInvoiced : number; // Decimal
  }

  export class ProduceShipmentDocumentsResponseModel {
    Type : string;
    Url : string;
  }

  export class ModifyLineActionType extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ModifyLineActionTypeResponse> {
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    LineActionType? : EVA.Core.LineActionTypes;
  }

  export class ModifyLineActionTypeResponse extends EVA.Core.SimpleShoppingCartResponse {
    Success : boolean;
    Messages : { [ key : number ] : string };
  }

  export class ModifyOrderLinePrice extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    OrderLineID : number; // Int32
    UnitPriceInTax : number; // Decimal
    UnitCost? : number; // Decimal, nullable
  }

  export class ModifyPurchaseOrderLine extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    UnitPrice? : number; // Decimal, nullable
    RequestedDate? : string; // DateTime, nullable
    Reference : string;
  }

  export class ModifyQuantityOrdered extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ModifyQuantityOrderedResponse> {
    OrderLineID : number; // Int32
    NewQuantityOrdered : number; // Int32
  }

  export class ModifyQuantityOrderedResponse extends EVA.Core.SimpleShoppingCartResponse {
    Messages : EVA.Core.Services.ModifyQuantityOrderedResponseQuantityMutationResultMessage[];
  }

  export class ModifyQuantityShipped extends EVA.API.RequestMessageWithEmptyResponse {
    ShipmentID : number; // Int32
    Lines : EVA.Core.Services.ModifyQuantityShippedShipmentLine[];
  }

  export class MoveCash extends EVA.API.RequestMessageWithEmptyResponse {
    SourceDeviceID : number; // Int32
    DestinationDeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
    Coins : { [ key : number ] : number };
    BankNotes : { [ key : number ] : number };
  }

  export class MoveCommitments extends EVA.API.RequestMessageWithEmptyResponse {
    Movements : EVA.Core.Services.MoveCommitmentsCommitmentMovement[];
  }

  export class MoveStockMovement {
    BackendID : string;
    ProductID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    SourceStockLabelID : number; // Int32
    DestinationStockLabelID : number; // Int32
    StockResourceID? : number; // Int32, nullable
    StockMutationReasonID? : number; // Int32, nullable
    Quantity : number; // Int32
    Remark : string;
    ProductBackendID : string;
  }

  export class MoveStock extends EVA.API.RequestMessageWithEmptyResponse {
    ProductID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    SourceLabel? : number; // Int32, nullable
    DestinationLabel? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    Reason? : number; // Int32, nullable
    Quantity? : number; // Int32, nullable
    Remark : string;
    BackendSystemID : string;
    Movements : EVA.Core.Services.MoveStockMovement[];
  }

  export class GetRelatedOrdersResponseNamedDto {
    ID : number; // Int32
    Name : string;
  }

  export class OpenFinancialPeriod extends EVA.API.RequestMessageWithEmptyResponse {
  }

  export class OrderBlobDto {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
    Type? : EVA.Core.OrderBlobTypes;
    Name : string;
    MimeType : string;
    BlobID : string;
    CreationTime : string; // DateTime
  }

  export class ListOrderExportsForOrderResponseOrderExportDto {
    ID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class GetOrderExportByIDResponseOrderExportLineDto {
    ID : number; // Int32
    OrderLineID : number; // Int32
    QuantityExported : number; // Int32
    QuantityCancelled : number; // Int32
    QuantityBackordered : number; // Int32
    BackendReference : string;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class ListOrderLedgerForOrderResponseOrderLedgerDto {
    ID : number; // Int32
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    Type : EVA.Framework.EnumDto;
    TypeID : number; // Int32
    OldValue : string;
    NewValue : string;
    Description : string;
    CreatedByID : number; // Int32
    CreationTime : string; // DateTime
    CreatedBy : EVA.Core.Services.ListOrderLedgerForOrderResponseUserDto;
  }

  export class GetStockAvailabilityEstimateForOrderResponseOrderLine {
    OrderLineID : number; // Int32
    ProductID : number; // Int32
    RequestedDate : string; // DateTime
    QuantityAvailable? : number; // Int32, nullable
    IsCommitted : boolean;
    ShipmentDate? : string; // DateTime, nullable
    CanBeFulfilled : boolean;
    AlternativeDates : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseSuggestedAlternativeDate[];
    ExpectedFulfillmentDate? : string; // DateTime, nullable
    FulfillmentStatus? : EVA.Core.OrderLineFulfillmentStatus;
    CommitmentDate? : string; // DateTime, nullable
    ExportDate? : string; // DateTime, nullable
    MadeToOrderStatus : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatus;
    DependsOnPurchaseOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseDependsOnPurchaseOrderLine[];
    ShouldBeSplit : boolean;
    ExportStatus : EVA.Core.OrderExportStatuses;
    CommitmentStatus? : EVA.Core.OrderLineCommitmentStatus;
    IsBlocked : boolean;
  }

  export class GetStockAvailabilityEstimateForOrderOrderLine {
    ID : number; // Int32
    RequestedDate? : string; // DateTime, nullable
  }

  export class ProduceShipmentDocumentsOrderLine {
    ID : number; // Int32
    QuantityToShip : number; // Int32
  }

  export class SetRequestedDateOrderLineDto {
    OrderLineID : number; // Int32
    Quantity? : number; // Int32, nullable
    RequestedDate? : string; // DateTime, nullable
  }

  export class GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatus {
    PurchaseOrderLine : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponseOrderLineMadeToOrderStatusMadeToOrderPurchaseOrderLine;
    HasBeenRequested : boolean;
    HasBeenCompleted : boolean;
  }

  export class OrderLinesReturnSet {
    OrderLineIDs : number[];
    RequiredOrderLineIDsToReturn : number[];
  }

  export class GetOrderSummaryForShippingResponseOrderLineSummary {
    ID : number; // Int32
    ProductID? : number; // Int32, nullable
    TotalQuantityToShip : number; // Int32
    QuantityShipped : number; // Int32
    QuantityOpen : number; // Int32
  }

  export class SalesTaxEstimateForOrderResponseOrderLineTaxCalculationModel {
    OrderLineID : number; // Int32
    TaxRate : number; // Decimal
    TaxAmount : number; // Decimal
  }

  export class SalesTaxEstimateForOrderResponseOrderLineTaxCalculationTaxAmountModel {
    TaxRate : number; // Decimal
    TaxAmount : number; // Decimal
  }

  export class CreateInvoicesForOrderOrderLineToInvoice {
    ID : number; // Int32
    Quantity : number; // Int32
  }

  export class GetRelatedOrderLinesResponseOrganizationUnit {
    ID : number; // Int32
    Name : string;
  }

  export class ListGeneralLedgersResponseOrganizationUnit {
    Name : string;
  }

  export class ListOrganizationUnitsResponseOrganizationUnit {
    ID : number; // Int32
    BackendID : string;
    ParentID? : number; // Int32, nullable
    Name : string;
    Description : string;
    EmailAddress : string;
    PhoneNumber : string;
    Type : EVA.Framework.OrganizationUnitTypes;
    Status : EVA.Core.OrganizationUnitStatus;
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    Address : EVA.Core.AddressDto;
    UpcomingOpeningHours : EVA.Core.WeekOpeningsDto[];
    RegularOpeningHours : EVA.Core.WeekOpeningsDto[];
  }

  export class GetFlatOrganizationUnitTreeResponseOrganizationUnitDto {
    ID : number; // Int32
    Name : string;
    BackendID : string;
    ParentID : number; // Int32
  }

  export class OrganizationUnitEnrollmentDto {
    ID : number; // Int32
    Name : string;
    CountryID : string;
    BackendID : string;
  }

  export class GetOrganizationUnitOpeningHoursForPeriodResponseOrganizationUnitOpeningHours {
    StartTime? : any; // TimeSpan, nullable
    EndTime? : any; // TimeSpan, nullable
    SpecialReason : string;
    DayOfWeek? : System.Private.CoreLib.DayOfWeek;
  }

  export class OrganizationUnitTreeDto {
    ID : number; // Int32
    Name : string;
    Children : EVA.Core.Services.OrganizationUnitTreeDto[];
  }

  export class ParseBarcode extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ParseBarcodeResponse> {
    Barcode : string;
  }

  export class ParseBarcodeResponse extends EVA.API.ResponseMessage {
    Value : string;
    Type : string;
    Data : { [ key : string ] : any };
  }

  export enum PasswordValidationResults {
    Valid = 0,
    TooShort = 1,
    NoMatchWithOldPassword = 2,
    TooLong = 3,
  }

  export class GenerateTerminalResponsePayment {
    Description : string;
    Amount : number; // Decimal
  }

  export class ListInvoicesForOrderResponseInvoicePayment {
    PaymentTransactionID : number; // Int32
    Amount : number; // Decimal
  }

  export class GetAvailableRefundPaymentMethodsResponsePaymentMethod {
    Code : string;
    Transactions : EVA.Core.Services.GetAvailableRefundPaymentMethodsResponseRefundablePaymentTransaction[];
  }

  export class GenerateTerminalResponsePaymentPerUser {
    UserID : number; // Int32
    EmployeeNumber : string;
    Description : string;
    Amount : number; // Decimal
  }

  export class GetPaymentTransactionsResponsePaymentTransaction extends EVA.Core.PaymentTransactionDto {
    AvailableActions : EVA.Core.PaymentTransactionActions;
  }

  export class GetFinancialPeriodInformationResponsePaymentType {
    ID : number; // Int32
    Name : string;
  }

  export class GetCurrentCashJournalsResponsePaymentTypeDto {
    ID : number; // Int32
    Name : string;
    Code : string;
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod;
  }

  export class StartOpenCashJournalResponsePaymentTypeDto {
    ID : number; // Int32
    Name : string;
    Code : string;
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod;
  }

  export class GetFinancialPeriodInformationResponsePaymentTypeSummary {
    Type : EVA.Core.Services.GetFinancialPeriodInformationResponsePaymentType;
    TotalPaidAmount : number; // Decimal
  }

  export class GetPickProductDiscountOptionsForOrderResponsePickProductDiscountOptions {
    BaseAmount : number; // Decimal
    Options : number[];
    Tiers : EVA.Core.Services.PickProductTierOptions[];
    CurrentSelection? : number; // Int32, nullable
    CurrentTier : string;
  }

  export class PickProductTierOptions {
    ID : string;
    From : number; // Decimal
    Difference : number; // Decimal
    DefaultProductID? : number; // Int32, nullable
    Prompt : boolean;
    ProductIDs : number[];
    Description : string;
    IsCurrentTier : boolean;
  }

  export class GetProductAvailabilityPickupAvailability {
    // Include the expected date on which the provided products can be picked-up from a shop.
    AvailabilityDate? : boolean;
    // This can be optionally used to provide a list of shops for which you would like to check pick-up availability.
    OrganizationUnitIDs : number[];
    Type? : EVA.Core.Services.PickupTypes;
  }

  export class GetProductAvailabilityResponsePickupAvailabilityResult {
    AvailabilityDate? : string; // DateTime, nullable
    IsAvailable : boolean;
    QuantityAvailable? : number; // Int32, nullable
    // Indicates whether or not there is currently stock available for pick-up.
    HasStock : boolean;
  }

  export enum PickupTypes {
    FastestShop = 0,
    CurrentShop = 1,
  }

  export class Ping extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
  }

  export class PlaceOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.PlaceOrderResponse> {
    OrderID : number; // Int32
  }

  export class PlaceOrderResponse extends EVA.API.ResponseMessage {
    ValidationResult : EVA.Core.OrderExportValidationResult;
  }

  export class PollExternalOrderStatus extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    Name : string;
  }

  export class PotentialDiscountDto {
    ID : number; // Int32
    BackendID : string;
    Description : string;
    MarketingDescription : string;
    AmountMissing? : number; // Decimal, nullable
    SecondaryProductIDs : number[];
    ActionProperties : any;
    IsAlreadyApplied : boolean;
  }

  export class GetCurrentCashJournalsResponsePreviousCashJournal {
    ID : number; // Int32
    OpeningTime : string; // DateTime
    ClosingTime? : string; // DateTime, nullable
    OpeningAmount : number; // Decimal
    ClosingAmount? : number; // Decimal, nullable
  }

  export class UpdateSimplePricesPrice {
    CustomID : string;
    BackendID : string;
    NewPrice? : number; // Decimal, nullable
  }

  export class PriceInfo {
    ProductID : number; // Int32
    PriceListID : number; // Int32
    PriceListUsageTypeID : number; // Int32
    PriceListUsageTypeName : string;
    CurrencyID : string;
    TaxRate : number; // Decimal
    Price : number; // Decimal
    PriceInTax : number; // Decimal
    OriginalPrice? : number; // Decimal, nullable
    OriginalPriceInTax? : number; // Decimal, nullable
  }

  export class PrintTerminalReport extends EVA.API.RequestMessageWithEmptyResponse {
    StationID : number; // Int32
    DocumentID : string;
  }

  export class ProcessUnprocessedFinancialEvents extends EVA.API.RequestMessageWithEmptyResponse {
    FinancialPeriodID? : number; // Int32, nullable
    Filter : EVA.Core.ListFinancialEventsFilter;
  }

  export class ProduceDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceDocumentsResponse> {
    PrintInvoice : boolean;
    EmailInvoice : boolean;
    PrintReceipt : boolean;
    DownloadInvoice : boolean;
    StationID? : number; // Int32, nullable
    OrderID : number; // Int32
    EmailAddress : string;
    InvoiceID? : number; // Int32, nullable
  }

  export class ProduceDocumentsResponse extends EVA.API.ResponseMessage {
    InvoiceUrl : string;
  }

  export class ProduceGiftReceipt extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceGiftReceiptResponse> {
    OrderID : number; // Int32
    Lines : EVA.Core.Services.ProduceGiftReceiptLine[];
    StationID? : number; // Int32, nullable
    Name : string;
    Remark : string;
  }

  export class ProduceGiftReceiptLine {
    OrderLineID : number; // Int32
    Quantity : number; // Int32
  }

  export class ProduceGiftReceiptResponse extends EVA.API.ResponseMessage {
    PrintSuccessful : boolean;
  }

  export class ProduceInvoice extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    OrderID : number; // Int32
    EmailAddress : string;
    StationID? : number; // Int32, nullable
    EmailInvoice : boolean;
    DownloadInvoice : boolean;
    PrintInvoice : boolean;
    InvoiceID? : number; // Int32, nullable
  }

  export class ProduceOrderDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceOrderDocumentsResponse> {
    OrderID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
    Type : EVA.Core.Services.DocumentTypes;
    Channel : EVA.Core.TemplateOutputChannel;
    EmailAddress : string;
    StationID? : number; // Int32, nullable
  }

  export class ProduceOrderDocumentsResponse extends EVA.API.ResponseMessage {
    Url : string;
  }

  export class ProducePackingSlip extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    StationID? : number; // Int32, nullable
    Download : boolean;
    Print : boolean;
    ShipmentID : number; // Int32
  }

  export class ProducePickSlip extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProducePickSlipResponse> {
    StationID? : number; // Int32, nullable
    Download : boolean;
    Print : boolean;
    OrderID? : number; // Int32, nullable
    OrderIDs : number[];
  }

  export class ProducePickSlipResponse extends EVA.API.ResponseMessage {
    Url : string;
    Urls : string[];
  }

  export class ProducePurchaseOrderDocument extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    OrderID : number; // Int32
  }

  export class ProduceReceipt extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceReceiptResponse> {
    OrderID : number; // Int32
    StationID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
  }

  export class ProduceReceiptResponse extends EVA.API.ResponseMessage {
    PrintSuccessful : boolean;
  }

  export class ProduceShipmentDocuments extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceShipmentDocumentsResponse> {
    OrderID? : number; // Int32, nullable
    ShipmentID? : number; // Int32, nullable
    LinesToShip : EVA.Core.Services.ProduceShipmentDocumentsOrderLine[];
    StationID? : number; // Int32, nullable
  }

  export class ProduceShipmentDocumentsResponse extends EVA.API.ResponseMessage {
    ShipmentDocuments : EVA.Core.Services.ProduceShipmentDocumentsResponseModel[];
  }

  export class ProduceTrackingInformation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ProduceTrackingInformationResponse> {
    OrderID : number; // Int32
  }

  export class ProduceTrackingInformationResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.Services.ProduceTrackingInformationResponseTrackingInformation;
  }

  export class GetProductAvailabilityProduct {
    ID : number; // Int32
    QuantityRequested : number; // Int32
    ShippingMethodID? : number; // Int32, nullable
  }

  export class GetStockAvailabilityEstimateForProductsResponseProduct {
    ID : number; // Int32
    AvailabilityDates : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseAvailabilityDate[];
    WarehouseQuantityOnHand : number; // Int32
    WarehouseQuantityCommitted : number; // Int32
    WarehouseQuantityAvailable : number; // Int32
    QuantityToShipOnOrder : number; // Int32
    SalesOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseSalesOrderLine[];
    PurchaseOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponsePurchaseOrderLine[];
    ReservedOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseReservedOrderLine[];
    ShopReplenishments : EVA.Core.Services.GetStockAvailabilityEstimateForProductsResponseShopReplenishment[];
  }

  export class GetStockAvailabilityEstimateForProductsProduct {
    ID : number; // Int32
    RequestedDate? : string; // DateTime, nullable
  }

  export class GetProductAvailabilityResponseProductAvailabilityResult {
    ProductID : number; // Int32
    Delivery : EVA.Core.Services.GetProductAvailabilityResponseDeliveryAvailabilityResult;
    Pickup : EVA.Core.Services.GetProductAvailabilityResponsePickupAvailabilityResult;
  }

  export class ProductBundlesProductInfo {
    ID : number; // Int32
    CustomID : string;
    Content : any;
  }

  export class GenerateTerminalResponseProductGroup {
    Code : string;
    Amount : number; // Decimal
    Count : number; // Int32
  }

  export class ProductRequirementDto {
    ID : number; // Int32
    ProductID : number; // Int32
    ProductCustomID : string;
    ProductName : string;
    Name : string;
    DataType : EVA.Core.ProductRequirementDataTypes;
    IsArray : boolean;
    IsRequired : boolean;
    Data : any;
  }

  export class GetProductSupplierInfoForProductsResponseProductSupplierInfo {
    ProductID : number; // Int32
    BackendID : string;
    SupplierProductID : number; // Int32
    SupplierProductBackendID : string;
    PreferredMinimumOrderQuantity? : number; // Int32, nullable
    UnitCost : number; // Decimal
    Supplier : EVA.Core.Services.GetProductSupplierInfoForProductsResponseSupplier;
    UnitOfMeasures : EVA.Core.Services.GetProductSupplierInfoForProductsResponseUnitOfMeasure[];
    Barcodes : EVA.Core.Services.GetProductSupplierInfoForProductsResponseBarcode[];
  }

  export class ProductWithResourceDto {
    Product : any;
    StockLabelID : number; // Int32
    StockLabel : number; // Int32
    QuantityOnHand : number; // Int32
    ResourceID : number; // Int32
    Type : string;
    Value : string;
    CreationTime : string; // DateTime
    OrganizationUnit : EVA.Core.OrganizationUnitDto;
  }

  export class ProductWithStockDto extends EVA.Core.ProductDto {
    Stocks : EVA.Core.Services.StockDto[];
    TotalQuantityOnHand : number; // Int32
  }

  export class PropertyGroup {
    PropertyValue : any;
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    Quantity : number; // Int32
    ChildGroups : EVA.Core.Services.ConfigurableGroup[];
  }

  export class GetStockAvailabilityEstimateForOrderResponsePurchaseOrderLine {
    ID : number; // Int32
    OrderID : number; // Int32
    RequestedDate : string; // DateTime
    Quantity : number; // Int32
  }

  export class GetStockAvailabilityEstimateForProductsResponsePurchaseOrderLine {
    ID : number; // Int32
    OrderID : number; // Int32
    RequestedDate : string; // DateTime
    Quantity : number; // Int32
    IsOverdue : boolean;
    QuantityAvailable : number; // Int32
    IsConfirmed : boolean;
  }

  export class PushSalesOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.PushSalesOrderResponse> {
    BackendID : string;
    BackendSystemID : string;
    CreationTime? : string; // DateTime, nullable
    CurrencyID : string;
    Remark : string;
    AllowPartialFulfillment : boolean;
    SoldFromOrganizationUnitBackendID : string;
    PickupOrganizationUnitBackendID : string;
    Customer : EVA.Core.Services.PushSalesOrderPushSalesOrderCustomer;
    ShippingAddress : EVA.Core.Services.PushSalesOrderPushSalesOrderAddress;
    BillingAddress : EVA.Core.Services.PushSalesOrderPushSalesOrderAddress;
    Lines : EVA.Core.Services.PushSalesOrderPushSalesOrderLine[];
    Payments : EVA.Core.Services.PushSalesOrderPushSalesOrderPayment[];
    ShippingInformation : EVA.Core.Services.PushSalesOrderPushSalesOrderShippingInformation;
    CustomData : { [ key : string ] : any };
  }

  export class PushSalesOrderPushSalesOrderAddress {
    AddressedTo : string;
    Street : string;
    HouseNumber : string;
    Address1 : string;
    Address2 : string;
    ZipCode : string;
    City : string;
    Region : string;
    District : string;
    Subdistrict : string;
    CountryID : string;
  }

  export class PushSalesOrderPushSalesOrderCustomer {
    BackendID : string;
    FirstName : string;
    LastName : string;
    EmailAddress : string;
    PhoneNumber : string;
    LanguageID : string;
    CountryID : string;
    Gender : string;
  }

  export class PushSalesOrderPushSalesOrderLine {
    BackendID : string;
    CustomID : string;
    UnitPriceInTax : number; // Decimal
    TaxRate : number; // Decimal
    Quantity : number; // Int32
    Description : string;
    Type : string;
    Discounts : EVA.Core.Services.PushSalesOrderPushSalesOrderLineDiscount[];
    CustomData : any;
    RequestedDeliveryDate? : string; // DateTime, nullable
  }

  export class PushSalesOrderPushSalesOrderLineDiscount {
    BackendID : string;
    Description : string;
    Amount : number; // Decimal
  }

  export class PushSalesOrderPushSalesOrderPayment {
    BackendID : string;
    Method : string;
    Amount : number; // Decimal
    Data : string;
  }

  export class PushSalesOrderResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    CustomerID? : number; // Int32, nullable
    AlreadyExists : boolean;
  }

  export class PushSalesOrderPushSalesOrderShippingInformation {
    Method : string;
    UnitPriceInTax : number; // Decimal
    TaxRate : number; // Decimal
  }

  export class PushUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.PushUserResponse> {
    BackendSystemID : string;
    BackendRelationID : string;
    EmailAddress : string;
    Gender : string;
    Initials : string;
    FirstName : string;
    LastName : string;
    PhoneNumber : string;
    DateOfBirth? : string; // DateTime, nullable
    Nickname : string;
    LanguageID : string;
    CountryID : string;
    ShippingAddress : EVA.Core.AddressDataDto;
    BillingAddress : EVA.Core.AddressDataDto;
  }

  export class PushUserResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class ModifyQuantityOrderedResponseQuantityMutationResultMessage {
    Code : string;
    Message : string;
  }

  export class RaisePurchaseOrderImportedEvent extends EVA.API.RequestMessageWithEmptyResponse {
    PurchaseOrderID? : number; // Int32, nullable
    BackendID : string;
    BackendSystemID : string;
    ShipToOrganizationUnitID? : number; // Int32, nullable
  }

  export class ReceivePurchaseOrderShipment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ReceivePurchaseOrderShipmentResponse> {
    ShipmentID : number; // Int32
    QuantityReceived : { [ key : number ] : number };
  }

  export class ReceivePurchaseOrderShipmentResponse extends EVA.API.ResponseMessage {
    Success : boolean;
  }

  export class ReceiveShipment extends EVA.API.RequestMessageWithEmptyResponse {
    WorkSet : EVA.Core.ReceiveShipmentWorkSet;
    CompleteShipment? : boolean;
  }

  export class RecoverShoppingCart extends EVA.API.RequestMessageGeneric<EVA.Core.ShoppingCartResponse> {
    ReminderToken : string;
    SessionID : string;
  }

  export class RefillStockAllocation extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ValueOverride? : number; // Int32, nullable
  }

  export class GetAvailableRefundPaymentMethodsResponseRefundablePaymentTransaction {
    ID : number; // Int32
    BackendID : string;
    PaidAmount : number; // Decimal
    RefundableAmount : number; // Decimal
    ForeignPaidAmount : number; // Decimal
    ForeignRefundableAmount : number; // Decimal
    Type : string;
  }

  export class RemoveProductFromWishList extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    WishListLineID : number; // Int32
    Quantity : number; // Int32
  }

  export class RemovePushNotificationDevice extends EVA.API.RequestMessageWithEmptyResponse {
    DeviceToken : string;
    BackendSystemID : string;
  }

  export class RemoveUserFromGroup extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    GroupID : number; // Int32
  }

  export class RenderThermalPrintResult extends EVA.API.RequestMessageGeneric<EVA.Core.Services.RenderThermalPrintResultResponse> {
    // The output format. It's possible to provide both HTML and PDF. When Html is specified the response will contain the thermal print result inside the `Html` field.
    OutputFormat : EVA.Core.Services.RenderThermalPrintResultOutputFormat;
    // The blob that contains the result of the thermal print job. If an incorrect blob is specified, an error will be returned.
    BlobID : string;
  }

  export enum RenderThermalPrintResultOutputFormat {
    Html = 1,
    Pdf = 2,
    Png = 4,
  }

  export class RenderThermalPrintResultResponse extends EVA.API.ResponseMessage {
    Html : string;
    PdfUrl : string;
    PngUrl : string;
  }

  export class ReplaceEntityTranslation extends EVA.API.RequestMessageWithEmptyResponse {
    EntityID : number; // Int32
    EntityType : string;
    EntityField : string;
    LanguageID : string;
    CountryID : string;
    Value : string;
  }

  export class ReplaceStringTranslation extends EVA.API.RequestMessageWithEmptyResponse {
    Key : string;
    LanguageID : string;
    CountryID : string;
    Value : string;
  }

  export class RepostFinancialPeriod extends EVA.API.RequestMessageWithEmptyResponse {
    FinancialPeriodID : number; // Int32
  }

  export class ReprintThermalPrintResult extends EVA.API.RequestMessageWithEmptyResponse {
    // The blob that contains the result of the thermal print job. If an incorrect blob is specified, an error will be returned.
    BlobID : string;
    StationID : number; // Int32
  }

  export class RequestDeviceAuthenticationToken extends EVA.API.RequestMessageGeneric<EVA.Core.Services.RequestDeviceAuthenticationTokenResponse> {
  }

  export class RequestDeviceAuthenticationTokenResponse extends EVA.API.ResponseMessage {
    AuthenticationToken : string;
  }

  export class RequestPasswordResetToken extends EVA.API.RequestMessageWithEmptyResponse {
    EmailAddress : string;
    Context : string;
    AsEmployee? : boolean;
  }

  export class RequestPaymentUpdate extends EVA.API.RequestMessageGeneric<EVA.Core.Services.RequestPaymentUpdateResponse> {
    PaymentTransactionID : number; // Int32
  }

  export class RequestPaymentUpdateResponse extends EVA.API.ResponseMessage {
    PaymentTransaction : EVA.Core.PaymentTransactionDto;
  }

  export class RequestThirdPartyLogin extends EVA.API.RequestMessageGeneric<EVA.Core.Services.RequestThirdPartyLoginResponse> {
    Code : string;
    ReturnUrlSuccess : string;
    ReturnUrlError : string;
  }

  export class RequestThirdPartyLoginResponse extends EVA.API.ResponseMessage {
    RedirectUrl : string;
  }

  export class RequeueErrorMessage extends EVA.API.RequestMessageWithEmptyResponse {
    MessageQueueErrorID? : number; // Int32, nullable
    MessageQueueErrorIDs : number[];
  }

  export class ResendVerifyEmailAddress extends EVA.API.RequestMessageWithEmptyResponse {
    EmailAddress : string;
    AsEmployee? : boolean;
  }

  export class GetStockAvailabilityEstimateForProductsResponseReservedOrderLine {
    OrderLineID : number; // Int32
    OrderID : number; // Int32
    QuantityReserved : number; // Int32
    ShopName : string;
  }

  export class ReserveOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    // Station to print the receipt on
    StationID? : number; // Int32, nullable
  }

  export class ResetFinancialEvents extends EVA.API.RequestMessageWithEmptyResponse {
    Filter : EVA.Core.ListFinancialEventsFilter;
  }

  export class ResetUserPassword extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ResetUserPasswordResponse> {
    Token : string;
    NewPassword : string;
  }

  export class ResetUserPasswordResponse extends EVA.API.ResponseMessage {
    EmailAddress : string;
  }

  export class CreateShipmentReceiptResource {
    ResourceID? : number; // Int32, nullable
    Resources : { [ key : string ] : string };
  }

  export class GetProductUnitOfMeasureQuantitiesResponseResult {
    Value : EVA.Framework.EnumDto;
    Quantity : number; // Int32
  }

  export class RetryFinancialPeriodExport extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean;
  }

  export class RetryInvoiceExport extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean;
  }

  export class RetryOrderExport extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean;
  }

  export class RetryShipmentExport extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean;
  }

  export class ReturnableStatusForOrderLine {
    OrderLineID : number; // Int32
    ReturnableQuantity : number; // Int32
    // When present, this OrderLine can only be returned when the OrderLines specified in this collection are also being returned.
    MustBeReturnedWithOrderLineIDs : number[];
    IsReturnable : boolean;
  }

  export class RewriteUrl extends EVA.API.RequestMessageGeneric<EVA.Core.Services.RewriteUrlResponse> {
    Url : string;
  }

  export class RewriteUrlResponse extends EVA.API.ResponseMessage {
    Url : string;
  }

  export class GetAvailableServiceDetailsResponseRoute {
    Method : string;
    Path : string;
  }

  export class GetProductRunRatesResponseRunRate {
    ProductID : number; // Int32
    TotalQuantity : number; // Int32
    DailyRunRate : number; // Double
    MonthlyRunRate : number; // Double
    SoldFromOrganizationUnitID : number; // Int32
    SoldFromOrganizationUnitName : string;
  }

  export class GetStockAvailabilityEstimateForProductsResponseSalesOrderLine {
    OrderLineID : number; // Int32
    OrderID : number; // Int32
    Quantity : number; // Int32
    ExportStatus : EVA.Core.OrderExportStatuses;
    CommitmentStatus? : EVA.Core.OrderLineCommitmentStatus;
    CommitmentDate? : string; // DateTime, nullable
    FulfillmentStatus? : EVA.Core.OrderLineFulfillmentStatus;
    ExportDate? : string; // DateTime, nullable
    RequestedDate : string; // DateTime
    OrderType : EVA.Core.OrderTypes;
  }

  export class SalesTaxEstimateForOrderResponse extends EVA.API.ResponseMessage {
    IsSuccess : boolean;
    TotalTaxAmount : number; // Decimal
    TaxTable : EVA.Core.Services.SalesTaxEstimateForOrderResponseOrderLineTaxCalculationTaxAmountModel[];
    OrderLines : EVA.Core.Services.SalesTaxEstimateForOrderResponseOrderLineTaxCalculationModel[];
  }

  export class ScanStation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SelectStationResponse> {
    Barcode : string;
  }

  export class SearchBrands extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SearchBrandsResponse> {
    PageSize? : number; // Int32, nullable
    Query : string;
  }

  export class SearchBrandsResponse extends EVA.API.ResponseMessage {
    Brands : EVA.Core.BrandNameInfo[];
  }

  export class SearchOrders extends EVA.API.PagedResultRequest<EVA.Core.Services.SearchOrdersResponse> {
    Query : string;
    PaymentStatus : EVA.Core.PaymentStatus;
    IsConfirmed? : boolean;
    IsPlaced? : boolean;
    IsShipped? : boolean;
    IsCompleted? : boolean;
    HasShipLines? : boolean;
    HasDeliveryLines? : boolean;
    HasReserveLines? : boolean;
    HasOrderLines? : boolean;
    StartTime? : string; // DateTime, nullable
    EndTime? : string; // DateTime, nullable
    StartRequestedDate? : string; // DateTime, nullable
    EndRequestedDate? : string; // DateTime, nullable
    StartShipmentDate? : string; // DateTime, nullable
    EndShipmentDate? : string; // DateTime, nullable
    StartConfirmationDate? : string; // DateTime, nullable
    EndConfirmationDate? : string; // DateTime, nullable
    OrderIDs : number[];
    OrderLineID? : number; // Int32, nullable
    InvoiceNumber : string;
    CompanyName : string;
    ProductID? : number; // Int32, nullable
    IsReserved? : boolean;
    IsOrder? : boolean;
    IsInvoiced? : boolean;
    IsEmpty? : boolean;
    IsExported? : boolean;
    PaymentTypeID? : number; // Int32, nullable
    PaymentTypeName : string;
    OrganizationUnitID? : number; // Int32, nullable
    MinTotalAmountInTax? : number; // Decimal, nullable
    MaxTotalAmountInTax? : number; // Decimal, nullable
    ProductVariation : { [ key : string ] : string[] };
    Data : { [ key : string ] : EVA.Core.OrderSearchDataFilterModel };
    HasReturns? : boolean;
    HasCustomer? : boolean;
    OrderType : EVA.Core.OrderTypes;
    OrderStatus : EVA.Core.OrderStatus;
    ShipFromOrganizationUnitID? : number; // Int32, nullable
    CustomerID? : number; // Int32, nullable
    CreatedByID? : number; // Int32, nullable
    LastModifiedByID? : number; // Int32, nullable
    CustomerReference : string;
    ShipToOrganizationUnitID? : number; // Int32, nullable
    SoldFromOrganizationUnitID? : number; // Int32, nullable
    SoldToOrganizationUnitID? : number; // Int32, nullable
    OriginatingOrganizationUnitID? : number; // Int32, nullable
    PickupOrganizationUnitID? : number; // Int32, nullable
    ShippingOrganizationUnitID? : number; // Int32, nullable
    IncludeChildOrganizationUnits : boolean;
    Properties : number[];
    CustomStatus : number[];
    UserAgentApplication : string[];
    FulfillmentStatus : EVA.Core.OrderSearchFulfillmentStatusFilterModel;
    CarrierID? : number; // Int32, nullable
    ShippingMethodID? : number; // Int32, nullable
  }

  export class SearchOrdersResponse extends EVA.API.ResponseMessage {
    Result : EVA.Framework.PagedResultGeneric<EVA.Core.OrderSearchResultItem>;
    ProductVariations : { [ key : string ] : { [ key : string ] : number } };
    UserAgents : { [ key : string ] : { [ key : string ] : number } };
  }

  export class SearchProducts extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SearchProductsResponse> {
    Query : string;
    Filters : { [ key : string ] : EVA.Core.FilterModel };
    AggregationState : string;
    AggregationOptions : { [ key : string ] : EVA.Core.AggregationFilterModel };
    PageSize? : number; // Int32, nullable
    Page? : number; // Int32, nullable
    Sort : EVA.Framework.SortFieldDescriptor[];
    SearchStrategyCode : string;
    IncludedFields : string[];
    UserTypeOverride : EVA.Framework.UserTypes;
  }

  export class SearchProductsResponse extends EVA.API.ResponseMessage {
    Products : any[];
    AggregationState : string;
    Aggregations : any;
    AggregationOptions : { [ key : string ] : EVA.Core.AggregationFilterModel };
    Page : number; // Int32
    PageSize : number; // Int32
    Total : number; // Int64
    Sort : EVA.Framework.SortFieldDescriptor[];
  }

  export class SearchStockByFields extends EVA.API.PagedResultRequest<EVA.Core.Services.SearchStockResponse> {
    Query : string;
    ProductID? : number; // Int32, nullable
    BackendID : string;
    CustomID : string;
  }

  export class SearchStockResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.ProductWithStockDto> {
  }

  export class SearchUsers extends EVA.API.PagedResultRequest<EVA.Core.Services.SearchUsersResponse> {
    UserIDs : number[];
    EmailAddress : string;
    Name : string;
    SearchQuery : string;
    Types : EVA.Framework.UserTypes;
    ZipCode : string;
    PhoneNumber : string;
    EmployeeNumber : string;
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    AssignedEmployeeID? : number; // Int32, nullable
  }

  export class SearchUsersResponse extends EVA.API.PagedResultResponse<EVA.Core.Services.SearchUsersResponseUserSearchDto> {
  }

  export class GetAvailableServiceDetailsResponseSecurityInfo {
    RequiresAuthentication : boolean;
    RequiredFunctionalities : EVA.Core.Services.GetAvailableServiceDetailsResponseFunctionalityInfo[];
    RequiredUserType : EVA.Framework.UserTypes;
    AllowPublic : boolean;
  }

  export class SelectStation extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SelectStationResponse> {
    StationID : number; // Int32
  }

  export class SelectStationResponse extends EVA.API.ResponseMessage {
    Station : EVA.Core.StationDto;
    // Obsolete: Use Station.HasPrinterDevice
    HasPrinterDevice : boolean;
    // Obsolete: Use Station.HasPinDevice
    HasPinDevice : boolean;
    // Obsolete: Use Station.HasReceiptPrinterDevice
    HasReceiptPrinterDevice : boolean;
  }

  export class SendConfigurationPage extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
  }

  export class SendContactForm extends EVA.API.RequestMessageWithEmptyResponse {
    Type : string;
    Properties : { [ key : string ] : string };
  }

  export class SendPushNotificationBatch extends EVA.API.RequestMessageWithEmptyResponse {
    Title : string;
    Message : string;
    UserIDs : number[];
    Priority : EVA.Core.PushNotificationPriority;
    TimeToLive? : number; // Int32, nullable
    Sound : string;
    SilentNotification : boolean;
    Payload : any;
  }

  export class GetAvailableServicesResponseService {
    Name : string;
    Type : string;
    Namespace : string;
    AllowPublic : boolean;
  }

  export class SetCustomerReferencesOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    CustomerReference : string;
    CustomerOrderID : string;
  }

  export class SetDefaultBillingAddress extends EVA.API.RequestMessageWithEmptyResponse {
    AddressBookID : number; // Int32
  }

  export class SetDefaultShippingAddress extends EVA.API.RequestMessageWithEmptyResponse {
    AddressBookID : number; // Int32
  }

  export class SetDeliveryOrderData extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    DeliveryOrderData : EVA.Core.DeliveryOrderData;
  }

  export class SetFiscalOrderData extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    FiscalID : string;
    VatNumber : string;
  }

  export class SetGiftWrappingOptionsOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    WrapOrder : boolean;
    WrapIndividually : boolean;
    GiftWraps : EVA.Core.Services.GiftWrap[];
    Message : string;
    GreetingCardProductID? : number; // Int32, nullable
  }

  export class SetOrganizationUnitNotes extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    Notes : string;
  }

  export class SetPickProductDiscountOptionsForOrderLine extends EVA.API.RequestMessageWithEmptyResponse {
    OrderLineID : number; // Int32
    Selection? : number; // Int32, nullable
  }

  export class SetPickupOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    OrganizationUnitID : number; // Int32
  }

  export class SetRemarkOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    Remark : string;
  }

  export class SetRequestedDate extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrderLines : EVA.Core.Services.SetRequestedDateOrderLineDto[];
    RequestedDate? : string; // DateTime, nullable
  }

  export class SetShipmentSettings extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
    DefaultReceiveMethod : EVA.Core.ShipmentReceiveMethods;
  }

  export class SetShippingMethod extends EVA.API.RequestMessageGeneric<EVA.Core.SimpleShoppingCartResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    OrderLineIDs : number[];
    ShippingMethodID : number; // Int32
    RequestedDeliveryDate? : string; // DateTime, nullable
  }

  export class SetTransportOrderLineData extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderLineID : number; // Int32
    OrderLineIDs : number[];
    TransportOrderLineData : EVA.Core.TransportOrderLineData;
  }

  export class SetUserConsignment extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    UserID : number; // Int32
    UseConsignment : boolean;
  }

  export class SetWarehouseOrderData extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    WarehouseOrderData : EVA.Core.WarehouseOrderData;
  }

  export class SetWishListOrderLineData extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    IsHidden : boolean;
  }

  export class ShipExternalOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ShipExternalOrderResponse> {
    // ID of the order that is being shipped - required when `BackendID` and `BackendSystemID` are omitted
    ID? : number; // Int32, nullable
    // Reference to the order that is being shipped - required when `ID` is omitted
    BackendID : string;
    // Reference to the system from which the order originated - required when `ID` is omitted
    BackendSystemID : string;
    Shipments : EVA.Core.Services.ShipExternalOrderShipment[];
    // Indicates if this is the last shipment. If this is set to true and there are still lines that are not shipped, the lines will be cancelled
    FinalShipment : boolean;
  }

  export class ShipExternalOrderResponse extends EVA.API.ResponseMessage {
    ShipmentIDs : number[];
  }

  export class ShipExternalOrderShipment {
    // Reference number of the shipment
    BackendID : string;
    // Identifier of the system that created the shipment
    BackendSystemID : string;
    // Optional tracking code that is stored on the shipment.
    TrackingCode : string;
    // Optional tracking link that is stored on the shipment
    TrackingLink : string;
    Lines : EVA.Core.Services.ShipExternalOrderShipmentLine[];
  }

  export class ListShipmentExportsForShipmentResponseShipmentExportDto {
    ID : number; // Int32
    Name : string;
    Status : EVA.Core.TransputJobStatuses;
    CreationTime : string; // DateTime
    LastModificationTime? : string; // DateTime, nullable
  }

  export class ModifyQuantityShippedShipmentLine {
    ShipmentLineID : number; // Int32
    QuantityShipped : number; // Int32
  }

  export class ShipExternalOrderShipmentLine {
    // Reference to the order line that has been shipped. Either this or the Barcode property has to be filled. This is used to match the orderline
    BackendID : string;
    // Barcode of the product that has been shipped. Either this or the BackendID property has to be filled. This is used to match the orderline
    Barcode : string;
    // Number of products that have been shipped
    Quantity : number; // Int32
  }

  export class GetShipmentReceiptResponseLineDtoShipmentLineDto {
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    BackendReference : string;
    DeliveryType : EVA.Core.ShipmentLineDeliveryTypes;
  }

  export class ShipOrderShipmentOrderLine {
    OrderLineID : number; // Int32
    QuantityShipped? : number; // Int32, nullable
    DeliveryNoteNumber : string;
    ShipmentBackendID : string;
    TrackingCode : string;
    TrackingLink : string;
  }

  export class ValidateOrderShipmentShipmentOrderLine {
    OrderLineID : number; // Int32
    QuantityShipped? : number; // Int32, nullable
  }

  export class ShipOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ShipOrderResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    Lines : EVA.Core.Services.ShipOrderShipmentOrderLine[];
    Force : boolean;
    FinalShipment : boolean;
  }

  export class ShipOrderLines extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ShipOrderLinesResponse> {
    ShipmentBackendID : string;
    TrackingCode : string;
    ShipmentDate : string; // DateTime
    Lines : EVA.Core.Services.ShipOrderLinesLine[];
  }

  export class ShipOrderLinesResponse extends EVA.API.ResponseMessage {
    ShipmentID? : number; // Int32, nullable
  }

  export class ShipOrderResponse extends EVA.API.ResponseMessage {
    ShipmentIDs : number[];
    ShippedOrderLineIDs : number[];
    Messages : EVA.Core.ShipmentResultMessage[];
  }

  export class ShipPurchaseOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ShipPurchaseOrderResponse> {
    OrderID : number; // Int32
    BackendID : string;
    TrackingCode : string;
    ShipmentDate : string; // DateTime
    Lines : EVA.Core.Services.ShipPurchaseOrderLine[];
  }

  export class ShipPurchaseOrderLine {
    OrderLineID : number; // Int32
    QuantityToShip : number; // Int32
  }

  export class ShipPurchaseOrderResponse extends EVA.API.ResponseMessage {
    ShipmentID : number; // Int32
  }

  export class GetShopsByProximityResponseShopInfo {
    ID : number; // Int32
    Name : string;
    Address : EVA.Core.AddressDto;
    PhoneNumber : string;
    Latitude : number; // Double
    Longitude : number; // Double
    Distance : number; // Int32
  }

  export class ListShopsInAreaResponseShopInfo {
    ID : number; // Int32
    Name : string;
    Address : EVA.Core.AddressDto;
    PhoneNumber : string;
    Latitude : number; // Double
    Longitude : number; // Double
    UpcomingOpeningHours : EVA.Core.WeekOpeningsDto[];
    RegularOpeningHours : EVA.Core.WeekOpeningsDto[];
  }

  export class GetStockAvailabilityEstimateForProductsResponseShopReplenishment {
    OrderLineID : number; // Int32
    OrderID : number; // Int32
    Quantity : number; // Int32
    RequestedDate : string; // DateTime
    IsConfirmed : boolean;
  }

  export class SimpleOrderLine {
    OrderLineID : number; // Int32
    ProductID? : number; // Int32, nullable
    Properties : any;
    Description : string;
    Quantity : number; // Int32
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
  }

  export class SimpleUserDto {
    ID : number; // Int32
    FirstName : string;
    LastName : string;
  }

  export class SplitOrderLine extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SplitOrderLineResponse> {
    OrderLineID : number; // Int32
    QuantityToSplit : number; // Int32
  }

  export class SplitOrderLineResponse extends EVA.API.ResponseMessage {
    OrderLineID : number; // Int32
  }

  export class StartCloseCashJournal extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StartCloseCashJournalResponse> {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
  }

  export class StartCloseCashJournalResponse extends EVA.API.ResponseMessage {
    CashJournalDetails : EVA.Core.CashJournalDetailsModel;
  }

  export class StartOpenCashJournal extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StartOpenCashJournalResponse> {
    DeviceID : number; // Int32
    // Will be required!
    CurrencyID : string;
    // Will be required!
    PaymentTypeID? : number; // Int32, nullable
  }

  export class StartOpenCashJournalResponse extends EVA.API.ResponseMessage {
    CurrencyID : string;
    CountryID : string;
    AvailableCoins : number[];
    AvailableBankNotes : number[];
    Type : EVA.Core.CashJournalTypes;
    PaymentType : EVA.Core.Services.StartOpenCashJournalResponsePaymentTypeDto;
    PreviousCashJournal : EVA.Core.Services.StartOpenCashJournalResponseCashJournal;
  }

  export class StockDto {
    ProductID : number; // Int32
    OrganizationUnitID : number; // Int32
    StockLabel : number; // Int32
    StockLabelID : number; // Int32
    QuantityOnHand : number; // Int32
    QuantityAvailable : number; // Int32
    Remark : string;
  }

  export class GetStockLabelsResponseStockLabelDto {
    ID : number; // Int32
    Name : string;
    Description : string;
  }

  export class GetStockByStockLabelForProductsResponseStockLabelStock {
    StockLabelID : number; // Int32
    QuantityOnHand : number; // Int32
  }

  export class CreateStockMutationsStockMutation {
    ProductBackendID : string;
    Timestamp : string; // DateTime
    Quantity : number; // Int32
    Reason : string;
    Remark : string;
    Delta : boolean;
  }

  export class StockNotificationResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class StockResourceDto {
    ID : number; // Int32
    Lines : EVA.Core.Services.StockResourceLineDto[];
  }

  export class StockResourceLineDto {
    Type : string;
    Value : string;
  }

  export class StoreAndAttachBlobToOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.StoreAndAttachBlobToOrderResponse> {
    Name : string;
    Type? : EVA.Core.OrderBlobTypes;
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    Category : string;
    OriginalName : string;
    MimeType : string;
    Data : string;
  }

  export class StoreAndAttachBlobToOrderResponse extends EVA.API.ResponseMessage {
    Guid : string;
    Url : string;
  }

  export class SubscribeToFeed extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SubscribeToFeedResponse> {
    Name : string;
    WebhookUrl : string;
  }

  export class SubscribeToFeedResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }

  export class SubscribeUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.SubscribeUserResponse> {
    UserID? : number; // Int32, nullable
    SubscriptionID : number; // Int32
  }

  export class SubscribeUserResponse extends EVA.API.ResponseMessage {
    Status : EVA.Core.SubscriptionStatus;
  }

  export class GetAvailableSubscriptionsResponseSubscriptionDto {
    ID : number; // Int32
    Name : string;
    ConfirmationRequired : boolean;
    Default : boolean;
    UserField : string;
    BackendID : string;
  }

  export class GetUserSubscriptionsResponseSubscriptionDto {
    ID : number; // Int32
    BackendID : string;
    Name : string;
    ConfirmationRequired : boolean;
    Default : boolean;
    UserField : string;
  }

  export class GetStockAvailabilityEstimateForOrderResponseSuggestedAlternativeDate {
    Date : string; // DateTime
    QuantityAvailable? : number; // Int32, nullable
    PurchaseOrderLines : EVA.Core.Services.GetStockAvailabilityEstimateForOrderResponsePurchaseOrderLine[];
  }

  export class GetProductSupplierInfoForProductsResponseSupplier {
    ID : number; // Int32
    BackendID : string;
    Name : string;
  }

  export class SupplierCreatePurchaseOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.CreatePurchaseOrderResponse> {
    ShipFromOrganizationUnitBackendID : string;
    ShipToOrganizationUnitBackendID : string;
    BackendID : string;
    BackendSystemID : string;
    ExpectedDeliveryDate? : string; // DateTime, nullable
    Lines : EVA.Core.Services.SupplierCreatePurchaseOrderSupplierCreatePurchaseOrderLine[];
  }

  export class SupplierCreatePurchaseOrderSupplierCreatePurchaseOrderLine {
    CustomID : string;
    Quantity : number; // Int32
  }

  export class SupplierShipPurchaseOrder extends EVA.API.RequestMessageWithEmptyResponse {
    ID? : number; // Int32, nullable
    BackendID : string;
    BackendSystemID : string;
    ShipToOrganizationUnitBackendID : string;
    Confirmations : EVA.Core.Services.SupplierShipPurchaseOrderConfirmation[];
  }

  export class SupplierShipPurchaseOrderConfirmation {
    BackendID : string;
    TrackingCode : string;
    TrackingLink : string;
    ExpectedDeliveryDate? : string; // DateTime, nullable
    Lines : EVA.Core.Services.SupplierShipPurchaseOrderConfirmationLine[];
  }

  export class SupplierShipPurchaseOrderConfirmationLine {
    CustomID : string;
    Quantity : number; // Int32
  }

  export class SupplierUpdatePurchaseOrder extends EVA.API.RequestMessageWithEmptyResponse {
    BackendID : string;
    BackendSystemID : string;
    ShipToOrganizationUnitBackendID : string;
    Lines : EVA.Core.Services.SupplierUpdatePurchaseOrderSupplierUpdatePurchaseOrderLine[];
  }

  export class SupplierUpdatePurchaseOrderSupplierUpdatePurchaseOrderLine {
    CustomID : string;
    Quantity : number; // Int32
  }

  export class ListSuspendedOrdersResponseSuspendedOrderDto {
    OrderID : number; // Int32
    Description : string;
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    CurrencyID : string;
    CustomerName : string;
    SuspendedByName : string;
    SuspensionTime : string; // DateTime
  }

  export class SuspendOrder extends EVA.API.RequestMessageWithEmptyResponse {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    Description : string;
    StationID? : number; // Int32, nullable
    PrintReceipt : boolean;
  }

  export class ListAvailableRecurringTasksResponseTaskPluginDto {
    Name : string;
    FullName : string;
    Description : string;
    AvailableSettings : EVA.Core.Services.TaskPluginSettings[];
    DefaultName : string;
    DefaultCron : string;
  }

  export class TaskPluginSettings {
    Key : string;
    Description : string;
    Required : boolean;
    Default : any;
  }

  export class GenerateTerminalResponseTax {
    Code : string;
    Rate : number; // Decimal
    Amount : number; // Decimal
  }

  export class TaxCodeItem {
    ID : number; // Int32
    Name : string;
    Description : string;
    LedgerClassID : string;
    BackendID : string;
  }

  export class GetStockAvailabilityTimelineResponseTimelineItem {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string;
    Type : EVA.Core.Services.AvailabilityTimelineItemTypes;
    Date : string; // DateTime
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    ProductID : number; // Int32
    DeltaQuantityOnHand : number; // Int32
    DeltaQuantityCommitted : number; // Int32
    CumulativeSumQuantityCommitted : number; // Int32
    CumulativeSumQuantityOnHand : number; // Int32
    CumulativeSumQuantityAvailable : number; // Int32
    RequestedDate? : string; // DateTime, nullable
    OrderBackendID : string;
  }

  export class ProduceTrackingInformationResponseTrackingInformation {
    Link : string;
    Code : string;
  }

  export class TransferOrder extends EVA.API.RequestMessageWithEmptyResponse {
    SessionID : string;
    OrderID? : number; // Int32, nullable
  }

  export class TransferOrderToOrganizationUnit extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class TriggerRecurringTask extends EVA.API.RequestMessageGeneric<EVA.Core.Services.TriggerRecurringTaskResponse> {
    ID : string;
  }

  export class TriggerRecurringTaskResponse extends EVA.API.ResponseMessage {
    JobId : string;
  }

  export class GetAvailableServiceDetailsResponseTypeDefinition {
    Name : string;
    Description : string;
    Namespace : string;
    Type : string;
    Optional : boolean;
    Fields : EVA.Core.Services.GetAvailableServiceDetailsResponseTypeDefinition[];
  }

  export class GetAvailablePaymentMethodsResponseTypeModel {
    ID : number; // Int32
    Name : string;
    Code : string;
    Data : any;
  }

  export class UncommitOrderLines extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrderLineIDs : number[];
  }

  export class GetProductSupplierInfoForProductsResponseUnitOfMeasure {
    ID : number; // Int32
    Name : string;
    Quantity : number; // Int32
  }

  export class UnsubscribeFromFeed extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
  }

  export class UnsubscribeUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UnsubscribeUserResponse> {
    UserID? : number; // Int32, nullable
    SubscriptionID : number; // Int32
  }

  export class UnsubscribeUserResponse extends EVA.API.ResponseMessage {
    Status : EVA.Core.SubscriptionStatus;
  }

  export class UpdateAddress extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    BillToShipping : boolean;
    ShipToAddress : EVA.Core.AddressDataDto;
    BillToAddress : EVA.Core.AddressDataDto;
  }

  export class UpdateAddressBookItem extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string;
    Address : EVA.Core.AddressDataDto;
  }

  export class UpdateCashExpenseType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string;
    LedgerClassID : string;
    BackendID : string;
    AmountType : EVA.Core.CashExpenseAmountTypes;
    OrganizationUnitSetID? : number; // Int32, nullable
    TaxCodeID? : number; // Int32, nullable
  }

  export class UpdateCompanyForUser extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    Name : string;
    RegistrationNumber : string;
    RegistrationCity : string;
    RegistrationCountryID : string;
    VatNumber : string;
    LegalFormID : number; // Int32
    EstablishedDate? : string; // DateTime, nullable
    ContactEmailAddress : string;
    ContactPhoneNumber : string;
    AccountHolderName : string;
    IBAN : string;
    BIC : string;
    DeliveryAddress : EVA.Core.AddressDto;
    InvoiceAddress : EVA.Core.AddressDto;
    ReturnsAddress : EVA.Core.AddressDto;
    VisitorsAddress : EVA.Core.AddressDto;
  }

  export class UpdateContractNumber extends EVA.API.RequestMessageWithEmptyResponse {
    OrderLineID : number; // Int32
    ContractNumber : string;
  }

  export class UpdateCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
    Name : string;
    Precision : number; // Int16
  }

  export class UpdateInterbranchOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrganizationUnitID : number; // Int32
    // The date when the shipment is expected in the other store
    ExpectedDeliveryDate? : string; // DateTime, nullable
  }

  export class UpdateInvoice extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    InvoiceDate : string; // DateTime
    PaymentTermStartDate? : string; // DateTime, nullable
    PaymentTermDueDate? : string; // DateTime, nullable
    InvoiceNumber : string;
    Description : string;
    OrganizationUnitID : number; // Int32
    SupplierOrganizationUnitID? : number; // Int32, nullable
    HoldStatusID? : number; // Int32, nullable
    Blobs : EVA.Core.InvoiceBlobDto[];
    OriginalTotalAmount? : number; // Decimal, nullable
    FiscalID : string;
    TaxReverseCharge : boolean;
  }

  export class UpdateInvoiceAdditionalAmount extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    TypeID : number; // Int32
    OriginalAmount : number; // Decimal
    Amount : number; // Decimal
    TaxRate? : number; // Decimal, nullable
    TaxCodeID : number; // Int32
  }

  export class UpdateInvoiceAdditionalAmountType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string;
    LedgerClassID : string;
  }

  export class UpdateInvoiceDispute extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ReasonID : number; // Int32
    Amount : number; // Decimal
    Description : string;
    Type? : EVA.Core.InvoiceDisputeTypes;
  }

  export class UpdateInvoiceDisputeReason extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string;
    LedgerClassID : string;
    AutoResolve : boolean;
  }

  export class UpdateInvoiceDisputeResolveAction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Amount : number; // Decimal
    Description : string;
    LedgerClassID : string;
  }

  export class UpdateInvoiceHoldStatus extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
    HoldStatusID? : number; // Int32, nullable
  }

  export class UpdateInvoiceLine2 {
    InvoiceLineID : number; // Int32
    Quantity : number; // Int32
    ExpectedQuantity? : number; // Int32, nullable
    UnitPrice : number; // Decimal
    TaxRate : number; // Decimal
  }

  export class UpdateInvoiceLines2 extends EVA.API.RequestMessageWithEmptyResponse {
    InvoiceID : number; // Int32
    Lines : EVA.Core.Services.UpdateInvoiceLine2[];
  }

  export class UpdateOrderAddresses extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UpdateOrderAddressesResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    CopyShippingAddressFromCustomer : boolean;
    CopyBillingAddressFromCustomer : boolean;
    ShipToAddress : EVA.Core.AddressDataDto;
    BillToAddress : EVA.Core.AddressDataDto;
  }

  export class UpdateOrderAddressesResponse extends EVA.API.ResponseMessage {
    CreditcardAllowed : boolean;
    ShipToAddress : EVA.Core.AddressDto;
    BillToAddress : EVA.Core.AddressDto;
  }

  export class UpdateOrderAddressResponse extends EVA.API.ResponseMessage {
    ShippingAddress : EVA.Core.AddressDto;
    BillingAddress : EVA.Core.AddressDto;
  }

  export class UpdateOrderBillingAddress extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UpdateOrderAddressResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    Address : EVA.Core.AddressDto;
    AddressBookID? : number; // Int32, nullable
  }

  export class UpdateOrderCurrency extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID? : number; // Int32, nullable
    SessionID : string;
    CurrencyID : string;
  }

  export class UpdateOrderLineStockLabel extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    StockLabelID : number; // Int32
  }

  export class UpdateOrderOptions extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    IgnoreDiscounts? : boolean;
    IgnoreShippingCosts? : boolean;
    IgnoreGiftWrappingCosts? : boolean;
    AllowPartialFulfillment? : boolean;
  }

  export class UpdateOrderShippingAddress extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UpdateOrderAddressResponse> {
    SessionID : string;
    OrderID? : number; // Int32, nullable
    Address : EVA.Core.AddressDto;
    AddressBookID? : number; // Int32, nullable
  }

  export class UpdateOrganizationOpeningHours extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UpdateOrganizationOpeningHoursResponse> {
    openingHoursDto : EVA.Core.OpeningHoursDto[];
  }

  export class UpdateOrganizationOpeningHoursResponse extends EVA.API.ResponseMessage {
    Success : boolean;
  }

  export class UpdateOrganizationUnit extends EVA.API.UpdateRequest<EVA.Core.OrganizationUnitDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
    OrganizationUnits : EVA.Core.OrganizationUnitDto[];
  }

  export class UpdateOrganizationUnit2 extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string;
    Description : string;
    StatusID : number; // Int32
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    BankAccount : string;
    RegistrationNumber : string;
    VatNumber : string;
    EmailAddress : string;
    PhoneNumber : string;
    CompanyID? : number; // Int32, nullable
    OpeningHours : EVA.Core.OpeningHoursDataDto[];
    Address : EVA.Core.AddressDataDto;
    CocNumber : string;
  }

  export class UpdateOrganizationUnitSettings extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ParentID? : number; // Int32, nullable
    BackendID : string;
    BackendRelationID : string;
    BackendCompanyID : string;
    BranchNumber : string;
    GlobalLocationNumber : string;
    RegisterCashLimit? : number; // Decimal, nullable
    SafeCashLimit? : number; // Decimal, nullable
    CashHandlerID? : number; // Int32, nullable
    TypeID : number; // Int32
    Subnet : string;
    UseForAccounting : boolean;
    AttachedToUserID? : number; // Int32, nullable
    IpAddress : string;
    CountryID : string;
    LanguageID : string;
    CurrencyID : string;
    CostPriceCurrencyID : string;
    TimeZone : string;
    AssortmentID? : number; // Int32, nullable
    RoleSetID : number; // Int32
  }

  export class UpdateOrganizationUnitSupplier extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Type : EVA.Core.OrganizationUnitSupplierTypes;
  }

  export class UpdateProductAvailabilityData extends EVA.API.UpdateRequest<EVA.Core.ProductAvailabilityDataDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }

  export class UpdateProductBundle extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string;
    Lines : EVA.Core.Services.UpdateProductBundleLine[];
  }

  export class UpdateProductBundleLine {
    // Can be left null for new lines to be added to the bundle.
    ID? : number; // Int32, nullable
    Description : string;
    DefaultProductID? : number; // Int32, nullable
    BackendID : string;
    Type : EVA.Core.ProductBundleLineTypes;
    Options : EVA.Core.Services.UpdateProductBundleLineOption[];
  }

  export class UpdateProductBundleLineOption {
    ProductID : number; // Int32
  }

  export class UpdateProductRequirement extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ProductID : number; // Int32
    Name : string;
    DataType : EVA.Core.ProductRequirementDataTypes;
    IsArray : boolean;
    IsRequired : boolean;
    Data : any;
  }

  export class UpdateProductRequirementValuesForOrderLine extends EVA.API.RequestMessageWithEmptyResponse {
    OrderLineID : number; // Int32
    Values : { [ key : number ] : any };
  }

  export class UpdateRecurringTask extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string;
    FullName : string;
    Cron : string;
    Arguments : { [ key : string ] : string };
  }

  export class UpdateReturnToSupplierOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    ReasonID? : number; // Int32, nullable
    ShipToOrganizationUnitID? : number; // Int32, nullable
  }

  export class UpdateSerialNumber extends EVA.API.RequestMessageWithEmptyResponse {
    OrderLineID : number; // Int32
    SerialNumber : string;
  }

  export class UpdateShipment extends EVA.API.RequestMessageWithEmptyResponse {
    ShipmentID : number; // Int32
    ReceiveMethod : EVA.Core.ShipmentReceiveMethods;
  }

  export class UpdateSimplePrices extends EVA.API.RequestMessageWithEmptyResponse {
    PriceListID? : number; // Int32, nullable
    PriceListBackendID : string;
    PriceListBackendSystemID : string;
    Prices : EVA.Core.Services.UpdateSimplePricesPrice[];
  }

  export class UpdateStock extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
    Stock : { [ key : string ] : number };
    Identifier : EVA.Core.Services.UpdateStockIdentifier;
  }

  export class UpdateStockAllocationRule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Value? : number; // Int32, nullable
    ValueType : EVA.Core.StockAllocationRuleValueTypes;
    RefillPeriodInDays? : number; // Int32, nullable
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }

  export enum UpdateStockIdentifier {
    ID = 0,
    BackendID = 1,
  }

  export class UpdateTaxCode extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string;
    Description : string;
    BackendID : string;
    LedgerClassID : string;
  }

  export class UpdateTaxRate extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    CountryID : string;
    TaxCodeID : number; // Int32
    Rate : number; // Decimal
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }

  export class UpdateUser extends EVA.API.RequestMessageGeneric<EVA.Core.Services.UpdateUserResponse> {
    ID : number; // Int32
    BackendRelationID : string;
    Initials : string;
    FirstName : string;
    LastName : string;
    DateOfBirth? : string; // DateTime, nullable
    PlaceOfBirth : string;
    Gender : string;
    LanguageID : string;
    CountryID : string;
    Nickname : string;
    BankAccount : string;
    PhoneNumber : string;
    TimeZone : string;
    FiscalID : string;
    SocialSecurityNumber : string;
  }

  export class UpdateUserDebtorData extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    PaymentTerms : string;
    CreditLimit? : number; // Decimal, nullable
    AssignedToUserID? : number; // Int32, nullable
    ColloPrice? : number; // Decimal, nullable
    PalletPrice? : number; // Decimal, nullable
    OversizedPrice? : number; // Decimal, nullable
    IsTaxExempt : boolean;
  }

  export class UpdateUserEmailAddress extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    NewEmailAddress : string;
  }

  export class UpdateUserGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string;
  }

  export class UpdateUserPhoneNumber extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    PhoneNumber : string;
    Type : EVA.Core.PhoneNumberTypes;
    Description : string;
  }

  export class UpdateUserResponse extends EVA.API.ResponseMessage {
  }

  export class UpdateWishList extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    OrderID : number; // Int32
    Name : string;
    Data : any;
    SortedWishListLineIDs : number[];
  }

  export class UpdateWishListFunding extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    Name : string;
    Remark : string;
  }

  export class ListOrderLedgerForOrderResponseUserDto {
    ID : number; // Int32
    FullName : string;
  }

  export class UserGroupDto {
    ID : number; // Int32
    Name : string;
  }

  export class UserPhoneNumberModel {
    ID : number; // Int32
    PhoneNumber : string;
    Description : string;
    Type : EVA.Core.PhoneNumberTypes;
    IsPrimary : boolean;
  }

  export class SearchUsersResponseUserSearchDto {
    ID : number; // Int32
    CompanyName : string;
    BackendRelationID : string;
    EmailAddress : string;
    FirstName : string;
    LastName : string;
    FullName : string;
    ShippingAddress : EVA.Core.AddressDto;
    BillingAddress : EVA.Core.AddressDto;
    Type : EVA.Framework.UserTypes;
    PhoneNumber : string;
    GravatarHash : string;
    Data : { [ key : string ] : string };
    EmployeeNumber : string;
    PrimaryOrganizationUnitID? : number; // Int32, nullable
    PrimaryOrganizationUnitName : string;
  }

  export class GetUserSubscriptionsResponseUserSubscriptionDto {
    Status : EVA.Core.SubscriptionStatus;
    Subscription : EVA.Core.Services.GetUserSubscriptionsResponseSubscriptionDto;
  }

  export class ValidateExportSchedule extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ValidateExportScheduleResponse> {
    OrderID : number; // Int32
    OrderLineIDs : number[];
  }

  export class ValidateExportScheduleResponse extends EVA.API.ResponseMessage {
    ValidationResult : EVA.Core.OrderExportValidationResult;
  }

  export class ValidateIdentificationPin extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ValidateIdentificationPinResponse> {
    Pin : string;
  }

  export class ValidateIdentificationPinResponse extends EVA.API.ResponseMessage {
    IsValid : boolean;
  }

  export class ValidateInvoiceNumber extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ValidateInvoiceNumberResponse> {
    InvoiceNumber : string;
    OrganizationUnitID : number; // Int32
    Type : EVA.Core.InvoiceTypes;
  }

  export class ValidateInvoiceNumberResponse extends EVA.API.ResponseMessage {
    IsValid : boolean;
    Invoices : EVA.Core.InvoiceDto[];
  }

  export class ValidateOrderShipment extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ValidateOrderShipmentResponse> {
    OrderID : number; // Int32
    Lines : EVA.Core.Services.ValidateOrderShipmentShipmentOrderLine[];
  }

  export class ValidateOrderShipmentResponse extends EVA.API.ResponseMessage {
    PaidAmount : number; // Decimal
    OpenAmountForShipment : number; // Decimal
    IsValid : boolean;
  }

  export class ValidateRequiredDataForOrder extends EVA.API.RequestMessageGeneric<EVA.Core.Services.ValidateRequiredDataForOrderResponse> {
    OrderID : number; // Int32
    RequiredFor : EVA.Core.RequiredFor;
  }

  export class ValidateRequiredDataForOrderResponse extends EVA.API.ResponseMessage {
    ValidatedData : EVA.Core.RequiredDataValidationResult;
  }

  export class VerifyCustomer extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    VerificationCode : string;
    ManualRelease : boolean;
    IdentificationCode : string;
  }

  export class VerifyEmailAddress extends EVA.API.RequestMessageGeneric<EVA.Core.Services.VerifyEmailAddressResponse> {
    Token : string;
  }

  export class VerifyEmailAddressResponse extends EVA.API.ResponseMessage {
    Authentication : EVA.Framework.AuthenticationResults;
    AuthenticationToken : string;
  }

  export class VerifyOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
  }

  export class GetWebshopsResponseWebshopDto {
    ID : number; // Int32
    Name : string;
    CountryID : string;
  }

  export class WishListDto {
    ID : string;
    Name : string;
    Data : any;
    IsCompleted : boolean;
    Customer : EVA.Core.Services.WishListUserDto;
    Lines : EVA.Core.Services.WishListLineDto[];
    Fundings : EVA.Core.Services.WishListFundingDto[];
    OrderID : number; // Int32
    AccessToken : string;
  }

  export class WishListFundingDto {
    ID : number; // Int32
    Type : EVA.Core.WishListFundingType;
    IsConfirmed : boolean;
    Name : string;
    Remark : string;
    Amount : number; // Decimal
    CurrencyID : string;
    Quantity? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
    QuantityShipped? : number; // Int32, nullable
    ParentID? : number; // Int32, nullable
  }

  export class WishListLineDto {
    ID : number; // Int32
    Quantity : number; // Int32
    CurrencyID : string;
    TotalAmount : number; // Decimal
    Product : EVA.Core.Services.WishListProductDto;
    Fundings : EVA.Core.Services.WishListFundingDto[];
    IsHidden : boolean;
    Children : EVA.Core.Services.WishListLineDto[];
    RequestedDate? : string; // DateTime, nullable
    UnitPrice : number; // Decimal
    FundedAmount : number; // Decimal
    FundedAmountAsPayment : number; // Decimal
    FundedQuantityAsPayment : number; // Int32
    FundedQuantityAsDelivery : number; // Int32
    FundedQuantityShipped : number; // Int32
    OpenAmount : number; // Decimal
    OpenQuantity : number; // Int32
  }

  export class GetWishListOrderLineDataResponseWishListOrderLineDataDto {
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    IsHidden : boolean;
  }

  export class WishListPaymentTransactionDto {
    ID : number; // Int32
    Amount : number; // Decimal
    PaymentName : string;
    CurrencyID : string;
    ExchangeRate : number; // Decimal
    ForeignAmount : number; // Decimal
    Description : string;
  }

  export class WishListProductDto {
    ID : number; // Int32
    BackendID : string;
    CustomID : string;
    Name : string;
    Properties : any;
    Type : EVA.Core.ProductTypes;
  }

  export class WishListUserDto {
    ID : number; // Int32
    EmailAddress : string;
    FullName : string;
  }

  export class WrapLine {
    OrderLineID : number; // Int32
    Quantity : number; // Int32
  }

}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Core {
  
  export class AccountSummary {
    AccountID : number; // Int32
    Name : string; 
    Amount : number; // Decimal
    ObjectAccount : string; 
    Subsidiary : string; 
  }
  
  export enum AccountType {
    GeneralLedger = 1,
    Debtor = 2,
    Creditor = 3,
  }
  
  export class Address {
    Street : string; 
    Number : string; 
    City : string; 
    PostalCode : string; 
    Country : string; 
    Region : string; 
    Type : EVA.Core.AddressType; 
  }
  
  export class AddressDataDto {
    AddressedTo : string; 
    Street : string; 
    HouseNumber : string; 
    Address1 : string; 
    Address2 : string; 
    ZipCode : string; 
    Subdistrict : string; 
    District : string; 
    City : string; 
    State : string; 
    Region : string; 
    CountryID : string; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
  }
  
  export class AddressDto extends EVA.Core.AddressDataDto {
    ID : number; // Int32
  }
  
  export class AddressSuggestion {
    ID : string; 
    Reference : string; 
    Description : string; 
  }
  
  export class AddressSuggestionDetails {
    Formatted : string; 
    Components : EVA.Core.AddressSuggestionDetailsComponent[]; 
    Geometry : EVA.Core.AddressSuggestionDetailsGeometryDetails; 
    UtcOffset : number; // Double
    HouseNumber : EVA.Core.AddressSuggestionDetailsComponent; 
    Street : EVA.Core.AddressSuggestionDetailsComponent; 
    City : EVA.Core.AddressSuggestionDetailsComponent; 
    Region : EVA.Core.AddressSuggestionDetailsComponent; 
    District : EVA.Core.AddressSuggestionDetailsComponent; 
    Subdistrict : EVA.Core.AddressSuggestionDetailsComponent; 
    Country : EVA.Core.AddressSuggestionDetailsComponent; 
    PostalCode : EVA.Core.AddressSuggestionDetailsComponent; 
    IsValidCountry : boolean; 
  }
  
  export enum AddressType {
    Street = 0,
    Postal = 1,
    Billing = 2,
    ShipTo = 3,
    ShipFrom = 4,
  }
  
  export class FilterModel {
    Values : any[]; 
    From : string; 
    To : string; 
    Negation : boolean; 
    ExactMatch : boolean; 
    IncludeMissing? : boolean; 
  }
  
  export class AggregationFilterModel extends EVA.Core.FilterModel {
    MaxAggregationTerms? : number; // Int32, nullable
    TermsAggregation : boolean; 
    StatsAggregation : boolean; 
    AggregationOptions : { [ key : string ] : EVA.Core.AggregationFilterModel }; 
  }
  
  export class EventLedgerFiltersAmountFilter {
    EqualTo? : number; // Decimal, nullable
    GreaterThan? : number; // Decimal, nullable
    LessThan? : number; // Decimal, nullable
  }
  
  export enum AppBundlesBehavior {
    Default = 0,
    Fashion = 1,
    Disabled = 2,
  }
  
  export enum AppScanditWorkingRange {
    Normal = 0,
    Long = 1,
  }
  
  export enum AppScanTargets {
    Details = 0,
    Cart = 1,
  }
  
  export enum AppSearchMethods {
    Query = 0,
    CustomID = 1,
  }
  
  export enum AppStockReservationActions {
    ForceComplete = 1,
    Order = 2,
    SetAside = 4,
    Cancel = 8,
    All = 15,
  }
  
  export enum AppViewMethods {
    ListView = 0,
    CardView = 1,
  }
  
  export class EventLedgerDocumentAttachmentDocument {
    Name : string; 
    Category : string; 
    MimeType : string; 
    BlobID : string; 
  }
  
  export enum AuditChainTypes {
    EventLedger = 0,
    InvoiceTotals = 1,
    FinancialPeriodTotals = 2,
    MonthlyFinancialReportingPeriodTotals = 3,
    YearlyFinancialReportingPeriodTotals = 4,
    InvoicePrint = 5,
    Invoice = 6,
    FinancialPeriodAudit = 7,
    InvoiceReprint = 8,
    TerminalTotals = 9,
  }
  
  export class EventLedgerDocumentAuditingDocument {
    CumulativeTotalTaxes : number; // Decimal
    SequenceNumber? : number; // Int64, nullable
    PreviousSequenceNumber? : number; // Int64, nullable
    Signature : string; 
    PreviousSignature : string; 
    Type : string; 
    Version : number; // Int32
    KeyBlobID : string; 
    ChainID : number; // Int64
  }
  
  export class EventLedgerDocumentAuthenticationResponseDocument {
    Result : EVA.Framework.AuthenticationResults; 
  }
  
  export enum AutoOpenCloseResult {
    Failure = 0,
    Success = 1,
    NothingToProcess = 2,
  }
  
  export enum BadgeTypes {
    Role = 1,
    Capability = 2,
    Achievement = 3,
  }
  
  export enum BankAccountAuthorizationResultTypes {
    NoPaymentFound = 1,
    NoPaymentDetails = 2,
    NoBankAccountInDetails = 3,
    NoMatchWithCustomerBankAccount = 4,
    Success = 5,
    NoMatchWithCustomerName = 6,
  }
  
  export enum BasicTypes {
    Cost = 1,
    Product = 2,
    Project = 3,
    ArticleGroup = 4,
    TicketLine = 5,
    Logging = 6,
    Saving = 7,
    Discount = 8,
    Quantity = 9,
    Raise = 10,
    Transaction = 11,
    Payment = 12,
    Event = 13,
    Service = 14,
    User = 15,
    Other = 16,
  }
  
  export class Billable {
    SystemID : string; 
    Name : string; 
    RegistrationNumber : string; 
    TaxRegistrationNumber : string; 
    PhoneNumber : string; 
    Address : EVA.Core.Address; 
  }
  
  export enum BookingFlags {
    None = 0,
    WithTaxInformation = 1,
    WithoutOffsets = 2,
    WithOrderNumber = 4,
    WithReference = 8,
    WithInvoiceNumber = 16,
    WithCurrencyInformation = 32,
  }
  
  export class BrandNameInfo {
    Name : string; 
    ProductCount : number; // Int32
  }
  
  export enum CancellationInitiator {
    System = 1,
    User = 2,
    External = 5,
  }
  
  export enum CardActionTypes {
    Activate = 0,
    Cancel = 1,
    PreventActivation = 2,
    Purchase = 3,
    Issue = 4,
    IssueAndActivate = 5,
  }
  
  export enum CardTransactionStatus {
    NotActivated = 0,
    Activating = 1,
    Activated = 2,
    Issued = 3,
    Cancelled = 99,
  }
  
  export class CarrierDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
  }
  
  export class CashJournalDetailsModelCashCorrection {
    ID : number; // Int32
    Type : EVA.Core.CashCorrectionTypes; 
    Amount : number; // Decimal
    Remark : string; 
    CashTransactionLedger : EVA.Core.CashJournalDetailsModelCashTransactionLedger; 
  }
  
  export class CashCorrectionDto {
    ID : number; // Int32
    Type : EVA.Core.CashCorrectionTypes; 
    Amount : number; // Decimal
    Remark : string; 
    CreationTime : string; // DateTime
    CashJournalID : number; // Int32
  }
  
  export enum CashCorrectionTypes {
    CashJournalOpening = 1,
    CashJournalClosing = 2,
  }
  
  export class CashJournalDetailsModelCashDenominations {
    Coins : { [ key : number ] : number }; 
    BankNotes : { [ key : number ] : number }; 
  }
  
  export class CashJournalDetailsModelCashDeposit {
    ID : number; // Int32
    Amount : number; // Decimal
    Number : string; 
    CashTransactionLedger : EVA.Core.CashJournalDetailsModelCashTransactionLedger; 
  }
  
  export class CashDepositDto {
    Number : string; 
    Description : string; 
    Total : number; // Decimal
    Lines : EVA.Core.CashDepositLineDto[]; 
  }
  
  export class CashDepositLineDto {
    Currency : number; // Decimal
    Quantity : number; // Int32
  }
  
  export class CashJournalDetailsModelCashDevice {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Framework.FlagsEnumDto; 
    Station : EVA.Core.CashJournalDetailsModelStation; 
  }
  
  export class CashJournalDetailsModelCashExpense {
    ID : number; // Int32
    Amount : number; // Decimal
    TaxCode : EVA.Framework.EnumDto; 
    Description : string; 
    CreationTime : string; // DateTime
  }
  
  export enum CashExpenseAmountTypes {
    Expense = 0,
    Income = 1,
  }
  
  export class CashJournalDetailsModel {
    ID : number; // Int32
    OpeningAmount : number; // Decimal
    ExpectedClosingAmount : number; // Decimal
    OpeningDeviation? : number; // Decimal, nullable
    OpeningTime : string; // DateTime
    ClosingTime? : string; // DateTime, nullable
    ClosingAmount? : number; // Decimal, nullable
    Device : EVA.Core.CashJournalDetailsModelCashDevice; 
    Type : EVA.Core.CashJournalTypes; 
    PaymentType : EVA.Core.CashJournalDetailsModelPaymentTypeDto; 
    CurrencyID : string; 
    CashTransactions : EVA.Core.CashJournalDetailsModelCashTransactionLedger[]; 
    Expenses : EVA.Core.CashJournalDetailsModelCashExpense[]; 
    Deposits : EVA.Core.CashJournalDetailsModelCashDeposit[]; 
    Corrections : EVA.Core.CashJournalDetailsModelCashCorrection[]; 
    OpeningDenominations : EVA.Core.CashJournalDetailsModelCashDenominations; 
    ClosingDenominations : EVA.Core.CashJournalDetailsModelCashDenominations; 
    OpenCashJournalsCount : number; // Int32
  }
  
  export class CashJournalDto {
    OpeningAmount : number; // Decimal
    ClosingAmount? : number; // Decimal, nullable
    CreatedByID : number; // Int32
    CreatedByFullName : string; 
    TypeID : number; // Int32
  }
  
  export enum CashJournalTypes {
    Default = 0,
    NonMonetary = 1,
  }
  
  export class CashJournalDetailsModelCashTransactionLedger {
    ID : number; // Int32
    Description : string; 
    Amount : number; // Decimal
    CreationTime : string; // DateTime
    Type : EVA.Core.CashTransactionLedgerTypes; 
    Denominations : EVA.Core.CashJournalDetailsModelCashDenominations; 
  }
  
  export enum CashTransactionLedgerTypes {
    MoveFrom = 0,
    MoveTo = 1,
    Deposit = 2,
    Correction = 3,
    Expense = 4,
    AmountGiven = 5,
    Change = 6,
  }
  
  export enum CodeMigrationStatuses {
    Running = 0,
    Completed = 1,
    Failed = -1,
  }
  
  export enum ColorOptions {
    None = 0,
    Monochrome = 1,
    Grayscale = 2,
  }
  
  export class CommittedOrderLine {
    ID : number; // Int32
    OrderID : number; // Int32
    SoldFromOrganizationUnitID : number; // Int32
    SoldFromOrganizationUnitName : string; 
    Description : string; 
    TotalQuantityToShip : number; // Int32
    CommitmentStatus? : EVA.Core.OrderLineCommitmentStatus; 
    QuantityCommitted : number; // Int32
    RequestedDate? : string; // DateTime, nullable
    CreationTime : string; // DateTime
  }
  
  export enum CommunicationMessageResults {
    Found = 0,
    NotFoundOrDisabled = 1,
  }
  
  export enum CommunicationMessageTypes {
    Email = 0,
    SMS = 1,
  }
  
  export class CompanyDto {
    Name : string; 
    RegistrationNumber : string; 
    RegistrationCity : string; 
    RegistrationCountryID : string; 
    VatNumber : string; 
    LegalFormID : number; // Int32
    VisitorsAddress : EVA.Core.AddressDto; 
    DeliveryAddress : EVA.Core.AddressDto; 
    ReturnsAddress : EVA.Core.AddressDto; 
    InvoiceAddress : EVA.Core.AddressDto; 
    InvoiceEmailAddress : string; 
    EstablishedDate? : string; // DateTime, nullable
    ContactEmailAddress : string; 
    ContactPhoneNumber : string; 
    AccountHolderName : string; 
    IBAN : string; 
    BIC : string; 
    LogoID : string; 
  }
  
  export class AddressSuggestionDetailsComponent {
    LongName : string; 
    ShortName : string; 
    Types : string[]; 
  }
  
  export class ConfigurableProductDto {
    ProductID : number; // Int32
    Type : EVA.Core.ProductTypes; 
    Status : EVA.Core.ProductStatus; 
    LogicalLevel : string; 
    ConfigurableProperty : string; 
    Value : any; 
    Values : any[]; 
    Children : EVA.Core.ConfigurableProductDto[]; 
    Properties : any; 
  }
  
  export enum ConnectionType {
    Direct = 0,
    Proxy = 1,
  }
  
  export class CultureFilter {
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class CurrencyDto {
    ID : string; 
    Name : string; 
    Precision : number; // Int16
  }
  
  export class EventLedgerDocumentCurrentUserDocument {
    ID : number; // Int32
    FirstName : string; 
    FullName : string; 
    EmailAddress : string; 
    ApplicationID : number; // Int32
    LanguageID : string; 
    CountryID : string; 
    OrganizationUnitID : number; // Int32
    StationID? : number; // Int32, nullable
    Type : EVA.Framework.UserTypes; 
    TimeZone : string; 
    OrganizationUnit : EVA.Core.EventLedgerDocumentOrganizationUnitDocument; 
  }
  
  export class EventLedgerDocumentOrderDocumentCustomerDocument {
    ID : number; // Int32
  }
  
  export enum DebitCreditIndicator {
    Debit = 0,
    Credit = 1,
  }
  
  export class DeliveryAvailabilityIndication {
    AvailabilityDate? : string; // DateTime, nullable
    QuantityAvailable? : number; // Int32, nullable
    IsAvailable : boolean; 
    AvailabilityText : string; 
  }
  
  export class DeliveryOrderData {
    DefaultShippingMethodID? : number; // Int32, nullable
    ShippingType : string; 
    ShippingPrice : number; // Decimal
    DeliveryService : string; 
    PickUpPointID : string; 
    PickUpPointName : string; 
    AdditionalPickUpPointInformation : string; 
    ExpectedDeliveryDate? : string; // DateTime, nullable
    DeliveryTimeFrom? : string; // DateTime, nullable
    DeliveryTimeTo? : string; // DateTime, nullable
  }
  
  export class EventLedgerDocumentDeviceDocument {
    ID : number; // Int32
    Name : string; 
    IpAddress : string; 
    Type : EVA.Core.EventLedgerDocumentDeviceDocumentDeviceTypeDocument; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    StationID? : number; // Int32, nullable
  }
  
  export class DeviceDto {
    ID : number; // Int32
    BackendID : string; 
    Name : string; 
    Type : EVA.Framework.FlagsEnumDto; 
    TypeID : number; // Int32
    NetworkName : string; 
    IpAddress : string; 
    Station : EVA.Core.StationDto; 
    StationID? : number; // Int32, nullable
    AssemblyName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
  }
  
  export class EventLedgerDocumentDeviceDocumentDeviceTypeDocument {
    ID : number; // Int32
    IDs : number[]; 
    Name : string; 
    Names : string[]; 
  }
  
  export enum DiscountConditionTypes {
    OneOf = 0,
    All = 1,
  }
  
  export class DiscountCouponDto {
    ID : number; // Int32
    CouponCode : string; 
    DiscountID : number; // Int32
    IsActive : boolean; 
    UsageCount : number; // Int32
  }
  
  export class EventLedgerDocumentDiscountDocument {
    Trigger : EVA.Core.DiscountTriggers; 
    ActionType : string; 
    ActionData : any; 
  }
  
  export enum DiscountInvalidReasons {
    None = 0,
    NotExist = 1,
    NotValidYet = 2,
    Expired = 3,
    HasAlreadyBeenUsed = 4,
    CouponCodeAlreadyAdded = 5,
    ManualValueIsInvalid = 6,
    InvalidOrderType = 7,
    Invalid = 8,
  }
  
  export enum DiscountObjectTypes {
    Discount = 0,
    Condition = 1,
    Action = 2,
    Coupon = 3,
  }
  
  export enum DiscountOrderTypes {
    None = 0,
    Sales = 1,
    Purchase = 2,
    WishList = 4,
    All = 7,
  }
  
  export enum DiscountTriggers {
    Automatic = 0,
    Manual = 1,
    Coupon = 2,
    Bundles = 4,
    SystemManaged = -1,
  }
  
  export class DisputeAmounts {
    Total : number; // Decimal
    Original : number; // Decimal
    Expected : number; // Decimal
  }
  
  export enum DocumentType {
    BankAccountCard = 0,
    ID = 1,
  }
  
  export enum DocumentTypes {
    Ticket = 0,
    Invoice = 1,
    CreditNote = 2,
    Totals = 3,
  }
  
  export enum Drawer {
    DrawerA = 0,
    DrawerB = 1,
  }
  
  export class EventLedgerDocument {
    ID : string; 
    Type : string; 
    BackendType : string; 
    CreationTime : string; // DateTime
    IpAddress : string; 
    PartitionKey : string; 
    Auditing : EVA.Core.EventLedgerDocumentAuditingDocument; 
    CurrentUser : EVA.Core.EventLedgerDocumentCurrentUserDocument; 
    Order : EVA.Core.EventLedgerDocumentOrderDocument; 
    UserTask : EVA.Core.EventLedgerDocumentUserTaskDocument; 
    ExecutionContext : EVA.Core.EventLedgerDocumentExecutionContextDocument; 
    AuthenticationResponse : EVA.Core.EventLedgerDocumentAuthenticationResponseDocument; 
    PaymentTransaction : EVA.Core.EventLedgerDocumentPaymentTransactionDocument; 
    FinancialPeriod : EVA.Core.EventLedgerDocumentFinancialPeriodDocument; 
    Device : EVA.Core.EventLedgerDocumentDeviceDocument; 
    OrderLines : EVA.Core.EventLedgerDocumentOrderLineDocument[]; 
    Description : string; 
    Discount : EVA.Core.EventLedgerDocumentDiscountDocument; 
    Invoice : EVA.Core.EventLedgerDocumentInvoiceDocument; 
    Amount? : number; // Decimal, nullable
    Attachments : EVA.Core.EventLedgerDocumentAttachmentDocument[]; 
    MessageTemplate : EVA.Core.EventLedgerDocumentMessageTemplateDocument; 
    FinancialReportingPeriod : EVA.Core.EventLedgerDocumentFinancialReportingPeriodDocument; 
    Data : any; 
    BlobID : string; 
    OrganizationUnit : EVA.Core.EventLedgerDocumentOrganizationUnitDocument; 
    FinancialPeriodAudit : EVA.Core.EventLedgerDocumentFinancialPeriodAuditDocument; 
    Role : EVA.Core.EventLedgerDocumentRoleDocument; 
    User : EVA.Core.EventLedgerDocumentUserDocument; 
    TerminalReport : EVA.Core.EventLedgerDocumentTerminalReportDocument; 
  }
  
  export class EventLedgerFilters {
    Types : string[]; 
    OrderID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    DeviceID? : number; // Int32, nullable
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    UserIDs : number[]; 
    FinancialPeriodIDs : number[]; 
    FirstName : string; 
    FullName : string; 
    EmailAddress : string; 
    OrderIDs : number[]; 
    OnlyAuditedDocuments : boolean; 
    Amount : EVA.Core.EventLedgerFiltersAmountFilter; 
  }
  
  export enum EventLogStatus {
    New = 0,
    InProgress = 1,
    Solved = 2,
    Incidental = 3,
    WontFix = 4,
  }
  
  export enum ExcludedFieldOptions {
    UseDefaultExcludes = 0,
    AdditionalExcludes = 1,
    ReplaceDefaultExcludes = 2,
    NoExcludes = 3,
  }
  
  export class EventLedgerDocumentExecutionContextDocument {
    Name : string; 
    UserAgent : string; 
    ID : string; 
    Version : string; 
  }
  
  export class ExpenseDto {
    ID : number; // Int32
    TypeID : number; // Int32
    TypeDescription : string; 
    TaxRate : number; // Decimal
    Amount : number; // Decimal
    Description : string; 
    CreationTime : string; // DateTime
  }
  
  export class ListCashExpensesItemExpenseType extends EVA.Framework.EnumDto {
    AmountType : EVA.Core.CashExpenseAmountTypes; 
  }
  
  export enum ExternalModificationStatuses {
    None = 0,
    CancellationRequested = 1,
    QuantityChangeRequested = 2,
    CancellationRequestDenied = 4,
    CancellationRequestApproved = 8,
    QuantityChangeRequestDenied = 16,
    QuantityChangeRequestApproved = 32,
  }
  
  export enum ExternalSystemExportTypes {
    Internal = 0,
    Order = 1,
    AdvanceShipmentNotification = 2,
    Administrative = 3,
    ReturnOrder = 4,
    MadeToOrder = 5,
  }
  
  export enum FactorType {
    Amount = 0,
    Percentage = 1,
  }
  
  export class OrganizationUnitSetDefinitionFilterDefinition {
    Values : string[]; 
    Negate : boolean; 
  }
  
  export enum FinancialEventProcessStatuses {
    Success = 0,
    SuccessWithWarnings = 1,
    Failure = 2,
  }
  
  export enum FinancialEventStatuses {
    Unprocessed = 0,
    Processed = 1,
    Ignored = 2,
    NoProcessingRequired = 3,
    NoMatchingRecipe = 4,
  }
  
  export enum FinancialEventSubTypes {
    SalesTaxDetail = 111,
    PurchaseTaxDetail = 211,
    CashExpense = 501,
    CashDifferenceCorrection = 502,
    CashDeposit = 503,
    CashMovementSource = 504,
    CashMovementDestination = 505,
  }
  
  export enum FinancialEventTypes {
    Sales = 10,
    SalesTax = 11,
    SalesDiscounts = 12,
    Purchase = 20,
    PurchaseTax = 21,
    PurchasePriceVariance = 22,
    PurchaseInvoiceDispute = 23,
    PurchaseInvoiceDisputeResolved = 24,
    PurchaseDiscounts = 25,
    CostOfGoods = 30,
    Payment = 40,
    PaymentEndRounding = 41,
    PaymentSettlement = 42,
    CashAdjustment = 50,
    StockMutation = 60,
    StockMutationAutomaticCorrection = 61,
    StockSold = 62,
    StockReceived = 63,
  }
  
  export class EventLedgerDocumentFinancialPeriodAuditDocument {
    ID : number; // Int32
  }
  
  export class FinancialPeriodAuditDto {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    StatusID : number; // Int32
    BlobID : string; 
    FiscalYear? : number; // Int32, nullable
    CreatedByID : number; // Int32
    CreatedByFirstName : string; 
    CreatedByLastName : string; 
    CreationTime : string; // DateTime
    Status : EVA.Core.FinancialPeriodAuditStatus; 
  }
  
  export enum FinancialPeriodAuditStatus {
    New = 0,
    Processing = 10,
    ProcessingError = 11,
    Processed = 12,
    Exporting = 20,
    ExportingError = 21,
    Exported = 22,
    NothingToBeExported = 999,
  }
  
  export class FinancialPeriodClosingImpediment {
    Type : string; 
    Description : string; 
    Data : any; 
  }
  
  export class FinancialPeriodDetailsDto {
    PreviousPeriodID? : number; // Int32, nullable
    OpeningTime? : string; // DateTime, nullable
    ClosingTime? : string; // DateTime, nullable
    Status : EVA.Core.FinancialPeriodStatus; 
    CurrencyID : string; 
    CashDeposits : EVA.Core.CashDepositDto[]; 
    CashJournals : EVA.Core.CashJournalDto[]; 
    Expenses : EVA.Core.ExpenseDto[]; 
    CashCorrections : EVA.Core.CashCorrectionDto[]; 
    PaymentTotalPerTypes : EVA.Core.PaymentTotalPerPaymentTypeDto[]; 
    Stations : EVA.Core.StationClosing[]; 
    AmountOfRoundingDifference : number; // Decimal
    AmountOfOpeningDifference : number; // Decimal
    AmountOfCashDifference : number; // Decimal
    CashDepositTotal : number; // Decimal
    TotalAmountOfExpenses : number; // Decimal
    TotalAmountOfCorrections : number; // Decimal
  }
  
  export class EventLedgerDocumentFinancialPeriodDocument {
    ID : number; // Int32
  }
  
  export class FinancialPeriodDto {
    ID : number; // Int32
    OpeningTime? : string; // DateTime, nullable
    ClosingTime? : string; // DateTime, nullable
    Status : EVA.Core.FinancialPeriodStatus; 
    OrganizationUnitID : number; // Int32
    UserID? : number; // Int32, nullable
    CurrencyID : string; 
    CostPriceCurrencyID : string; 
  }
  
  export enum FinancialPeriodExportTrigger {
    PeriodOpened = 0,
    PeriodClosed = 1,
    CashJournalOpened = 2,
    CashJournalClosed = 3,
    CashDeposit = 4,
    CashExpense = 5,
    CashMovement = 6,
    Difference = 7,
  }
  
  export enum FinancialPeriodStatus {
    Open = 0,
    Closing = 1,
    Closed = 2,
    Processed = 3,
    Pending = -1,
  }
  
  export class EventLedgerDocumentFinancialReportingPeriodDocument {
    ID : number; // Int32
    Type : EVA.Core.FinancialReportingPeriodTypes; 
    StartDate : string; // DateTime
    EndDate : string; // DateTime
  }
  
  export enum FinancialReportingPeriodStatuses {
    New = 0,
    Closed = 1,
    Processing = 2,
    Processed = 3,
  }
  
  export enum FinancialReportingPeriodTypes {
    Month = 0,
    FiscalYear = 1,
  }
  
  export enum FraudDataType {
    Address = 1,
    IBAN = 2,
    IdentificationDocument = 3,
  }
  
  export class GeneralLedgerDto {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    Amount : number; // Decimal
    Remark : string; 
    PaymentTransactionID? : number; // Int32, nullable
    PaymentTransaction : EVA.Core.PaymentTransactionDto; 
    CreationTime : string; // DateTime
    OrderID? : number; // Int32, nullable
    AccountName : string; 
    AccountObjectAccount : string; 
    AccountingID : number; // Int32
    StockMutationID? : number; // Int32, nullable
    StockMutation : EVA.Core.StockMutationDto; 
    CurrencyID : string; 
  }
  
  export enum GeocodeResultStatus {
    OK = 0,
    NoResults = 1,
    InvalidRequest = 2,
    UnknownError = 3,
  }
  
  export class AddressSuggestionDetailsGeometryDetails {
    Location : EVA.Core.GeometryLocation; 
  }
  
  export class GeometryLocation {
    Latitude : number; // Double
    Longitude : number; // Double
  }
  
  export enum GetAvailabilityTypes {
    None = 0,
    Pickup = 1,
    Delivery = 2,
  }
  
  export class GetShipmentDetailsOrder {
    OrderID : number; // Int32
    BackendID : string; 
    CustomerReference : string; 
  }
  
  export enum GiftCardHandlerOptions {
    None = 0,
    Issue = 1,
    Activate = 2,
    Cancel = 4,
    Get = 8,
    Purchase = 16,
    Refund = 32,
  }
  
  export enum GrandTotalsAuditTrailTypes {
    Invoice = 0,
    FinancialPeriod = 1,
    Month = 2,
    FiscalYear = 3,
    Terminal = 4,
  }
  
  export enum IdentificationTypes {
    DiplomaticPassport = 1,
    DriverLicense = 2,
    EuropeanIdentification = 3,
    ForeignPassport = 4,
    INDSticker = 5,
    NatoPassport = 6,
    Passport = 7,
    PermanentResidencyDocument = 8,
    PrivilegedDocument = 9,
    ResidencePermitTypeEuEea = 10,
    ResidencePermitTypeI = 11,
    ResidencePermitTypeII = 12,
    ResidencePermitTypeIII = 13,
    ResidencePermitTypeIV = 14,
    ResidencePermitTypeW = 15,
    VNGCard = 16,
    ResidencePermitTypeV = 17,
  }
  
  export class SearchStockMutationResultIdNameValue {
    ID : number; // Int32
    Name : string; 
  }
  
  export interface ILoginRequest {
    Username : string; 
    Password : string; 
    IdentificationCode : string; 
    OrganizationUnitID? : number; // Int32, nullable
    ApplicationID? : number; // Int32, nullable
  }
  
  export class InTransit {
    QuantityOrdered : number; // Int32
    BackendID : string; 
    TrackingCode : string; 
    ID : string; 
    ExpectedDeliveryDate? : string; // DateTime, nullable
  }
  
  export enum InvalidStockMutationReasons {
    DestinationLabelEqualsSourceLabel = 0,
    InvalidSourceLabel = 1,
    InvalidDestinationLabel = 2,
    InvalidQuantity = 3,
    InvalidLabelForAdjustment = 4,
    RemarkRequired = 5,
    ReasonRequired = 6,
    NonStockProduct = 7,
    InvalidProduct = 8,
    InvalidResourceID = 9,
    InvalidOrganizationUnitID = 10,
    TypeRequired = 11,
    SupplierProduct = 12,
  }
  
  export class InvoiceAdditionalAmountDto {
    ID : number; // Int32
    Type : number; // Int32
    OriginalAmount : number; // Decimal
    Amount : number; // Decimal
    OriginalAmountInTax : number; // Decimal
    AmountInTax : number; // Decimal
    TaxRate : number; // Decimal
    TaxCodeID : number; // Int32
    Disputes : EVA.Core.InvoiceDisputeDto[]; 
  }
  
  export class InvoiceBlobDto {
    BlobID : string; 
  }
  
  export class InvoiceBookStatusDto {
    IsBooked : boolean; 
    CanBeBooked : boolean; 
    Message : string; 
  }
  
  export enum InvoiceCalculationMethod {
    InTax = 0,
    ExTax = 1,
  }
  
  export class InvoiceDetailLineDto {
    ID : number; // Int32
    OrderLine : EVA.Core.InvoiceDetailsOrderLineDto; 
    ShipmentLine : EVA.Core.InvoiceDetailsShipmentLineDto; 
    InvoiceDate? : string; // DateTime, nullable
    UnitCost? : number; // Decimal, nullable
    UnitPrice : number; // Decimal
    TaxRate : number; // Decimal
    DiscountAmount : number; // Decimal
    Disputes : EVA.Core.InvoiceDisputeDto[]; 
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    TotalAmountInvoicedInTax : number; // Decimal
    TotalAmountInvoiced : number; // Decimal
    ExpectedUnitPrice? : number; // Decimal, nullable
    ExpectedQuantity? : number; // Int32, nullable
    ExpectedDiscountAmount? : number; // Decimal, nullable
    ExpectedTaxRate? : number; // Decimal, nullable
    ExpectedTotalAmount? : number; // Decimal, nullable
    ExpectedTotalAmountInTax? : number; // Decimal, nullable
    // The amount that has to be resolved with disputes: ExpectedTotalAmountInTax - TotalAmountInTax - Disputes
    AmountToBeDisputed? : number; // Decimal, nullable
    Quantity : number; // Int32
  }
  
  export class InvoiceDto {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    PaymentTermStartDate? : string; // DateTime, nullable
    PaymentTermDueDate? : string; // DateTime, nullable
    Type : EVA.Core.InvoiceTypes; 
    InvoiceDate? : string; // DateTime, nullable
    InvoiceNumber : string; 
    Description : string; 
    Status : EVA.Core.InvoiceStatuses; 
    SupplierOrganizationUnitID? : number; // Int32, nullable
    TotalAmount : number; // Decimal
    CurrencyID : string; 
    HoldStatusID? : number; // Int32, nullable
    // The TotalAmount on the actual Invoice as provided by the Supplier
    OriginalTotalAmount? : number; // Decimal, nullable
    // The difference between the TotalAmount and the OriginalTotalAmount
    OriginalTotalAmountDifference? : number; // Decimal, nullable
    // The ExpectedTotalAmountInTax of all the InvoiceLines + AdditionalAmounts + ExpectedDisputes
    ExpectedTotalAmount? : number; // Decimal, nullable
    // The difference between the TotalAmount and the ExpectedTotalAmount
    ExpectedTotalAmountDifference? : number; // Decimal, nullable
    TaxReverseCharge : boolean; 
  }
  
  export class InvoiceDetailsDto extends EVA.Core.InvoiceDto {
    OrganizationUnitLanguageID : string; 
    OrganizationUnitCountryID : string; 
    AdditionalAmounts : EVA.Core.InvoiceAdditionalAmountDto[]; 
    Disputes : EVA.Core.InvoiceDisputeDto[]; 
    Lines : EVA.Core.InvoiceDetailLineDto[]; 
    Blobs : EVA.Core.InvoiceBlobDto[]; 
    PaidAmount? : number; // Decimal, nullable
    OpenAmount? : number; // Decimal, nullable
    BookStatus : EVA.Core.InvoiceBookStatusDto; 
    Shipments : EVA.Core.InvoiceShipment[]; 
    // The ExpectedQuantity of all the InvoiceLines summed
    ExpectedTotalQuantity? : number; // Int32, nullable
    // The Quantity of all the InvoiceLines summed
    TotalQuantity : number; // Int32
    // The difference between TotalQuantity and ExpectedTotalQuantity
    TotalQuantityDifference? : number; // Int32, nullable
    // The TotalAmount of the invoice minus the OriginalDisputes
    SubTotalAmount : number; // Decimal
    // The ExpectedTotalAmount of the invoice minus the Disputes
    ExpectedSubTotalAmount? : number; // Decimal, nullable
    // The Amount of the Disputes summed by Type
    DisputeAmounts : EVA.Core.DisputeAmounts; 
    // The TotalAmountInvoicedInTax of all the InvoiceLines summed
    TotalLineAmountInvoicedInTax : number; // Decimal
  }
  
  export class InvoiceDetailsOrderLineDto {
    Description : string; 
    UnitCost : number; // Decimal
    UnitPrice : number; // Decimal
    ID : number; // Int32
    OrderID : number; // Int32
    ProductID? : number; // Int32, nullable
    ProductCustomID : string; 
    SupplierProductBackendID : string; 
  }
  
  export class InvoiceDetailsShipmentDto {
    ID : number; // Int32
    BackendID : string; 
  }
  
  export class InvoiceDetailsShipmentLineDto {
    ID : number; // Int32
    QuantityDelivered : number; // Int32
    TotalAmountDelivered : number; // Decimal
    Shipment : EVA.Core.InvoiceDetailsShipmentDto; 
  }
  
  export class InvoiceDisputeDto {
    ID : number; // Int32
    ReasonID : number; // Int32
    ReasonName : string; 
    Amount : number; // Decimal
    Description : string; 
    Type? : EVA.Core.InvoiceDisputeTypes; 
    IsResolved : boolean; 
    ResolvedAmount : number; // Decimal
    ResolveActions : EVA.Core.InvoiceDisputeResolveActionDto[]; 
  }
  
  export class InvoiceDisputeResolveActionDto {
    ID : number; // Int32
    Amount : number; // Decimal
    Description : string; 
    LedgerClassID : string; 
  }
  
  export enum InvoiceDisputeTypes {
    Original = 0,
    Expected = 1,
  }
  
  export class EventLedgerDocumentInvoiceDocument {
    ID : number; // Int32
    InvoiceNumber : string; 
    FiscalID : string; 
    TotalAmount : number; // Decimal
  }
  
  export enum InvoiceDocumentLedgerFormats {
    Receipt = 0,
    Invoice = 1,
  }
  
  export enum InvoiceDocumentLedgerTypes {
    Physical = 0,
    Digital = 1,
  }
  
  export enum InvoiceExportStatus {
    NotExported = 0,
    Exported = 10,
  }
  
  export enum InvoiceLineTypes {
    Default = 0,
    Discount = 1,
    Return = 2,
  }
  
  export class InvoiceShipment {
    ShipmentID : number; // Int32
    ShipmentBackendID : string; 
    LastDeliveryDate? : string; // DateTime, nullable
    CompletionTime? : string; // DateTime, nullable
    TotalAmount : number; // Decimal
    ExpectedTotalAmount? : number; // Decimal, nullable
    TotalQuantity : number; // Decimal
    ExpectedTotalQuantity? : number; // Decimal, nullable
  }
  
  export enum InvoiceStatuses {
    Open = 0,
    Closed = 1,
  }
  
  export enum InvoiceTrigger {
    None = 0,
    AfterFirstShipment = 1,
    AfterLastShipment = 2,
    EveryShipment = 3,
    AfterFullyPaid = 4,
  }
  
  export enum InvoiceTypes {
    Sales = 0,
    Purchase = 1,
  }
  
  export interface IUserTaskResult {
    Name : string; 
    Description : string; 
    Type : string; 
    Value : string; 
    Data : string; 
  }
  
  export enum LegacyCashJournalTypes {
    Register = 0,
    Safe = 1,
  }
  
  export enum LegalForms {
    None = 0,
    BV = 1,
    NV = 2,
    VoF = 3,
    Eenmanszaak = 4,
    Stichting = 5,
    VrijBeroep = 6,
    Vereniging = 7,
    CV = 8,
    Maatschap = 9,
    Anders = 10,
  }
  
  export enum LineActionTypeChangeInitiator {
    System = 1,
    User = 2,
  }
  
  export enum LineActionTypes {
    None = 0,
    ReserveLine = 1,
    OrderLine = 2,
    ShipLine = 3,
    Delivery = 4,
  }
  
  export enum LineSize {
    Regular = 0,
    Double = 1,
    Half = 2,
  }
  
  export class ListAccountsFilter {
    Name : string; 
    ObjectAccount : string; 
  }
  
  export class ListAccountsItem {
    ID : number; // Int32
    Name : string; 
    ObjectAccount : string; 
    Subsidiary : string; 
    VisibleByApplicationID : number; // Int32
    BookingsFlagsID : number; // Int32
    BookingFlags : EVA.Core.BookingFlags; 
  }
  
  export class ListAddressBookFilter {
    ID? : number; // Int32, nullable
    DefaultShippingAddress? : boolean; 
    DefaultBillingAddress? : boolean; 
    AddressID? : number; // Int32, nullable
    UserID? : number; // Int32, nullable
    Description : string; 
  }
  
  export class ListAssortmentProductsFilter {
    ProductID? : number; // Int32, nullable
    TypeID? : number; // Int32, nullable
    AssortmentID? : number; // Int32, nullable
    IncludeDeleted? : boolean; 
  }
  
  export class ListAuditsFilter {
    OrganizationUnitID? : number; // Int32, nullable
    FiscalYear? : number; // Int32, nullable
  }
  
  export class ListCarriersFilter {
    Name : string; 
  }
  
  export class ListCashDepositsFilter {
    DeviceID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
  }
  
  export class ListCashDepositsItem {
    ID : number; // Int32
    DeviceID : number; // Int32
    Type : EVA.Core.CashJournalTypes; 
    CurrencyID : string; 
    PaymentTypeID : number; // Int32
    PaymentTypeName : string; 
    Amount : number; // Decimal
    Number : string; 
    Coins : { [ key : number ] : number }; 
    BankNotes : { [ key : number ] : number }; 
    CreationTime : string; // DateTime
  }
  
  export class ListCashExpensesFilter {
    DeviceID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
  }
  
  export class ListCashExpensesItem {
    ID : number; // Int32
    Amount : number; // Decimal
    TaxCode : EVA.Framework.EnumDto; 
    Type : EVA.Core.ListCashExpensesItemExpenseType; 
    Description : string; 
    BlobID : string; 
    CreationTime : string; // DateTime
  }
  
  export class ListCashHandlersFilter {
    Name : string; 
    CurrencyID : string; 
  }
  
  export class ListCashTransactionLedgerFilter {
    Types : EVA.Core.CashTransactionLedgerTypes[]; 
    CurrencyID? : string; // DateTime, nullable
    DeviceID? : number; // Int32, nullable
    CashJournalID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
    PaymentTypeID? : number; // Int32, nullable
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
  }
  
  export class ListCashTransactionLedgerGroup {
    ID : string; 
    Items : EVA.Core.ListCashTransactionLedgerItem[]; 
  }
  
  export class ListCashTransactionLedgerItem {
    ID : number; // Int32
    Amount : number; // Decimal
    DeviceName : string; 
    DeviceTypeID : number; // Int32
    StationName : string; 
    Description : string; 
    Type : EVA.Core.CashTransactionLedgerTypes; 
    CreationTime : string; // DateTime
    GroupID : string; 
    CurrencyID : string; 
    PaymentTypeID : number; // Int32
    PaymentTypeName : string; 
    Details : string; 
    Coins : { [ key : number ] : number }; 
    BankNotes : { [ key : number ] : number }; 
  }
  
  export class ListCumulativeStockFilter {
    ProductIDs : number[]; 
    OrganizationUnitType : EVA.Framework.OrganizationUnitTypes; 
    OrganizationUnitName : string; 
    HasStock? : boolean; 
  }
  
  export class ListDevicesFilter {
    BackendID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    StationID? : number; // Int32, nullable
    TypeID? : number; // Int32, nullable
    Name : string; 
    IpAddress : string; 
    NetworkName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    // Obsolete, combine the types in the TypeID property
    TypeIDs : number[]; 
  }
  
  export class ListDevicesModel {
    ID : number; // Int32
    BackendID : string; 
    Name : string; 
    Type : EVA.Framework.FlagsEnumDto; 
    TypeID : number; // Int32
    NetworkName : string; 
    IpAddress : string; 
    Station : EVA.Core.ListDevicesModelStationModel; 
    StationID? : number; // Int32, nullable
    AssemblyName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnit : EVA.Core.ListDevicesModelOrganizationUnitModel; 
    CashLimit : number; // Decimal
  }
  
  export class ListDiscountLayerFilter {
    Name : string; 
    IsExclusive? : boolean; 
  }
  
  export class ListEntityTranslation {
    EntityID : number; // Int32
    EntityType : string; 
    EntityField : string; 
    LanguageID : string; 
    CountryID : string; 
    Value : string; 
  }
  
  export class ListEntityTranslationsFilter {
    EntityID? : number; // Int32, nullable
    EntityType : string; 
    EntityField : string; 
    LanguageID : string; 
    CountryID : string; 
    Value : string; 
  }
  
  export class ListExchangeRatesFilter {
    FromCurrencyID : string; 
    ToCurrencyID : string; 
  }
  
  export class ListFinancialEventRow {
    ID : number; // Int32
    FinancialPeriodID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    Type : EVA.Core.FinancialEventTypes; 
    TypeID : number; // Int32
    CurrencyID : string; 
    Amount : number; // Decimal
    Remark : string; 
    StatusID : number; // Int32
    Status : EVA.Core.FinancialEventStatuses; 
    OrderID? : number; // Int32, nullable
    ProcessingError : string; 
  }
  
  export class ListFinancialEventsFilter {
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    Type : EVA.Core.FinancialEventTypes; 
    Status : EVA.Core.FinancialEventStatuses; 
    OrderID? : number; // Int32, nullable
    StatusID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
  }
  
  export class ListGeneralLedgersFilter {
    OrganizationUnitID? : number; // Int32, nullable
    AccountID? : number; // Int32, nullable
    IsProcessed? : boolean; 
    FinancialPeriodID? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
    CreationTime? : string; // DateTime, nullable
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    ObjectAccount : string; 
  }
  
  export class ListInvoiceFilter {
    Type : EVA.Core.InvoiceTypes; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
    Number : string; 
    OrganizationUnitID? : number; // Int32, nullable
    SupplierOrganizationUnitID? : number; // Int32, nullable
    Status : EVA.Core.InvoiceStatuses; 
    OrderIDs : number[]; 
    HasUnresolvedDisputes? : boolean; 
    IsMatched? : boolean; 
  }
  
  export class ListInvoiceLedgerFilter {
    InvoiceID? : number; // Int32, nullable
    InvoiceLineID? : number; // Int32, nullable
    InvoiceDisputeID? : number; // Int32, nullable
    Type? : number; // Int32, nullable
  }
  
  export class ListInvoicesDto {
    ID : number; // Int32
    InvoiceDate? : string; // DateTime, nullable
    InvoiceNumber : string; 
    OrganizationUnitID : string; 
    OrganizationUnitName : string; 
    SupplierOrganizationUnitID? : number; // Int32, nullable
    SupplierOrganizationUnitName : string; 
    Description : string; 
    CurrencyID : string; 
    TotalAmount? : number; // Decimal, nullable
    Status : EVA.Core.InvoiceStatuses; 
    StatusID : number; // Int32
    HoldStatusID? : number; // Int32, nullable
    HasUnresolvedDisputes : boolean; 
  }
  
  export class ListManualInputAdjustmentsFilter {
    PriceListAdjustmentID : number; // Int32
    ProductID? : number; // Int32, nullable
    IsActive? : boolean; 
  }
  
  export class ListMessageQueueErrorsFilter {
    Status : EVA.Core.MessageQueueErrorStatuses; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
    MessageTypeName : string; 
    MessageID : string; 
    ExceptionMessage : string; 
    ErrorCode : string; 
  }
  
  export class ListOrderLedgerFilter {
    TypeIDs : number[]; 
  }
  
  export class ListOrderLinesFilter {
    IDs : number[]; 
    Shippable : boolean; 
    Invoiceable : boolean; 
    OnlyShippableLines : boolean; 
    ProductTypes : EVA.Core.ProductTypes; 
    Query : string; 
  }
  
  export class ListOrdersForCustomerFilter {
    ID? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    OpenOrdersOnly : boolean; 
    ShowOrdersWithoutLines : boolean; 
    ModifiableOrdersOnly : boolean; 
    Type : EVA.Core.OrderTypes[]; 
    Status : EVA.Core.OrderStatus[]; 
  }
  
  export class ListOrganizationUnitGroupsFilter {
    Name : string; 
    BackendID : string; 
  }
  
  export class ListOrganizationUnitSetsFilter {
    Name : string; 
    ID? : number; // Int32, nullable
    Types : EVA.Core.OrganizationUnitSetTypes[]; 
    OrganizationUnitID? : number; // Int32, nullable
    IncludedOrganizationUnitTypes : EVA.Framework.OrganizationUnitTypes; 
    ExcludedOrganizationUnitTypes : EVA.Framework.OrganizationUnitTypes; 
    ScopeID? : number; // Int32, nullable
    IncludeWithoutScopeID? : boolean; 
  }
  
  export class ListOrganizationUnitSetsItem {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetTypes; 
    OrganizationUnitCount : number; // Int32
    ScopeID? : number; // Int32, nullable
    ScopeName : string; 
  }
  
  export class ListOrganizationUnitsFilter {
    IDs : number[]; 
    Name : string; 
    BackendIDs : string[]; 
    CountryIDs : string[]; 
    TypeID? : number; // Int32, nullable
    StatusID? : number; // Int32, nullable
    ParentID? : number; // Int32, nullable
  }
  
  export class ListOrganizationUnitSuppliersFilter {
    OrganizationUnitID? : number; // Int32, nullable
    SupplierOrganizationUnitID? : number; // Int32, nullable
    Type : EVA.Core.OrganizationUnitSupplierTypes; 
  }
  
  export class ListOrganizationUnitSuppliersModel {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    SupplierOrganizationUnitID : number; // Int32
    SupplierOrganizationUnitName : string; 
    Type : EVA.Core.OrganizationUnitSupplierTypes; 
  }
  
  export class ListPriceListAdjustmentsFilter {
    PriceListID? : number; // Int32, nullable
    ParentID? : number; // Int32, nullable
    Type : string; 
  }
  
  export class ListPriceListOrganizationUnitsFilter {
    PriceListID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    PriceListUsageTypeID? : number; // Int32, nullable
  }
  
  export class ListPriceListsFilter {
    Name : string; 
    CurrencyID : string; 
    IncludingVat? : boolean; 
    IsActive? : boolean; 
    IsSpecialPricesPriceList? : boolean; 
    SpecialPricesPriceListID? : number; // Int32, nullable
  }
  
  export class ListProductBarcodesFilter {
    ProductID? : number; // Int32, nullable
    Barcode : string; 
    UnitOfMeasureID? : number; // Int32, nullable
    IsSupplierProduct? : boolean; 
    Origin : EVA.Core.ProductBarcodeOrigin; 
  }
  
  export class ListProductBundlesFilter {
    BundleProductID? : number; // Int32, nullable
    BundleProductIDs : number[]; 
  }
  
  export class ListProductGiftCardsFilter {
    ProductID : number; // Int32
    Type : string; 
  }
  
  export class ListProductPriceLedgerFilter {
    ProductIDs : number[]; 
    PriceListID? : number; // Int32, nullable
    PriceListUsageTypeID? : number; // Int32, nullable
    OrganizationUnitIDs : number[]; 
    FromDate? : string; // DateTime, nullable
  }
  
  export class ListProductUnitOfMeasuresFilter {
    ProductID? : number; // Int32, nullable
    UnitOfMeasureID? : number; // Int32, nullable
    Quantity? : number; // Int32, nullable
  }
  
  export class ListPurchaseOrderShipmentsFilter {
    ShipmentID? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    OrderBackendID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    IncludeChildOrganizationUnits : boolean; 
    BackendID : string; 
    TrackingCode : string; 
    IsCompleted? : boolean; 
    StatusID? : number; // Int32, nullable
    StatusIDs : number[]; 
  }
  
  export class ListSettlementsFilter {
    PaymentTransactionID? : number; // Int32, nullable
    Type? : number; // Int32, nullable
  }
  
  export class ListShipmentLinesFilter {
    ShipmentID? : number; // Int32, nullable
    ProductIDs : number[]; 
    OrderIDs : number[]; 
    OrderLineIDs : number[]; 
  }
  
  export class ListShipmentLinesToInvoiceFilter {
    ShipmentID : number; // Int32
    ProductIDs : number[]; 
  }
  
  export class ListShipmentsToInvoiceFilter {
    ID? : number; // Int32, nullable
    ShipFromOrganizationUnitID : number; // Int32
    From? : string; // DateTime, nullable
    To? : string; // DateTime, nullable
    ProductID? : number; // Int32, nullable
    BackendID : string; 
    OrderID? : number; // Int32, nullable
    OrderBackendID : string; 
  }
  
  export class ListShippingMethodsFilter {
    CarrierID : number; // Int32
  }
  
  export class ListShippingRestrictionsFilter {
    OrganizationUnitSetID? : number; // Int32, nullable
    CountryID : string; 
    ProductPropertyTypeID : string; 
    Type : EVA.Core.ShippingRestrictionType; 
    ZipCodeFrom : string; 
    ZipCodeTo : string; 
  }
  
  export class ListStockAllocationRulesFilter {
    OrganizationUnitSupplierID? : number; // Int32, nullable
    SupplierOrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class ListStockAllocationRulesItem {
    ID : number; // Int32
    SupplierOrganizationUnitID : number; // Int32
    SupplierOrganizationUnitName : string; 
    OrganizationUnitSupplierID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    ProductSearchTemplateID? : number; // Int32, nullable
    Value : number; // Int32
    ValueType : EVA.Core.StockAllocationRuleValueTypes; 
    RefillPeriodInDays? : number; // Int32, nullable
    LastRefill? : string; // DateTime, nullable
    Type : EVA.Core.StockAllocationRuleTypes; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }
  
  export class ListStockMutationsFilter {
    ProductID? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    CreationTime? : string; // DateTime, nullable
    SourceStockLabelID? : number; // Int32, nullable
    DestinationStockLabelID? : number; // Int32, nullable
    ReasonID? : number; // Int32, nullable
    StartDateTime? : string; // DateTime, nullable
    EndDateTime? : string; // DateTime, nullable
    MutationQuantity? : number; // Int32, nullable
  }
  
  export class ListStringTranslation {
    Key : string; 
    LanguageID : string; 
    CountryID : string; 
    Value : string; 
  }
  
  export class ListStringTranslationsFilter {
    Key : string; 
    LanguageID : string; 
    CountryID : string; 
    Value : string; 
  }
  
  export class ListSupplierProductsFilter {
    SupplierOrganizationUnitID : number; // Int32
    BackendID : string; 
    PrimitiveName : string; 
  }
  
  export class ListSuspendedOrdersFilter {
    IsPaid? : boolean; 
    OrderID? : number; // Int32, nullable
    Description : string; 
  }
  
  export class ListTaxRateModelFilters {
    CountryID : string; 
    OnlyActive? : boolean; 
  }
  
  export class ListTransportationTimesFilter {
    ShippingMethodID? : number; // Int32, nullable
    FromCountryID : string; 
    ToCountryID : string; 
    TimeInDays? : number; // Int32, nullable
  }
  
  export class ListTransputJobsFilter {
    ShipmentID? : number; // Int32, nullable
    OrderID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
    Status : number[]; 
    Types : number[]; 
    Identifier : string; 
    Name : string; 
    StartTimeBefore? : string; // DateTime, nullable
    StartTimeOnOrAfter? : string; // DateTime, nullable
    EndTimeBefore? : string; // DateTime, nullable
    EndTimeOnOrAfter? : string; // DateTime, nullable
    CreationTimeBefore? : string; // DateTime, nullable
    CreationTimeOnOrAfter? : string; // DateTime, nullable
    ShipFromOrganizationUnit? : number; // Int32, nullable
    ShipToOrganizationUnit? : number; // Int32, nullable
  }
  
  export class ListUserCardsFilter {
    Barcode : string; 
    TypeID? : number; // Int32, nullable
    UserID? : number; // Int32, nullable
    User : string; 
  }
  
  export class ListUserTaskTypeOrganizationUnitSetsFilter {
    UserTaskTypeID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    Required? : boolean; 
  }
  
  export class UserDto {
    ID : number; // Int32
    BackendRelationID : string; 
    EmailAddress : string; 
    Initials : string; 
    FirstName : string; 
    LastName : string; 
    FullName : string; 
    DateOfBirth? : string; // DateTime, nullable
    PlaceOfBirth : string; 
    Gender : string; 
    ShippingAddressID? : number; // Int32, nullable
    ShippingAddress : EVA.Core.AddressDto; 
    BillingAddressID? : number; // Int32, nullable
    BillingAddress : EVA.Core.AddressDto; 
    Type : EVA.Framework.UserTypes; 
    LanguageID : string; 
    CountryID : string; 
    IsDeleted : boolean; 
    IsIncognito : boolean; 
    Nickname : string; 
    Company : EVA.Core.CompanyDto; 
    BankAccount : string; 
    IsDebtor : boolean; 
    PhoneNumber : string; 
    GravatarHash : string; 
    Data : { [ key : string ] : string }; 
    TimeZone : string; 
    FiscalID : string; 
    SocialSecurityNumber : string; 
    IdentificationPin : EVA.Core.UserIdentificationPin; 
  }
  
  export class LoggedInUserDto extends EVA.Core.UserDto {
    OrganizationUnitIDs : number[]; 
    CurrentOrganizationID? : number; // Int32, nullable
    CurrentOrganizationName : string; 
    CurrentApplicationID : number; // Int32
    CurrentCurrencyID : string; 
    AuthenticationToken : string; 
    Functionalities : string[]; 
    ScopedFunctionalities : { [ key : string ] : EVA.Framework.FunctionalityScope }; 
    CurrentOrganizationUnitType : EVA.Framework.OrganizationUnitTypes; 
    CurrentCountryID : string; 
    CurrentLanguageID : string; 
  }
  
  export enum MessageQueueErrorStatuses {
    New = 0,
    Republished = 1,
    SuccessAfterRetry = 2,
    FailureAfterRetry = 3,
    Ignored = 4,
  }
  
  export enum MessageQueueProfile {
    SendOnly = 0,
    SendAndReceive = 1,
  }
  
  export enum MessageTargetContentTypes {
    Html = 0,
    Pdf = 1,
    Plain = 2,
    Png = 3,
  }
  
  export enum MessageTemplateDestinations {
    Mail = 1,
    Sms = 2,
    Pdf = 4,
    Thermal = 8,
    Notification = 16,
  }
  
  export class EventLedgerDocumentMessageTemplateDocument {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    DestinationID : number; // Int32
  }
  
  export enum MessageTemplateTypes {
    Template = 1,
    Partial = 2,
    Layout = 3,
  }
  
  export enum MessageTypeKinds {
    Request = 0,
    Response = 1,
  }
  
  export class EventLedgerDocumentTerminalReportDocumentPaymentMetadata {
    ID : number; // Int32
    Name : string; 
    Code : string; 
  }
  
  export enum ModificiationReason {
    Addresses = 1,
    ShippingMethod = 2,
  }
  
  export enum MomentOfCommitment {
    None = 0,
    CreateOrderLine = 1,
    CreatePayment = 2,
    PlaceOrder = 3,
    ExportOrder = 4,
    Custom = 1000,
  }
  
  export enum MultipleSuppliersHandling {
    Cheapest = 0,
    MostExpensive = 1,
  }
  
  export enum OpenCashDrawerResults {
    Failure = 0,
    Opened = 1,
    AlreadyOpen = 2,
    OpenedAndClosed = 3,
  }
  
  export class OpeningHoursDataDto {
    OrganizationUnitID : number; // Int32
    DayOfWeek? : System.Private.CoreLib.DayOfWeek; 
    ClosedForReceipts : boolean; 
    StartTime? : any; // TimeSpan, nullable
    EndTime? : any; // TimeSpan, nullable
    Date? : string; // DateTime, nullable
    Description : string; 
    IsSpecial : boolean; 
    IsClosed : boolean; 
  }
  
  export class OpeningHoursDto extends EVA.Core.OpeningHoursDataDto {
    ID : number; // Int32
  }
  
  export enum OpeningStatuses {
    Open = 0,
    OpensLater = 1,
    ClosesBefore = 2,
    Closed = 3,
  }
  
  export class OpenOrderAmount {
    // Obsolete: use InTax
    Amount : number; // Decimal
    // Obsolete
    Foreign : number; // Decimal
    InTax : number; // Decimal
    // Obsolete
    ForeignInTax : number; // Decimal
    PendingInTax : number; // Decimal
  }
  
  export class OrderAmounts {
    Total : EVA.Core.OrderAmount; 
    UnroundedTotal : EVA.Core.OrderAmount; 
    Paid : EVA.Core.PaidOrderAmount; 
    Taxes : EVA.Core.TaxAmount[]; 
    Types : { [ OrderLineTypes : number ] : EVA.Core.OrderAmount }; 
  }
  
  export class OpenOrderAmounts extends EVA.Core.OrderAmounts {
    Open : EVA.Core.OpenOrderAmount; 
    OpenAmountIsZero : boolean; 
  }
  
  export enum OperationTypes {
    Sales = 0,
    Return = 1,
    Archiving = 2,
  }
  
  export enum OptionalTypes {
    NotOptional = 0,
    PropertyOptional = 1,
    PropertyAndChildrenOptional = 2,
  }
  
  export class OrderAmount {
    Amount : number; // Decimal
    // Obsolete
    Foreign : number; // Decimal
    InTax : number; // Decimal
    // Obsolete
    ForeignInTax : number; // Decimal
  }
  
  export enum OrderBlobTypes {
    None = 0,
    Invoice = 1,
    InvoiceThermal = 2,
    ReturnLabel = 3,
    ReturnForm = 4,
    ShipmentLabel = 5,
    Identification = 6,
    PackingSlip = 7,
    PickSlip = 8,
  }
  
  export enum OrderCancellationOptions {
    CanBeCancelled = 0,
    AlreadyCancelled = 1,
    ShouldBeRequested = 2,
    MustBeRequested = 3,
    CannotBeCancelled = 4,
  }
  
  export enum OrderChangeTypes {
    OrderLineCreated = 1,
    CustomerAttachedToOrder = 2,
    CustomerDetachedFromOrder = 4,
    ShippingAddressChanged = 8,
    LineActionTypeChanged = 16,
  }
  
  export enum OrderCharacteristics {
    None = 0,
    IsPickup = 1,
    CreatedByEmployee = 2,
    IsInterbranch = 4,
    IsB2B = 8,
    Duplicated = 16,
    Autocompleted = 32,
    CreatedFromWishList = 64,
    ReturnToSupplier = 128,
    CustomTaxesApplied = 256,
  }
  
  export class EventLedgerDocumentOrderDocument {
    ID : number; // Int32
    Customer : EVA.Core.EventLedgerDocumentOrderDocumentCustomerDocument; 
    HasReturns : boolean; 
    CurrencyID : string; 
    Type : EVA.Core.OrderTypes; 
    IsPaid : boolean; 
    IsCompleted : boolean; 
    IsShipped : boolean; 
    IsInvoiced : boolean; 
  }
  
  export class OrderDto {
    ID : number; // Int32
    BackendID : string; 
    Type : EVA.Core.OrderTypes; 
    CustomerID? : number; // Int32, nullable
    Customer : EVA.Core.UserDto; 
    CreatedByID : number; // Int32
    CreatedBy : EVA.Core.UserDto; 
    CreationTime : string; // DateTime
    Payments : EVA.Core.PaymentTransactionDto[]; 
    ShippingAddressID? : number; // Int32, nullable
    BillingAddressID? : number; // Int32, nullable
    ShippingAddress : EVA.Core.AddressDto; 
    BillingAddress : EVA.Core.AddressDto; 
    Lines : EVA.Core.OrderLineDto[]; 
    OfferExpirationDate? : string; // DateTime, nullable
    TotalAmountInTax : number; // Decimal
    TotalAmountInvoiced : number; // Decimal
    // Obsolete
    ForeignTotalAmountInTax : number; // Decimal
    TaxTable : EVA.Core.TaxAmount[]; 
    IsCompleted : boolean; 
    IsDelivered : boolean; 
    IsShipped : boolean; 
    IsPaid : boolean; 
    IsInvoiced : boolean; 
    IsPlaced : boolean; 
    Status : EVA.Core.OrderStatus; 
    HoldStatusID? : number; // Int32, nullable
    Remark : string; 
    CustomerOrderID : string; 
    CustomerReference : string; 
    TotalItems : number; // Int32
    NeedsExtendedCustomerInformation : boolean; 
    InvoiceDate? : string; // DateTime, nullable
    HasDelivery : boolean; 
    IdentificationID? : number; // Int32, nullable
    SessionID : string; 
    Characteristics : EVA.Core.OrderCharacteristics; 
    OriginatingOrganizationUnitID : number; // Int32
    // Obsolete: Use OriginatingOrganizationUnitID
    OrganizationUnitID : number; // Int32
    PickupOrganizationUnitID : number; // Int32
    SoldFromOrganizationUnitID : number; // Int32
    ShipFromOrganizationUnitID? : number; // Int32, nullable
    SoldToOrganizationUnitID? : number; // Int32, nullable
    ShipToOrganizationUnitID? : number; // Int32, nullable
    CurrencyID : string; 
    CustomStatusID? : number; // Int32, nullable
    PreferredPriceDisplayMode : EVA.Core.OrderPreferredPriceDisplayMode; 
    IsTaxExempt : boolean; 
    FiscalID : string; 
    VatNumber : string; 
    UserAgentApplication : string; 
    UserAgentVersion : string; 
    AllowPartialFulfillment : boolean; 
    PlacementDate? : string; // DateTime, nullable
    IgnoreDiscounts : boolean; 
    IgnoreShippingCosts : boolean; 
    IgnoreGiftWrappingCosts : boolean; 
    DisabledDiscounts : number[]; 
    IsConfirmed : boolean; 
  }
  
  export class PurchaseOrderShipmentDtoOrderDto {
    ID : number; // Int32
    BackendID : string; 
  }
  
  export enum OrderExportStatuses {
    NotExported = 0,
    ShouldBeExported = 1,
    Exporting = 2,
    Exported = 3,
    WillNotBeExported = 4,
  }
  
  export class OrderExportValidationResult {
    Result : EVA.Core.OrderExportValidationResults; 
    Messages : EVA.Core.OrderExportValidationResultMessage[]; 
  }
  
  export class OrderExportValidationResultMessage {
    Code : string; 
    Message : string; 
  }
  
  export enum OrderExportValidationResults {
    Unknown = 0,
    Valid = 1,
    Invalid = 2,
    NothingToBeExported = 3,
  }
  
  export enum OrderLineCancellationResultReasons {
    Cancelled = 0,
    CouldNoLongerCancel = 1,
    CancellationNotSupported = 2,
    OrderLineNotFoundInExternalSystem = 3,
    InProgress = 4,
  }
  
  export enum OrderLineCloneIntent {
    Split = 0,
    Derived = 1,
  }
  
  export enum OrderLineCommitmentResultTypes {
    NoCommitmentNecessary = 1,
    CommitmentStatusChanged = 2,
    InsuffientStock = 3,
  }
  
  export enum OrderLineCommitmentStatus {
    Uncommitted = 0,
    SoftCommit = 1,
    HardCommit = 2,
    ManualCommit = 5,
    ForcedCommit = 10,
  }
  
  export class EventLedgerDocumentOrderLineDocument {
    ID : number; // Int32
    Description : string; 
    ProductID? : number; // Int32, nullable
    TotalQuantityToShip : number; // Int32
    QuantityShipped : number; // Int32
    QuantityInvoiced : number; // Int32
    UnitPrice : number; // Decimal
    TaxRate : number; // Decimal
  }
  
  export class OrderLineDto {
    ID : number; // Int32
    OrderID : number; // Int32
    ParentID? : number; // Int32, nullable
    Type : EVA.Core.OrderLineTypes; 
    StockLabel : number; // Int32
    ResourceID? : number; // Int32, nullable
    Description : string; 
    AdditionalDescription : string; 
    QuantityOrdered : number; // Int32
    QuantityOpen : number; // Int32
    QuantityCommitted : number; // Int32
    CommitmentStatus? : EVA.Core.OrderLineCommitmentStatus; 
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    QuantityReserved : number; // Int32
    QuantityBackordered : number; // Int32
    QuantityReturned : number; // Int32
    QuantityCancelled : number; // Int32
    QuantityInvoiced : number; // Int32
    ProductID? : number; // Int32, nullable
    Product : EVA.Core.ProductDto; 
    UnitPrice : number; // Decimal
    TaxRate : number; // Decimal
    ShowTaxInfo : boolean; 
    SerialNumber : string; 
    UnitPriceInTax : number; // Decimal
    IsCancelled : boolean; 
    TotalQuantityToShip : number; // Int32
    TotalAmountInTax : number; // Decimal
    TotalAmount : number; // Decimal
    DisplayPriceInTax? : number; // Decimal, nullable
    DisplayPrice? : number; // Decimal, nullable
    CanModifyPrice : boolean; 
    ModificationAllowed : boolean; 
    Remark : string; 
    Reference : string; 
    LineActionType? : EVA.Core.LineActionTypes; 
    ReturnedOrderLineID? : number; // Int32, nullable
    ExportStatusID : number; // Int32
    ContractNumber : string; 
    IsCompleted : boolean; 
    IsShipped : boolean; 
    IsInvoiced : boolean; 
    ExpectedAvailabilityDate? : string; // DateTime, nullable
    RequestedDate? : string; // DateTime, nullable
    CreationTime : string; // DateTime
    CreatedByID : number; // Int32
    LastModificationTime? : string; // DateTime, nullable
    DiscountID? : number; // Int32, nullable
    DiscountCouponID? : number; // Int32, nullable
    DiscountAmount : number; // Decimal
    DiscountPercentage? : number; // Int32, nullable
    DiscountBackendID : string; 
    ShippingMethodID? : number; // Int32, nullable
    ShippingMethod : EVA.Core.ShippingMethodDto; 
    ExternalModificationStatus : EVA.Core.ExternalModificationStatuses; 
    CustomOrderLineType : string; 
    RelatedOrderLineID? : number; // Int32, nullable
    CurrencyID : string; 
    // Obsolete
    ExchangeRate : number; // Decimal
    // Obsolete
    ForeignUnitPrice : number; // Decimal
    // Obsolete
    ForeignUnitPriceInTax : number; // Decimal
    // Obsolete
    ForeignTotalAmount : number; // Decimal
    // Obsolete
    ForeignTotalAmountInTax : number; // Decimal
    ProductVariation : { [ key : string ] : string }; 
    ProductBundleLineID? : number; // Int32, nullable
    TaxExemptionCode : string; 
    TaxExemptionReason : string; 
    FulfillmentStatus? : EVA.Core.OrderLineFulfillmentStatus; 
    ReturnReason : EVA.Framework.EnumDto; 
  }
  
  export enum OrderLineFulfillmentStatus {
    Unknown = 0,
    Blocked = 5,
    CannotFulfill = 10,
    CannotFulfillOnTime = 12,
    CanFulfill = 15,
  }
  
  export enum OrderLinePlacementStatuses {
    None = 0,
    MadeToOrderRequested = 1,
    MadeToOrderCompleted = 2,
  }
  
  export class SearchStockMutationResultOrderLineResult {
    ID : number; // Int32
    OrderID : number; // Int32
  }
  
  export class OrderStatisticsOrderLineStatistics {
    UnitPrice : number; // Decimal
    UnitCost : number; // Decimal
    DiscountAmount : number; // Decimal
  }
  
  export enum OrderLineTypes {
    NormalProduct = 0,
    Discount = 1,
    ExtraCosts = 2,
    ShippingCosts = 5,
    ReturnCosts = 6,
    PriceCorrection = 7,
    Service = 8,
    GiftWrappingCosts = 9,
  }
  
  export class OrderLineWithQuantity {
    OrderLineID : number; // Int32
    Quantity? : number; // Int32, nullable
  }
  
  export enum OrderLineWithStockProcessAction {
    None = 0,
    CreateStockReservationTask = 1,
    Export = 2,
  }
  
  export enum OrderOptions {
    None = 0,
    IgnoreDiscounts = 1,
    IgnoreShippingCosts = 2,
    UseAlternateTaxCalculation = 4,
    IgnoreOrderLineValidation = 16,
    DoNotCommitStock = 64,
    DisableAutoReceiveShipment = 128,
    ApplyDiscountsBeforeSalesTax = 256,
    CalculateAmountsBasedOnExTax = 260,
    IgnoreGiftWrappingCosts = 512,
    DisableAutomaticLineCreation = 522,
    SystemGenerated = 570,
    Sentinel = 1024,
    DisableTaxCalculation = 2048,
    TaxExempt = 4096,
    AllowPartialFulfillment = 8192,
    CancelIfNotAvailable = 16384,
    Hidden = 32768,
    DisableChangeCascading = 65536,
  }
  
  export enum OrderPreferredPriceDisplayMode {
    InTax = 0,
    ExTax = 1,
  }
  
  export class OrderSearchDataFilterModel {
    StringValue : string; 
    BooleanValue? : boolean; 
    StartDateTime? : string; // DateTime, nullable
    EndDateTime? : string; // DateTime, nullable
    StartDecimal? : number; // Decimal, nullable
    EndDecimal? : number; // Decimal, nullable
  }
  
  export class OrderSearchFulfillmentStatusFilterModel {
    CanFulfill? : boolean; 
    IsBlocked? : boolean; 
  }
  
  export class OrderSearchResultItem {
    CreatedBy : EVA.Core.OrderSearchResultItemUser; 
    LastModifiedBy : EVA.Core.OrderSearchResultItemUser; 
    Customer : EVA.Core.OrderSearchResultItemCustomer; 
    OrganizationUnits : EVA.Core.OrderSearchResultItemOrganizationUnit[]; 
    SoldFromOrganizationUnit : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    SoldToOrganizationUnit : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    ShipFromOrganizationUnit : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    ShipToOrganizationUnit : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    OriginatingOrganizationUnit : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    PickupOrganizationUnitID : EVA.Core.OrderSearchResultItemOrganizationUnit; 
    IsCompleted : boolean; 
    IsPaid : boolean; 
    IsPlaced : boolean; 
    IsConfirmed : boolean; 
    IsShipped : boolean; 
    IsReserved : boolean; 
    IsInvoiced : boolean; 
    HasShipLines? : boolean; 
    HasDeliveryLines? : boolean; 
    HasReserveLines? : boolean; 
    HasOrderLines? : boolean; 
    ID : number; // Int32
    BackendID : string; 
    TotalAmountInTax : number; // Decimal
    // Obsolete
    ForeignTotalAmountInTax : number; // Decimal
    TotalAmount : number; // Decimal
    // Obsolete
    ForeignTotalAmount : number; // Decimal
    PaidAmount : number; // Decimal
    ForeignPaidAmount : number; // Decimal
    OpenAmountInTax : number; // Decimal
    // Obsolete
    ForeignOpenAmountInTax : number; // Decimal
    OpenAmount : number; // Decimal
    // Obsolete
    ForeignOpenAmount : number; // Decimal
    LastModificationTime : string; // DateTime
    CreationTime : string; // DateTime
    CurrencyID : string; 
    Type : EVA.Core.OrderTypes; 
    Status : EVA.Core.OrderStatus; 
    CustomerReference : string; 
    HasReturns : boolean; 
    TotalQuantityToShip : number; // Int32
    TotalQuantityShipped : number; // Int32
    Properties : EVA.Core.OrderCharacteristics; 
    PropertiesIDs : number[]; 
    CustomStatus : number; // Int32
    CustomStatusIDs : number[]; 
    RequestedDate? : string; // DateTime, nullable
    ConfirmationDate? : string; // DateTime, nullable
    Data : EVA.Core.OrderSearchResultItemData[]; 
    IsEmpty : boolean; 
    UserAgentApplication : string; 
    UserAgentVersion : string; 
    ProductImage : string; 
  }
  
  export class OrderSearchResultItemUser {
    ID : number; // Int32
    FullName : string; 
  }
  
  export class OrderSearchResultItemCustomer extends EVA.Core.OrderSearchResultItemUser {
    EmailAddress : string; 
  }
  
  export class OrderSearchResultItemData {
    Name : string; 
    StringValue : string; 
    DecimalValue? : number; // Decimal, nullable
    BooleanValue? : boolean; 
    DateValue? : string; // DateTime, nullable
  }
  
  export class OrderSearchResultItemOrganizationUnit {
    ID : number; // Int32
    Name : string; 
  }
  
  export class OrderStatistics {
    GrossMargin : number; // Decimal
    OrderLines : { [ key : number ] : EVA.Core.OrderStatisticsOrderLineStatistics }; 
  }
  
  export enum OrderStatus {
    Cart = 0,
    Order = 1,
  }
  
  export enum OrderTypes {
    Sales = 0,
    Purchase = 1,
    WishList = 2,
  }
  
  export class OrderWithCustomerReferences {
    ID : number; // Int32
    CustomerReference : string; 
    CustomerOrderID : string; 
    CreationTime : string; // DateTime
  }
  
  export class OrganizationUnitCountryFilter {
    OrganizationUnitID : number; // Int32
    CountryID : string; 
    IncludeInheritedOrganizationUnits : boolean; 
  }
  
  export class OrganizationUnitCurrencyFilter {
    OrganizationUnitID : number; // Int32
    CurrencyID : string; 
    IncludeInheritedOrganizationUnits : boolean; 
  }
  
  export class EventLedgerDocumentOrganizationUnitDocument {
    ID : number; // Int32
    Name : string; 
    Type : EVA.Framework.OrganizationUnitTypes; 
  }
  
  export class OrganizationUnitDto {
    ID : number; // Int32
    BackendID : string; 
    ParentID? : number; // Int32, nullable
    VisibleByApplicationID : number; // Int32
    Name : string; 
    Description : string; 
    AddressID? : number; // Int32, nullable
    Address : EVA.Core.AddressDto; 
    EmailAddress : string; 
    PhoneNumber : string; 
    Type : EVA.Framework.OrganizationUnitTypes; 
    Status : EVA.Core.OrganizationUnitStatus; 
    OpeningHours : EVA.Core.OpeningHoursDto[]; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    CountryID : string; 
    CurrencyID : string; 
    CostPriceCurrencyID : string; 
    Subnet : string; 
  }
  
  export class OrganizationUnitLanguageFilter {
    OrganizationUnitID : number; // Int32
    LanguageID : string; 
    IncludeInheritedOrganizationUnits : boolean; 
  }
  
  export class ListDevicesModelOrganizationUnitModel {
    ID : number; // Int32
    BackendID : string; 
    Name : string; 
  }
  
  export class OrganizationUnitSetDefinition {
    CountryFilter : EVA.Core.OrganizationUnitSetDefinitionFilterDefinition; 
    LanguageFilter : EVA.Core.OrganizationUnitSetDefinitionFilterDefinition; 
    TypeFilter : EVA.Framework.OrganizationUnitTypes; 
    IsEmpty : boolean; 
  }
  
  export enum OrganizationUnitSetOperatorTypes {
    Add = 0,
    Remove = 1,
  }
  
  export enum OrganizationUnitSetTypes {
    System = 0,
    Custom = 1,
    AdHoc = 2,
  }
  
  export enum OrganizationUnitStatus {
    Default = 0,
    Open = 1,
    Closed = 2,
    OpeningSoon = 4,
    TemporarilyClosed = 8,
    Sale = 16,
    Hidden = 32,
  }
  
  export enum OrganizationUnitSupplierTypes {
    Internal = 0,
    External = 1,
  }
  
  export class OrganizationUnitWithStock {
    ID : number; // Int32
    Name : string; 
    SellableStock : number; // Int32
  }
  
  export enum PackagingTypes {
    Unknown = 0,
    Collo = 1,
    Oversized = 2,
    Pallet = 3,
  }
  
  export class PaidOrderAmount {
    Pending : number; // Decimal
    Amount : number; // Decimal
  }
  
  export enum PaperFormats {
    A3 = 1,
    A4 = 2,
    A5 = 3,
    Legal = 4,
    Letter = 5,
    Tabloid = 6,
    Auto = 7,
    Ledger = 8,
    A0 = 9,
    A1 = 10,
    A2 = 11,
    A6 = 12,
  }
  
  export class PaperPropertiesPaperMargin {
    Top? : number; // Int32, nullable
    Left? : number; // Int32, nullable
    Bottom? : number; // Int32, nullable
    Right? : number; // Int32, nullable
  }
  
  export enum PaperOrientations {
    Portrait = 1,
    Landscape = 2,
  }
  
  export class PaperProperties {
    WaitForNetworkIdle : boolean; 
    Size : EVA.Core.PaperPropertiesPaperSize; 
    Format? : EVA.Core.PaperFormats; 
    Orientation? : EVA.Core.PaperOrientations; 
    Margin : EVA.Core.PaperPropertiesPaperMargin; 
    ThermalPrinterTemplateType? : EVA.Core.ThermalPrinterTemplateTypes; 
  }
  
  export class PaperPropertiesPaperSize {
    Width : string; 
    Height : string; 
    DeviceScaleFactor? : number; // Decimal, nullable
  }
  
  export class EventLedgerDocumentTerminalReportDocumentPayment {
    Type : EVA.Core.EventLedgerDocumentTerminalReportDocumentPaymentMetadata; 
    Amount : number; // Decimal
    Count : number; // Int32
  }
  
  export enum PaymentCashJournalMethod {
    None = 0,
    Close = 1,
    OpenAndClose = 2,
  }
  
  export enum PaymentLogType {
    EJournal = 0,
    Receipt = 1,
    CustomerReceipt = 2,
    MerchantReceipt = 3,
    JsonReceipt = 4,
  }
  
  export class PaymentMethodNotUsableError {
    Type : string; 
    Message : string; 
  }
  
  export class EventLedgerDocumentTerminalReportDocumentPaymentPerUser {
    UserID : number; // Int32
    EmployeeNumber : string; 
    Description : string; 
    Amount : number; // Decimal
    Count : number; // Int32
  }
  
  export enum PaymentReturnActions {
    Default = 0,
    Blocked = 1,
    Forced = 2,
  }
  
  export enum PaymentStatus {
    NotPaid = 0,
    Paid = 1,
    Partial = 2,
  }
  
  export enum PaymentStatuses {
    New = 0,
    Pending = 1,
    Partial = 2,
    Confirmed = 10,
    Failed = -1,
  }
  
  export class PaymentTotalPerPaymentTypeDto {
    Total : number; // Decimal
    TypeName : string; 
  }
  
  export class PaymentTransactionActions {
    Cancel : boolean; 
    Refund : boolean; 
    Update : boolean; 
    Approve : boolean; 
  }
  
  export class EventLedgerDocumentPaymentTransactionDocument {
    ID : number; // Int32
    BackendID : string; 
    Amount : number; // Decimal
    PaidAmount : number; // Decimal
    Description : string; 
    Type : EVA.Core.EventLedgerDocumentPaymentTransactionDocumentPaymentTypeDocument; 
    PaymentMethod : string; 
    CurrencyID : string; 
    AmountToRefund? : number; // Decimal, nullable
    RefundedAmount? : number; // Decimal, nullable
    Status : EVA.Core.PaymentStatuses; 
  }
  
  export class PaymentTransactionDto {
    ID : number; // Int32
    BackendID : string; 
    OrderID? : number; // Int32, nullable
    GroupID : string; 
    PaymentDetails : string; 
    ErrorDetails : string; 
    PaymentDate? : string; // DateTime, nullable
    Amount : number; // Decimal
    Status : EVA.Core.PaymentStatuses; 
    IsConfirmed : boolean; 
    PendingOrConfirmed : boolean; 
    PaidAmount : number; // Decimal
    PaymentName : string; 
    Change : number; // Decimal
    TypeID : number; // Int32
    Type : EVA.Core.PaymentTypeDto; 
    CurrencyID : string; 
    ExchangeRate : number; // Decimal
    ForeignAmount : number; // Decimal
    ForeignPaidAmount : number; // Decimal
    Description : string; 
  }
  
  export enum PaymentTypeCategory {
    Other = 0,
    Debit = 1,
    Credit = 2,
    Cash = 3,
    Voucher = 4,
    Online = 5,
  }
  
  export class EventLedgerDocumentPaymentTransactionDocumentPaymentTypeDocument {
    ID : number; // Int32
    Name : string; 
  }
  
  export class PaymentTypeDto {
    Code : string; 
    Name : string; 
    IsRoundingType : boolean; 
    PrintOnDocuments : boolean; 
  }
  
  export class CashJournalDetailsModelPaymentTypeDto {
    ID : number; // Int32
    Name : string; 
    Code : string; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
  }
  
  export enum PhoneNumberTypes {
    Unspecified = 0,
    Home = 1,
    Mobile = 2,
    Work = 3,
    Fax = 4,
    Other = 999,
  }
  
  export class PickupAvailabilityIndication {
    PickupOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    PickupIndicationDate : string; // DateTime
    // When the store has a known time to finish a pickup this contains the first available time
    PickupIndicationTime? : string; // DateTime, nullable
    QuantityOnHand : number; // Int32
    QuantityAvailable : number; // Int32
    IsAvailable : boolean; 
  }
  
  export enum POSBarcodeHRI {
    NotPrinted = 0,
    AboveBarcode = 1,
    BelowBarcode = 2,
  }
  
  export enum POSBarcodeType {
    UpcA = 0,
    UpcE = 1,
    Jan13 = 2,
    Jan8 = 3,
    Code39 = 4,
    Itf = 5,
    Codabar = 6,
    TriopticCode39 = -12,
    BooklandEAN = -11,
    EAN128 = -10,
    MSI = -9,
    Code11 = -8,
    Discrete = -7,
    Interleaved = -6,
    Code93 = -5,
    Code128 = -4,
    Ean13 = -3,
    Ean8 = -2,
    Unknown = -1,
  }
  
  export enum POSImageSize {
    Normal = 0,
    DoubleWidth = 1,
    DoubleHeight = 2,
  }
  
  export enum POSPrinterAlignment {
    Left = 0,
    Center = 1,
    Right = 2,
  }
  
  export enum POSPrinterFont {
    FontA = 0,
    FontB = 1,
    FontC = 2,
  }
  
  export enum POSPrinterOrientation {
    Landscape = 0,
    Portrait = 1,
  }
  
  export enum PrinterCommandTypes {
    SetBold = 0,
    SetAlign = 1,
    SetSize = 2,
    SetFont = 3,
    SetTabSize = 4,
    SetLineSpacing = 5,
    OutputNewLine = 6,
    OutputImage = 7,
    OutputBarcode = 8,
    OutputText = 9,
    OutputFeed = 10,
    OutputHorizontalLine = 11,
    OutputQRCode = 12,
    CutPaper = 13,
  }
  
  export class ProductAvailabilityDataDto {
    ID : number; // Int32
    PromisedDeliveryStatusID? : number; // Int32, nullable
    PromisedDeliveryStatus? : EVA.Core.ProductPromisedDeliveryStatuses; 
    MinDeviationDays : number; // Int32
    MaxDeviationDays : number; // Int32
    DeliveryText : string; 
    PickupNoStoresText : string; 
    PickupSomeStoresText : string; 
    PickupAllStoresText : string; 
    ProductID? : number; // Int32, nullable
    Product : EVA.Core.ProductDto; 
    ValidThrough? : string; // DateTime, nullable
  }
  
  export class ProductAvailabilityIndication {
    ProductID : number; // Int32
    PickupIndications : EVA.Core.PickupAvailabilityIndication[]; 
    Delivery : EVA.Core.DeliveryAvailabilityIndication; 
    StoreAvailabilityCount : number; // Int32
    StoreCount : number; // Int32
    ProductStatus : EVA.Core.ProductStatus; 
    ExpectedAvailabilityStatus? : EVA.Core.ProductPromisedDeliveryStatuses; 
    PickupText : string; 
  }
  
  export enum ProductBarcodeOrigin {
    Imported = 0,
    UserDefined = 1,
  }
  
  export enum ProductBundleLineOptionTypes {
    LeafProduct = 0,
    ConfigurableProduct = 1,
    BundleProduct = 2,
  }
  
  export enum ProductBundleLineTypes {
    Required = 0,
    Optional = 1,
    OptionalIncludedInPrice = 2,
  }
  
  export class ProductDto {
    ID : number; // Int32
    BackendID : string; 
    CustomID : string; 
    BrandID? : number; // Int32, nullable
    BrandName : string; 
    PrimitiveName : string; 
    Type : EVA.Core.ProductTypes; 
    CatalogID : number; // Int32
    LedgerClassID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    Properties : any; 
  }
  
  export class EventLedgerDocumentTerminalReportDocumentProductGroup {
    Code : string; 
    Amount : number; // Decimal
    Count : number; // Int32
  }
  
  export enum ProductHierarchyTypes {
    ConfigurableProduct = 0,
    TemplateProduct = 1,
  }
  
  export enum ProductLedgerTypes {
    Adjustment = 0,
    AutomaticCorrection = 3,
    MoveFrom = 4,
    MoveTo = 5,
    Summary = 6,
    ExternalModification = 9,
    Allocation = 10,
  }
  
  export enum ProductPromisedDeliveryStatuses {
    Unknown = 0,
    KnownUnSure = 1,
    KnownQuiteSure = 2,
    KnownSure = 3,
    OnDay = 4,
    Stock = 5,
  }
  
  export class ProductQuantityDto {
    ProductID : number; // Int32
    QuantityRequested : number; // Int32
    ShippingMethodID? : number; // Int32, nullable
  }
  
  export enum ProductRequirementDataTypes {
    String = 0,
    Bool = 1,
    Integer = 2,
    Decimal = 3,
    Enum = 4,
    Text = 5,
  }
  
  export class SearchStockMutationResultProductResult {
    ID : number; // Int32
    CustomID : string; 
    BackendID : string; 
    PrimitiveName : string; 
  }
  
  export enum ProductSearchOptions {
    None = 0,
    IsInternalCall = 1,
    IsSearch = 2,
    IsLargePageSize = 4,
  }
  
  export class ProductSearchTemplateFilters {
    Name : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export enum ProductStatus {
    None = 0,
    PreRelease = 1,
    DeliveryOnly = 4,
    DisableDelivery = 8,
    DisablePickup = 16,
    DisableBackorder = 32,
    UseUp = 34,
  }
  
  export class ProductStructureDefinition {
    Name : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
    Children : EVA.Core.ProductStructureDefinition[]; 
  }
  
  export enum ProductTypes {
    None = 0,
    Stock = 1,
    Marketing = 4,
    GiftCard = 8,
    Service = 16,
    GreetingCard = 32,
    CustomPricing = 64,
    External = 128,
    OrderCosts = 256,
    SystemGenerated = 512,
    ProductSet = 1024,
    BundleProduct = 2048,
    VirtualProduct = 4096,
    MadeToOrder = 8192,
    Configurable = 16384,
    SupplierProduct = 32768,
    Template = 65536,
  }
  
  export enum ProductTypes {
    Goods = 0,
    Services = 1,
  }
  
  export enum PropertyValueType {
    None = 0,
    Single = 1,
    Multi = 2,
  }
  
  export class PurchaseOrderShipmentDto {
    ID : number; // Int32
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    ShipmentDate : string; // DateTime
    ExpectedDeliveryDate? : string; // DateTime, nullable
    BackendID : string; 
    BackendSystemID : string; 
    TrackingCode : string; 
    TrackingLink : string; 
    CreationTime : string; // DateTime
    TotalQuantityShipped : number; // Int32
    TotalQuantityDelivered : number; // Int32
    NetTotalQuantityShipped : number; // Int32
    NetTotalQuantityDelivered : number; // Int32
    IsCompleted : boolean; 
    StatusID : number; // Int32
    TotalPackageCountIndication : number; // Int32
    Orders : EVA.Core.PurchaseOrderShipmentDtoOrderDto[]; 
    ReceiveMethodID? : number; // Int32, nullable
  }
  
  export class PurchaseOrderShipmentLineDto {
    ID : number; // Int32
    ProductID : number; // Int32
    Description : string; 
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    IsCompleted : boolean; 
    CurrencyID : string; 
    UnitPrice : number; // Decimal
    // Obsolete
    ForeignUnitPrice : number; // Decimal
    TotalAmount : number; // Decimal
    // Obsolete
    ForeignTotalAmount : number; // Decimal
    ShipmentDate : string; // DateTime
    // Obsolete
    ExchangeRate : number; // Decimal
  }
  
  export enum PushNotificationPriority {
    Low = 1,
    High = 2,
  }
  
  export class SearchStockMutationResultReasonResult {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
  }
  
  export class ReceiveShipmentWorkSet {
    ShipmentID : number; // Int32
    BackendID : string; 
    ShippedToOrganizationUnitID : number; // Int32
    ReceiveMethod : EVA.Core.ShipmentReceiveMethods; 
    Lines : EVA.Core.ReceiveShipmentWorkSetLine[]; 
    Orders : EVA.Core.GetShipmentDetailsOrder[]; 
  }
  
  export class ReceiveShipmentWorkSetLine {
    ProductID : number; // Int32
    ProductPrimitiveName : string; 
    ProductCustomID : string; 
    QuantityOrdered : number; // Int32
    QuantityAlreadyReceived : number; // Int32
    QuantityShipped : number; // Int32
    NetQuantityShipped : number; // Int32
    NetQuantityDelivered : number; // Int32
    Receipts : EVA.Core.ReceiveShipmentWorkSetLineReceipt[]; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
    Packages : EVA.Core.ReceiveShipmentWorkSetLinePackage[]; 
  }
  
  export class ReceiveShipmentWorkSetLinePackage {
    UnitOfMeasure : string; 
    Barcode : string; 
    Quantity : number; // Int32
    QuantityBarcode : number; // Int32
    QuantityTotal : number; // Int32
  }
  
  export class ReceiveShipmentWorkSetLineReceipt {
    QuantityReceived : number; // Int32
    Resource : EVA.Core.ReceiveShipmentWorkSetLineResource; 
  }
  
  export class ReceiveShipmentWorkSetLineResource {
    ResourceID? : number; // Int32, nullable
    Resources : { [ key : string ] : string }; 
  }
  
  export class RequestedDateByOrderLineID {
    OrderLineID : number; // Int32
    RequestedDate? : string; // DateTime, nullable
  }
  
  export enum RequestedPriceTypes {
    UnitPrice = 1,
    UnitCost = 2,
    PurchasePrice = 4,
    RecommendedRetailPrice = 8,
  }
  
  export class RequiredData {
    Order : EVA.Core.Requirement[]; 
    OrderLines : { [ key : number ] : EVA.Core.Requirement[] }; 
    Customer : EVA.Core.Requirement[]; 
  }
  
  export class RequiredDataValidationResult {
    ValidationErrors : EVA.Core.ValidationError[]; 
  }
  
  export enum RequiredFor {
    PlaceOrder = 1,
    Payment = 2,
    Ship = 4,
    Invoice = 8,
    All = 15,
  }
  
  export enum RequiredResourceMoments {
    Sale = 1,
    Stock = 2,
  }
  
  export class Requirement {
    Name : string; 
    IsValid : boolean; 
    Message : string; 
    Type : string; 
    ValidationRule : string; 
    DataType : string; 
    RequiredFor : EVA.Core.RequiredFor; 
  }
  
  export class SearchStockMutationResultResourceLineResult {
    ResourceID : number; // Int32
    Type : string; 
    Value : string; 
    IsUnique : boolean; 
  }
  
  export enum ReturnableStatuses {
    Returnable = 0,
    ReturnableWithParent = 1,
    NotReturnable = 2,
    SelfAndChildrenNotReturnable = 3,
    AlwaysReturnable = 4,
  }
  
  export enum ReturnStatus {
    Returnable = 0,
    NotReturnable = 1,
    ReturnableForced = 2,
  }
  
  export class EventLedgerDocumentRoleDocument {
    ID : number; // Int32
  }
  
  export class SearchDiscountsByQueryFilter {
    IsActive? : boolean; 
    DiscountTriggerID : number; // Int32
    Description : string; 
    CouponCode : string; 
    CreatedBy : string; 
    BackendID : string; 
    IsActiveAndVerified? : boolean; 
    ShowOnlyChildDiscounts? : boolean; 
    OrderType : EVA.Core.OrderTypes; 
    LayerID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    CurrencyID : string; 
  }
  
  export class SearchStockMutationResult {
    ID : number; // Int32
    CreationTime : string; // DateTime
    Product : EVA.Core.SearchStockMutationResultProductResult; 
    OrganizationUnit : EVA.Core.SearchStockMutationResultIdNameValue; 
    SourceStockLabel : EVA.Core.SearchStockMutationResultIdNameValue; 
    DestinationStockLabel : EVA.Core.SearchStockMutationResultIdNameValue; 
    MutationQuantity : number; // Int32
    AutomaticCorrectionQuantity : number; // Int32
    SourceUnitCost : number; // Decimal
    SourceUnitPrice : number; // Decimal
    DestinationUnitCost : number; // Decimal
    DestinationUnitPrice : number; // Decimal
    Reason : EVA.Core.SearchStockMutationResultReasonResult; 
    ResourceLines : EVA.Core.SearchStockMutationResultResourceLineResult[]; 
    Type : EVA.Core.SearchStockMutationResultIdNameValue; 
    Remark : string; 
    OrderLine : EVA.Core.SearchStockMutationResultOrderLineResult; 
    UserTask : EVA.Core.SearchStockMutationResultUserTaskResult; 
    ShipmentLine : EVA.Core.SearchStockMutationResultShipmentLineResult; 
    CreatedBy : EVA.Core.SearchStockMutationResultUserResult; 
  }
  
  export enum ServiceExceptionTypes {
    General = 0,
    Unknown = 1,
    PasswordPolicyViolation = 2,
    UserPhoneNumberRequired = 3,
    SubscribeTokenInvalid = 4,
    UnknownStation = 5,
    ProductNotFound = 6,
    CustomerMissing = 7,
    UnknownOrganization = 8,
    NoOrganization = 9,
    PaymentValidationError = 10,
    IncompleteConfirmation = 11,
    InvalidEmailAddress = 12,
    SecurityException = 13,
    StationRequired = 14,
    ScanStationBeforeInitiatingPayment = 15,
    FinanceException = 16,
    NoOpenFinancePeriod = 17,
    FinancePeriodUnavailable = 18,
    OrderCompleted = 19,
    PrintFailed = 20,
    NotFound = 21,
    UpdateLineActionTypeNotAllowed = 22,
    OrderLineAlreadyCompleted = 23,
    AddLineNotAllowed = 24,
    CannotDeleteOrder = 25,
    InvalidOpeningHours = 26,
    InvalidRequest = 27,
    ShoppingCartNotFound = 28,
    InvalidStockLabel = 29,
    InsufficientStock = 30,
    ModifyLineNotAllowed = 31,
    PendingPayment = 32,
    InvalidOrder = 33,
    InvalidBankAccount = 34,
    CustomerRequired = 35,
    CardActivationFailure = 36,
    InvalidCustomer = 37,
    ReservationFailed = 38,
    DetachCustomerNotAllowed = 39,
    NotImplemented = 40,
    NoCountedQuantitiesSpecified = 41,
    TaskAlreadyCompleted = 42,
    CannotMoveBackMoreToSellableThanWasRequested = 43,
    InitialCycleCountAlreadyExists = 44,
    CannotCountNonStockProduct = 45,
    PaymentReturnActionBlocked = 46,
    CannotCreateInitialCycleCountWithoutOpenPeriod = 47,
    CouponCodeAlreadyInUse = 48,
    TransactionAlreadyConfirmed = 49,
    CannotChangeShippingMethod = 50,
    OrganizationUnitUnavailableForPickup = 51,
    ValidationFailed = 52,
    CannotCancelOrderLine = 53,
    InvalidStockMutation = 54,
    InvalidVerificationCode = 55,
    PolicyOrReferenceNumberNotValid = 56,
    PolicyAndReferenceNumberRequired = 57,
    OpeningCashDrawerDisabled = 58,
    OpeningCashDrawerRequiresRemark = 59,
    CannotCancelOrder = 60,
    StockResourceInvalid = 61,
    OrderFlaggedForFraud = 62,
    CardIssuingFailure = 63,
    ParseException = 64,
  }
  
  export enum SetPasswordOptions {
    None = 0,
    IgnorePasswordCheck = 1,
    SkipExisting = 2,
    GeneratePassword = 4,
    GenerateTemporaryPassword = 8,
  }
  
  export enum ShipmentInitiator {
    External = 0,
    User = 1,
  }
  
  export enum ShipmentLineDeliveryTypes {
    Default = 0,
    Surplus = 1,
    Deficiency = 2,
  }
  
  export class ShipmentLineDto {
    ID : number; // Int32
    CustomID : string; 
    ProductID? : number; // Int32, nullable
    Description : string; 
    BackendReference : string; 
    QuantityShipped : number; // Int32
    QuantityDelivered : number; // Int32
    CurrencyID : string; 
    UnitPrice : number; // Decimal
    IsCompleted : boolean; 
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    UnitPriceInTax : number; // Decimal
    TaxRate : number; // Decimal
    DeliveryType : EVA.Core.ShipmentLineDeliveryTypes; 
    OrderID : number; // Int32
    OrderLineID : number; // Int32
    ShipmentID : number; // Int32
    ShipmentDate : string; // DateTime
    NetQuantityShipped : number; // Int32
    NetQuantityDelivered : number; // Int32
  }
  
  export class SearchStockMutationResultShipmentLineResult {
    ID : number; // Int32
    Shipment : EVA.Core.SearchStockMutationResultShipmentResult; 
  }
  
  export enum ShipmentReceiveMethods {
    Manual = 0,
    Automatic = 1,
    UserDefined = 2,
  }
  
  export class SearchStockMutationResultShipmentResult {
    ID : number; // Int32
    TrackingCode : string; 
  }
  
  export class ShipmentResultMessage {
    Code : string; 
    Message : string; 
  }
  
  export enum ShipmentStatuses {
    Open = 0,
    Completed = 10,
    Cancelled = 11,
  }
  
  export class ShippingMethodDto {
    ID : number; // Int32
    CarrierID : number; // Int32
    Carrier : EVA.Core.CarrierDto; 
    Name : string; 
    Description : string; 
    Code : string; 
    ExtraCosts : number; // Decimal
    Priority : number; // Int32
    PaymentHandledByCarrier : boolean; 
  }
  
  export class ShippingMethodByOrderLineDto extends EVA.Core.ShippingMethodDto {
    AppliesToOrderLineIDs : number[]; 
    RequestedDeliveryDates : EVA.Core.RequestedDateByOrderLineID[]; 
  }
  
  export enum ShippingMethodDeliveryTypes {
    None = 0,
    Default = 1,
    ShipFromStore = 2,
  }
  
  export class ShippingMethodTransportationTimeItem {
    ID : number; // Int32
    ShippingMethodID? : number; // Int32, nullable
    ShippingMethodName : string; 
    FromCountryID : string; 
    ToCountryID : string; 
    TimeInDays : number; // Int32
  }
  
  export enum ShippingOptions {
    Automatic = 0,
    Manual = 1,
    ManualWithShipmentIDs = 2,
    ManualWithDetailInspection = 3,
  }
  
  export enum ShippingRestrictionType {
    SoldFromOrganizationUnit = 0,
    ShipFromOrganizationUnit = 1,
  }
  
  export class ShoppingCartResponse extends EVA.API.ResponseMessage {
    ShoppingCart : EVA.Core.OrderDto; 
    Amounts : EVA.Core.OpenOrderAmounts; 
  }
  
  export class SimpleShoppingCartResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
  }
  
  export enum SmsPriority {
    Normal = 0,
    High = 1,
  }
  
  export class CashJournalDetailsModelStation {
    ID : number; // Int32
    Name : string; 
  }
  
  export class StationCashResult {
    Currency : number; // Decimal
    Quantity : number; // Int32
  }
  
  export class StationClosing {
    InitialAmount : number; // Decimal
    Name : string; 
    Type : EVA.Core.LegacyCashJournalTypes; 
    TypeName : string; 
    StationID? : number; // Int32, nullable
    ClosingAmount : number; // Decimal
    Currencies : EVA.Core.StationCashResult[]; 
  }
  
  export class StationDto {
    ID : number; // Int32
    BackendID : string; 
    Name : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    OrganizationUnitDescription : string; 
    Devices : EVA.Core.DeviceDto[]; 
    HasPrinterDevice : boolean; 
    HasPinDevice : boolean; 
    HasThermalPrinterDevice : boolean; 
    HasCashDrawerDevice : boolean; 
    HasCustomerFacingDisplay : boolean; 
    ProxyID : string; 
  }
  
  export class ListDevicesModelStationModel {
    ID : number; // Int32
    BackendID : string; 
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnit : EVA.Core.ListDevicesModelOrganizationUnitModel; 
  }
  
  export enum StockAllocationRuleTypes {
    Reservation = 0,
    Limitation = 1,
  }
  
  export enum StockAllocationRuleValueTypes {
    Quantity = 0,
    Percentage = 1,
  }
  
  export class StockMutationDto {
    ID : number; // Int32
    CreationTime : string; // DateTime
    SourceOrganizationUnitID : number; // Int32
    SourceOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    SourceStockLabelID : number; // Int32
    SourceStockLabel : number; // Int32
    DestinationOrganizationUnitID : number; // Int32
    DestinationOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    DestinationStockLabelID : number; // Int32
    DestinationStockLabel : number; // Int32
    ReasonID : number; // Int32
    Reason : EVA.Framework.EnumDto; 
    ProductID : number; // Int32
    Product : EVA.Core.ProductDto; 
    OrderLineID? : number; // Int32, nullable
    OrderLine : EVA.Core.OrderLineDto; 
    ResourceID? : number; // Int32, nullable
    MutationQuantity : number; // Int32
    Remark : string; 
    SourceUnitCost : number; // Decimal
    DestinationUnitCost : number; // Decimal
    AutomaticCorrectionQuantity : number; // Int32
  }
  
  export class StockMutationFilters {
    ProductIDs : number[]; 
    MutationQuantity? : number; // Int32, nullable
    Remark : string; 
    SourceStockLabelID? : number; // Int32, nullable
    DestinationStockLabelID? : number; // Int32, nullable
    ReasonIDs : number[]; 
    OrganizationUnitID? : number; // Int32, nullable
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    UserIDs : number[]; 
    OrderIDs : number[]; 
  }
  
  export enum StockMutationTypes {
    Unknown = 0,
    Move = 1,
    Adjust = 2,
  }
  
  export class StockResourceTypeDto {
    Name : string; 
    IsUnique : boolean; 
  }
  
  export enum StockTimelineItemStatuses {
    New = 0,
    Blocked = 5,
    Processed = 10,
    ProcessedObsolete = 20,
    Deleted = 30,
  }
  
  export enum StockTimelineItemTypes {
    Replenishment = 0,
    Commitment = 1,
    Shipment = 2,
  }
  
  export enum SubscriptionStatus {
    None = 0,
    Requested = 1,
    Subscribed = 2,
    Unsubscribed = 3,
  }
  
  export class SuggestionModel {
    Score : number; // Double
    Text : string; 
    Payload : any; 
  }
  
  export enum SystemQueues {
    Default = 0,
    Mails = 1,
  }
  
  export class EventLedgerDocumentTerminalReportDocumentTax {
    Name : string; 
    Code : string; 
    Rate : number; // Decimal
    Base : number; // Decimal
    Amount : number; // Decimal
  }
  
  export class TaxAmount {
    Rate : number; // Decimal
    Amount : number; // Decimal
    // Obsolete
    ForeignAmount : number; // Decimal
    Base : number; // Decimal
  }
  
  export class TaxRateModel {
    ID : number; // Int32
    CountryID : string; 
    TaxCodeID : number; // Int32
    TaxCodeName : string; 
    Rate : number; // Decimal
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
  }
  
  export enum TemplateOutputChannel {
    Print = 1,
    Download = 2,
    Email = 4,
    Receipt = 8,
  }
  
  export class EventLedgerDocumentTerminalReportDocument {
    Type : EVA.Core.TerminalReportType; 
    Supplier : EVA.Core.Billable; 
    Company : EVA.Core.Billable; 
    Date : string; // DateTime
    Payments : EVA.Core.EventLedgerDocumentTerminalReportDocumentPayment[]; 
    Taxes : EVA.Core.EventLedgerDocumentTerminalReportDocumentTax[]; 
    ProductGroups : EVA.Core.EventLedgerDocumentTerminalReportDocumentProductGroup[]; 
    PaymentsPerUser : EVA.Core.EventLedgerDocumentTerminalReportDocumentPaymentPerUser[]; 
    CopyReceiptsPrinted : number; // Int32
    TotalCopyReceiptsAmount : number; // Decimal
    ReceiptsPrinted : number; // Int32
    CashDrawerOpenings : number; // Int32
    ReturnCount : number; // Int32
    TotalReturnsAmount : number; // Decimal
    DiscountCount : number; // Int32
    TotalDiscounts : number; // Decimal
    Change : number; // Decimal
    GrandTotalCash : number; // Decimal
    GrandTotal : number; // Decimal
    GrandTotalNet : number; // Decimal
    GrandTotalReturns : number; // Decimal
  }
  
  export enum TerminalReportType {
    X = 0,
    Z = 1,
  }
  
  export enum ThermalPrinterStatus {
    None = 0,
    CashDrawerOpened = 1,
    CashDrawerClosed = 2,
    Online = 4,
    Offline = 8,
    CoverOpen = 16,
    CoverClosed = 32,
    PaperNearEnd = 64,
    PaperAdequate = 128,
    PaperPresent = 256,
    PaperNotPresent = 512,
  }
  
  export enum ThermalPrinterTemplateTypes {
    Xml = 0,
    Html = 1,
  }
  
  export enum TimelineItemTypes {
    InitialStock = 0,
    Replenishment = 1,
    Shipment = 2,
    Commitment = 3,
  }
  
  export enum TotalTypes {
    GrandTotal = 0,
    PeriodGrandTotal = 1,
    MonthlyGrandTotal = 2,
    FiscalYearGrandTotal = 3,
  }
  
  export class TransportOrderLineData {
    TransportID : string; 
    Priority? : number; // Int32, nullable
    PlannedDate? : string; // DateTime, nullable
    Timeslot : string; 
  }
  
  export class TransputJobDocument {
    CreationTime : string; // DateTime
    Document : string; 
  }
  
  export enum TransputJobStatuses {
    New = 0,
    Running = 1,
    Finished = 2,
    Failed = -1,
  }
  
  export class TransputJobWithRelatedExportDataDto {
    Status : EVA.Core.TransputJobStatuses; 
    Type : EVA.Framework.EnumDto; 
    Identifier : string; 
    CreationTime : string; // DateTime
    StartTime? : string; // DateTime, nullable
    EndTime? : string; // DateTime, nullable
    OrderID? : number; // Int32, nullable
    OrderExportID? : number; // Int32, nullable
    ShipmentID? : number; // Int32, nullable
    ShipmentExportID? : number; // Int32, nullable
    InvoiceID? : number; // Int32, nullable
    InvoiceExportID? : number; // Int32, nullable
    FinancialPeriodID? : number; // Int32, nullable
    FinancialPeriodExportID? : number; // Int32, nullable
    Name : string; 
    ShipFromOrganizationUnit? : number; // Int32, nullable
    ShipToOrganizationUnit? : number; // Int32, nullable
  }
  
  export enum TravelAvoidTypes {
    None = 0,
    Tolls = 1,
    Highways = 2,
    Ferries = 3,
  }
  
  export enum TravelModes {
    Driving = 0,
    Bicycling = 1,
    Walking = 2,
  }
  
  export enum UrlRewriteTypes {
    MovedPermanently = 301,
    MovedTemporarily = 302,
    TemporaryRedirect = 307,
    PermanentRedirect = 308,
    Gone = 410,
    Silent = 999,
  }
  
  export enum UrlSafetyResult {
    Safe = 0,
    Unsafe = 1,
    InvalidUrl = 2,
  }
  
  export enum UserCardAmountTypes {
    Currency = 0,
    Points = 1,
  }
  
  export class UserCardBalance {
    CardBalance : number; // Decimal
    CurrencyBalance : number; // Decimal
    CurrencyID : string; 
  }
  
  export class UserCardDto {
    ID : number; // Int32
    UserID : number; // Int32
    User : EVA.Core.UserDto; 
    Barcode : string; 
    IsActive : boolean; 
    CurrentBalance : EVA.Core.UserCardBalance; 
    TypeID : number; // Int32
    Type : EVA.Core.UserCardTypeDto; 
    CurrencyID : string; 
  }
  
  export enum UserCardMutationStatuses {
    Pending = 0,
    Completed = 1,
    Cancelled = 2,
  }
  
  export enum UserCardMutationTypes {
    Deposit = 0,
    Withdraw = 1,
  }
  
  export class UserCardTypeDto extends EVA.Framework.EnumDto {
    AmountType : EVA.Core.UserCardAmountTypes; 
  }
  
  export class EventLedgerDocumentUserDocument {
    ID : number; // Int32
  }
  
  export class UserIdentificationPin {
    HasPin : boolean; 
    ResetDate? : string; // DateTime, nullable
  }
  
  export enum UserLedgerTypes {
    None = 0,
    Deleted = 1,
    EmailAddressChanged = 2,
    NameChanged = 3,
    DOBChanged = 4,
    RegistrationNumberChanged = 5,
    CompanyNameChanged = 6,
    VatNumberChanged = 7,
    BankAccountChanged = 8,
    TypeChanged = 9,
    PasswordChanged = 10,
    PasswordResetRequested = 11,
    FunctionalitiesUpdated = 12,
    ShippingAddressChanged = 13,
    BillingAddressChanged = 14,
    PasswordResetFailed = 15,
    SubscriptionChanged = 16,
    FiscalIDChanged = 17,
    IsIncognitoChanged = 18,
    SessionKeyChanged = 19,
  }
  
  export class UserRequirement {
    Required : boolean; 
    CustomValidators : { [ key : string ] : any }; 
  }
  
  export class SearchStockMutationResultUserResult {
    ID : number; // Int32
    EmailAddress : string; 
    FirstName : string; 
    LastName : string; 
  }
  
  export class EventLedgerDocumentUserTaskDocument {
    ID : number; // Int32
    UserID? : number; // Int32, nullable
    StartTime? : string; // DateTime, nullable
    CompletionTime? : string; // DateTime, nullable
    Type : EVA.Core.EventLedgerDocumentUserTaskDocumentUserTaskTypeDocument; 
    Description : string; 
  }
  
  export class UserTaskDto {
    ID : number; // Int32
    UserID? : number; // Int32, nullable
    User : EVA.Core.UserDto; 
    UserFullname : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    FinancialPeriodID? : number; // Int32, nullable
    FinancialPeriod : EVA.Core.FinancialPeriodDto; 
    Type : EVA.Core.UserTaskTypeDto; 
    Priority : number; // Int32
    IsCompleted : boolean; 
    IsActive : boolean; 
    CreationTime : string; // DateTime
    Deadline? : string; // DateTime, nullable
    ExpectedTimeToComplete? : any; // TimeSpan, nullable
    StartTime? : string; // DateTime, nullable
    CompletionTime? : string; // DateTime, nullable
    Description : string; 
  }
  
  export class SearchStockMutationResultUserTaskResult {
    ID : number; // Int32
    Type : EVA.Core.SearchStockMutationResultIdNameValue; 
  }
  
  export class EventLedgerDocumentUserTaskDocumentUserTaskTypeDocument {
    ID : number; // Int32
    Name : string; 
  }
  
  export class UserTaskTypeDto extends EVA.Framework.EnumDto {
    Configuration : string; 
    ExpectedTimeToComplete? : any; // TimeSpan, nullable
    DefaultPriority : number; // Int32
    DefaultRequired : boolean; 
  }
  
  export class UserTaskTypeOrganizationUnitSetDto {
    ID : number; // Int32
    UserTaskTypeID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    Required : boolean; 
  }
  
  export class ValidationError {
    Field : string; 
    Message : string; 
    Context : string; 
  }
  
  export class WarehouseOrderData {
  }
  
  export class WeekOpeningsDto {
    DayOfWeek? : System.Private.CoreLib.DayOfWeek; 
    OpeningTime : any; // TimeSpan
    ClosingTime : any; // TimeSpan
    Date? : string; // DateTime, nullable
    Closed : boolean; 
  }
  
  export enum WishListFundingType {
    Payment = 0,
    Delivery = 1,
  }
  
  export enum ZipCodeHouseNumber {
    Uneven = 0,
    Even = 1,
    Sequential = 2,
  }
  
  export enum ZipCodePartType {
    Digit = 0,
    Letter = 1,
    Other = 2,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Datadog {
  
  export enum AlertType {
    Info = 0,
    Error = 1,
    Warning = 2,
    Success = 3,
  }
  
  export enum MeasureType {
    Timer = 0,
    Gauge = 1,
    Histogram = 2,
  }
  
  export enum Priority {
    Normal = 0,
    Low = 1,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Devices.StatusChecker {
  
  export class DeviceStatusSummary {
    ID : number; // Int32
    Name : string; 
    Type : string; 
    Status : number; // Int32
    ModificationTime? : string; // DateTime, nullable
  }
  
  export class ImAlive extends EVA.API.RequestMessageWithEmptyResponse {
    MacAddress : string; 
  }
  
  export class ListOrganizationUnitsWithDeviceStatus extends EVA.API.RequestMessageGeneric<EVA.Devices.StatusChecker.ListOrganizationUnitsWithDeviceStatusResponse> {
  }
  
  export class ListOrganizationUnitsWithDeviceStatusResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Devices.StatusChecker.OrganizationUnitDeviceStatus[]; 
  }
  
  export class ListOrganizationUnitWithDeviceDetails extends EVA.API.RequestMessageGeneric<EVA.Devices.StatusChecker.ListOrganizationUnitWithDeviceDetailsResponse> {
    ID : number; // Int32
  }
  
  export class ListOrganizationUnitWithDeviceDetailsResponse extends EVA.API.ResponseMessage {
    OrganizationUnit : EVA.Devices.StatusChecker.OrganizationUnitDeviceStatus; 
  }
  
  export class OrganizationUnitDeviceStatus {
    ApplicationID : number; // Int32
    ID : number; // Int32
    Type : EVA.Framework.OrganizationUnitTypes; 
    Name : string; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    Status : number; // Int32
    Devices : EVA.Devices.StatusChecker.DeviceStatusSummary[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.DocumentSigning {
  
  export class CompleteSignDocumentTask extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    TaskID : number; // Int32
    Location : string; 
    Signatures : EVA.DocumentSigning.Signature[]; 
  }
  
  export enum Fields {
    Signature = 0,
    Name = 1,
    Date = 2,
    Place = 3,
    Image = 4,
  }
  
  export class GetOrderSignature extends EVA.API.RequestMessageWithResourceResponse {
    OrderID : number; // Int32
  }
  
  export class GetSigningCodeForOrder extends EVA.API.RequestMessageGeneric<EVA.DocumentSigning.GetSigningCodeForOrderResponse> {
    OrderID : number; // Int32
  }
  
  export class GetSigningCodeForOrderResponse extends EVA.API.ResponseMessage {
    Code : string; 
    IsAlreadySigned : boolean; 
  }
  
  export class GetSigningDataForOrder extends EVA.API.RequestMessageGeneric<EVA.DocumentSigning.GetSigningDataForOrderResponse> {
    Hash : string; 
  }
  
  export class GetSigningDataForOrderResponse extends EVA.API.ResponseMessage {
    OrderID : number; // Int32
    CustomerReference : string; 
    CreationTime : string; // DateTime
    ShippingAddress : EVA.Core.AddressDto; 
    CustomerName : string; 
    CustomerPhonenumber : string; 
    CustomerEmailAddress : string; 
    ItemCount : number; // Int32
    TotalAmount : number; // Decimal
    TotalAmountInTax : number; // Decimal
    CurrencyID : string; 
    IsAlreadySigned : boolean; 
  }
  
  export class Signature {
    Description : string; 
    SignatureData : string; 
    SignatureHash : string; 
    SignatureText : string; 
  }
  
  export class SignOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID? : number; // Int32, nullable
    Hash : string; 
    Signature : string; 
    MimeType : string; 
  }
  
  export class StartSignDocumentResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.DocumentSigning.StartSignDocumentWorkSet; 
  }
  
  export class StartSignDocumentTask extends EVA.API.RequestMessageGeneric<EVA.DocumentSigning.StartSignDocumentResponse> {
    TaskID? : number; // Int32, nullable
    OrderLineID? : number; // Int32, nullable
  }
  
  export class StartSignDocumentWorkSet {
    DocumentID : string; 
    DocumentUrl : string; 
    SignatureHashSalt : string; 
    UserTaskID : number; // Int32
    Signatures : EVA.DocumentSigning.Signature[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Elasticsearch {
  
  export class RequestReindexOrderSearchData extends EVA.API.RequestMessageWithEmptyResponse {
    Script : string; 
  }
  
  export class RequestReindexUserSearchData extends EVA.API.RequestMessageWithEmptyResponse {
    Script : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.FTH {
  
  export class FTHGetDueDateForOrder extends EVA.API.RequestMessageGeneric<EVA.FTH.FTHGetDueDateResponse> {
    OrderID : number; // Int32
  }
  
  export class FTHGetDueDateResponse extends EVA.API.ResponseMessage {
    DueDate? : string; // DateTime, nullable
  }
  
  export class FTHGetWishListDiscount extends EVA.API.RequestMessageGeneric<EVA.FTH.FTHGetWishListDiscountResponse> {
    OrderID : number; // Int32
  }
  
  export class FTHGetWishListDiscountResponse extends EVA.API.ResponseMessage {
    Amount : number; // Decimal
  }
  
  export class FTHSetDueDateOnOrder extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    DueDate? : string; // DateTime, nullable
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Framework {
  
  export enum AfterCommitType {
    Insert = 1,
    Update = 2,
    Delete = 3,
  }
  
  export enum AuthenticationResults {
    NotAuthenticated = 0,
    NotAuthorized = 1,
    Authenticated = 2,
    NeedsTwoStepAuthentication = 3,
    NeedsOrganizationUnitID = 4,
    NeedsEmailVerification = 5,
    NeedsPasswordReset = 6,
  }
  
  export enum BlobExposureType {
    Public = 0,
    Private = 1,
    OneTimeDownload = 2,
  }
  
  export enum ChangeBehaviorTypes {
    OnBeforeCreateAsync = 0,
    OnAfterCreateAsync = 1,
    OnBeforeUpdateAsync = 2,
    OnAfterUpdateAsync = 3,
    OnBeforeDeleteAsync = 4,
    OnPostCommitAsync = 5,
    OnCreateNewEntity = 6,
    OnDeleteEntity = 7,
    OnTrackChanges = 8,
    OnBeforeDetectChangesAsync = 9,
  }
  
  export enum ClientNotificationType {
    Info = 1,
    Success = 2,
    Error = 3,
    Warning = 4,
  }
  
  export enum ConcurrencyControl {
    None = 0,
    Optimistic = 1,
    OptimisticModifiedColumnsOnly = 2,
    AllowEquivalentUpdates = 3,
  }
  
  export enum ConnectionIntent {
    ReadWrite = 0,
    ReadOnly = 1,
  }
  
  export enum CustomActionTypes {
    Pre = 0,
    Post = 1,
  }
  
  export enum DaysOfWeek {
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64,
    All = 127,
  }
  
  export enum DeploymentStage {
    TestSuite = 0,
    Test = 1,
    Demo = 2,
    Acceptance = 3,
    Production = 4,
    Unknown = 5,
  }
  
  export class EnumDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export enum ErrorCodeStatus {
    New = 0,
    Solved = 10,
  }
  
  export enum ErrorCodeTypes {
    UserError = 0,
    ServerError = 1,
  }
  
  export enum EVAExecutionContextType {
    Unknown = 0,
    WebService = 1,
    MessageConsumer = 2,
    Task = 3,
  }
  
  export enum EventType {
    Info = 0,
    Success = 1,
    Warning = 2,
    Error = 3,
  }
  
  export enum FilterType {
    Equals = 0,
    StartsWith = 1,
    EndsWith = 2,
    Contains = 3,
    TableValuedParameter = 4,
  }
  
  export class FlagsEnumDto {
    ID : number; // Int32
    Name : string; 
    IDs : number[]; 
    Names : string[]; 
  }
  
  export enum FunctionalityScope {
    None = 0,
    Create = 1,
    Edit = 2,
    Delete = 4,
    View = 8,
    Manage = 31,
  }
  
  export class FunctionalityWithScope {
    Functionality : string; 
    Scope : EVA.Framework.FunctionalityScope; 
  }
  
  export enum MappingProfiles {
    Get = 0,
    Update = 1,
    Create = 2,
  }
  
  export enum NotificationPriority {
    Normal = 0,
    Low = 1,
  }
  
  export enum OrganizationUnitTypes {
    None = 0,
    Shop = 1,
    WebShop = 2,
    Container = 4,
    Pickup = 8,
    Warehouse = 16,
    Country = 36,
    Franchise = 64,
    EVA = 128,
    TestOrganizationUnit = 256,
    DisableLogin = 512,
    Supplier = 1024,
    Consignment = 3072,
    B2b = 4096,
    Region = 8196,
  }
  
  export class PageConfigBase {
    Start : number; // Int32
    Limit : number; // Int32
    SortProperty : string; 
    SortDirection : EVA.Framework.SortDirection; 
  }
  
  export class PageConfig extends EVA.Framework.PageConfigBase {
    Filter : any; 
  }
  
  export class PageConfigGeneric<T> extends EVA.Framework.PageConfigBase {
    Filter : T; 
  }
  
  export class PagedResult {
  }
  
  export class PagedResultGeneric<TModel> extends EVA.Framework.PagedResult {
    PageConfig : EVA.Framework.PageConfig; 
    Page : TModel[]; 
    Offset : number; // Int32
    Limit : number; // Int32
    Total : number; // Int32
    SortProperty : string; 
    SortDirection : EVA.Framework.SortDirection; 
    Filters : { [ key : string ] : string }; 
    NumberOfPages : number; // Int32
    CurrentPage : number; // Int32
  }
  
  export class PageTokenConfig {
  }
  
  export class PageTokenConfigGeneric<T> extends EVA.Framework.PageTokenConfig {
    Filter : T; 
    Limit : number; // Int32
  }
  
  export class RecurringTask {
    Cron : string; 
    ID : string; 
    LastExecution? : string; // DateTime, nullable
    NextExecution? : string; // DateTime, nullable
    IsDeleted : boolean; 
    Type : string; 
    TypeName : string; 
    Args : any[]; 
  }
  
  export enum RedisIntents {
    Default = 0,
    Cache = 1,
  }
  
  export enum RunStartupComponentSideEffectsSettings {
    DoNotRun = 0,
    Prompt = 1,
    AlwaysRun = 2,
  }
  
  export class ScrollablePageConfig<T> {
    Filter : T; 
    NextResultToken : string; 
    Limit? : number; // Int32, nullable
  }
  
  export class ScrollablePagedResult<T> {
    Page : T[]; 
    PreviousResultToken : string; 
    NextResultToken : string; 
  }
  
  export enum SettingExposureTypes {
    Normal = 0,
    ApplicationConfiguration = 1,
  }
  
  export enum SettingSensitivityTypes {
    Normal = 0,
    Sensitive = 1,
    Masked = 2,
    Encrypted = 6,
  }
  
  export enum SortDirection {
    Ascending = 0,
    Descending = 1,
    NotSorted = 2,
  }
  
  export class SortFieldDescriptor {
    FieldName : string; 
    Direction : EVA.Framework.SortDirection; 
  }
  
  export enum StartupPriority {
    Normal = 0,
    Later = 1,
    AsLateAsPossible = 2,
    Deferred = 3,
    AsSoonAsPossible = -2,
    Sooner = -1,
  }
  
  export enum StartupType {
    Normal = 0,
    Always = 1,
  }
  
  export enum UserTypes {
    None = 0,
    Employee = 1,
    Customer = 2,
    Anonymous = 4,
    Business = 8,
    System = 17,
    Migrated = 32,
    Debtor = 64,
    LimitedTrust = 256,
    Tester = 512,
    RemovedByRequest = 1024,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Global {
  
  export class GetGlobalOrganizationUnitsResponseGlobalOrganizationUnitCashHandlerDto {
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class GetGlobalCurrenciesResponseCurrency {
    Name : string; 
    Description : string; 
    Precision : number; // Int16
  }
  
  export class GetGlobalRolesResponseFunctionality {
    Name : string; 
    Scope : EVA.Framework.FunctionalityScope; 
  }
  
  export class GetGlobalBlob extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalBlobResponse> {
    BlobID : string; 
  }
  
  export class GetGlobalBlobInfo extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalBlobInfoResponse> {
    BlobID : string; 
  }
  
  export class GetGlobalBlobInfoResponse extends EVA.API.ResponseMessage {
    OriginalName : string; 
    Category : string; 
    ExpireDate? : string; // DateTime, nullable
    MimeType : string; 
  }
  
  export class GetGlobalBlobResponse extends EVA.API.ResponseMessage {
    Data : string; 
  }
  
  export class GetGlobalCurrencies extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalCurrenciesResponse> {
  }
  
  export class GetGlobalCurrenciesResponse extends EVA.API.ResponseMessage {
    Currencies : EVA.Global.GetGlobalCurrenciesResponseCurrency[]; 
  }
  
  export class GetGlobalMessageTemplates extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalMessageTemplatesResponse> {
  }
  
  export class GetGlobalMessageTemplatesResponse extends EVA.API.ResponseMessage {
    Templates : EVA.Global.GetGlobalMessageTemplatesResponseMessageTemplate[]; 
  }
  
  export class GetGlobalOrganizationUnits extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalOrganizationUnitsResponse> {
  }
  
  export class GetGlobalOrganizationUnitSets extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalOrganizationUnitSetsResponse> {
  }
  
  export class GetGlobalOrganizationUnitSetsResponse extends EVA.API.ResponseMessage {
    OrganizationUnitSets : EVA.Global.GetGlobalOrganizationUnitSetsResponseGlobalOrganizationUnitSet[]; 
  }
  
  export class GetGlobalOrganizationUnitsResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Global.GetGlobalOrganizationUnitsResponseGlobalOrganizationUnit[]; 
  }
  
  export class GetGlobalPaymentTypes extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalPaymentTypesResponse> {
  }
  
  export class GetGlobalPaymentTypesResponse extends EVA.API.ResponseMessage {
    PaymentTypes : EVA.Global.GetGlobalPaymentTypesResponsePaymentTypeDto[]; 
  }
  
  export class GetGlobalRegions extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalRegionsResponse> {
  }
  
  export class GetGlobalRegionsResponse extends EVA.API.ResponseMessage {
    Regions : EVA.Global.GetGlobalRegionsResponseRegion[]; 
  }
  
  export class GetGlobalRoles extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalRolesResponse> {
  }
  
  export class GetGlobalRolesResponse extends EVA.API.ResponseMessage {
    Roles : EVA.Global.GetGlobalRolesResponseRole[]; 
    RoleSets : EVA.Global.GetGlobalRolesResponseRoleSet[]; 
  }
  
  export class GetGlobalSettings extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalSettingsResponse> {
    RegionCode : string; 
  }
  
  export class GetGlobalSettingsResponse extends EVA.API.ResponseMessage {
    OrganizationUnits : EVA.Global.GetGlobalSettingsResponseOrganizationUnitSettings[]; 
  }
  
  export class GetGlobalUser extends EVA.API.RequestMessageGeneric<EVA.Global.GetGlobalUserResponse> {
    RegionCode : string; 
    Username : string; 
    Password : string; 
    AsEmployee? : boolean; 
  }
  
  export class GetGlobalUserResponse extends EVA.API.ResponseMessage {
    User : EVA.Global.GetGlobalUserResponseUserDto; 
    Roles : EVA.Global.GetGlobalUserResponseOrganizationUnitRole[]; 
    Functionalities : EVA.Global.GetGlobalUserResponseOrganizationUnitFunctionality[]; 
  }
  
  export class GetGlobalOrganizationUnitsResponseGlobalOrganizationUnit {
    GlobalID : string; 
    BackendID : string; 
    Name : string; 
    Description : string; 
    Notes : string; 
    ParentID : string; 
    RegisterCashLimit? : number; // Decimal, nullable
    SafeCashLimit? : number; // Decimal, nullable
    CashHandler : EVA.Global.GetGlobalOrganizationUnitsResponseGlobalOrganizationUnitCashHandlerDto; 
    BackendRelationID : string; 
    BackendCompanyID : string; 
    BranchNumber : string; 
    GlobalLocationNumber : string; 
    OpeningHours : EVA.Global.GetGlobalOrganizationUnitsResponseGlobalOrganizationUnitOpeningHour[]; 
    Address : EVA.Core.AddressDataDto; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    Type : EVA.Framework.OrganizationUnitTypes; 
    Status : EVA.Core.OrganizationUnitStatus; 
    Subnet : string; 
    BankAccount : string; 
    VatNumber : string; 
    RegistrationNumber : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
    UseForAccounting : boolean; 
    AttachedToUserID : string; 
    IpAddress : string; 
    CountryID : string; 
    LanguageID : string; 
    CurrencyID : string; 
    CostPriceCurrencyID : string; 
    TimeZone : string; 
    AccountingOrganizationUnitID : string; 
    AssortmentCode : string; 
    RoleSetID : string; 
    RegionID : string; 
    CocNumber : string; 
  }
  
  export class GetGlobalOrganizationUnitSetsResponseGlobalOrganizationUnitSet {
    GlobalID : string; 
    OrganizationUnitGlobalID : string; 
    SerializedDefinition : string; 
    Name : string; 
    Type : EVA.Core.OrganizationUnitSetTypes; 
    Subsets : EVA.Global.GetGlobalOrganizationUnitSetsResponseSubset[]; 
  }
  
  export class GetGlobalMessageTemplatesResponseMessageTemplate {
    Name : string; 
    OrganizationUnitGlobalID : string; 
    LanguageID : string; 
    CountryID : string; 
    Template : string; 
    Helpers : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Layout : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperPropertiesData : string; 
    IsDisabled : boolean; 
    GlobalID : string; 
  }
  
  export class GetGlobalOrganizationUnitsResponseGlobalOrganizationUnitOpeningHour {
    DayOfWeek? : System.Private.CoreLib.DayOfWeek; 
    StartTime? : any; // TimeSpan, nullable
    EndTime? : any; // TimeSpan, nullable
    Date? : string; // DateTime, nullable
    Description : string; 
    ClosedForReceipts : boolean; 
  }
  
  export class GetGlobalUserResponseOrganizationUnitFunctionality {
    OrganizationUnitGlobalID : string; 
    Functionality : string; 
    Scope : EVA.Framework.FunctionalityScope; 
  }
  
  export class GetGlobalUserResponseOrganizationUnitRole {
    OrganizationUnitGlobalID : string; 
    RoleGlobalID : string; 
    UserType : EVA.Framework.UserTypes; 
  }
  
  export class GetGlobalSettingsResponseOrganizationUnitSettings {
    GlobalID : string; 
    Settings : EVA.Global.GetGlobalSettingsResponseSetting[]; 
  }
  
  export class GetGlobalPaymentTypesResponsePaymentTypeDto {
    OrganizationUnitSetGlobalID : string; 
    PaymentMethodCode : string; 
    Name : string; 
    Code : string; 
    IsRoundingType : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
    IsExternal : boolean; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
  }
  
  export class GetGlobalRegionsResponseRegion {
    Name : string; 
    Code : string; 
    ApiEndPoint : string; 
    IsIsolated : boolean; 
    IsPrimary : boolean; 
    Prefix : string; 
  }
  
  export class GetGlobalRolesResponseRole {
    Name : string; 
    Code : string; 
    UserType : EVA.Framework.UserTypes; 
    GlobalID : string; 
    Functionalities : EVA.Global.GetGlobalRolesResponseFunctionality[]; 
  }
  
  export class GetGlobalRolesResponseRoleSet {
    Name : string; 
    GlobalID : string; 
    Roles : string[]; 
  }
  
  export class GetGlobalSettingsResponseSetting {
    Name : string; 
    Value : string; 
    SensitivityTypeID : number; // Int32
  }
  
  export class GetGlobalOrganizationUnitSetsResponseSubset {
    GlobalID : string; 
    Type : EVA.Core.OrganizationUnitSetOperatorTypes; 
    SequenceNumber : number; // Int32
  }
  
  export class GetGlobalUserResponseUserDto {
    EmailAddress : string; 
    BackendRelationID : string; 
    Initials : string; 
    FirstName : string; 
    LastName : string; 
    DateOfBirth? : string; // DateTime, nullable
    Gender : string; 
    PlaceOfBirth : string; 
    LanguageID : string; 
    CountryID : string; 
    Type : EVA.Framework.UserTypes; 
    Nickname : string; 
    FiscalID : string; 
    SocialSecurityNumber : string; 
    BankAccount : string; 
    PhoneNumber : string; 
    TimeZone : string; 
    BackendSystemID : string; 
    BackendID : string; 
    GlobalID : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Makeup {
  
  export class BlockDto {
    ID : string; 
    Type : string; 
    Input : { [ key : string ] : EVA.Makeup.BlockInputDto }; 
    CssClasses : string[]; 
    Name : string; 
    Template : string; 
    Content : string; 
    Width : string; 
    Height : string; 
    CssStyles : string; 
    IsCurrent : boolean; 
    Version : number; // Int32
    VersionDescription : string; 
  }
  
  export class BlockInputDto {
    Value : any; 
    Description : string; 
    Type : string; 
    IsOptional : boolean; 
  }
  
  export class BlockVersionDto {
    ID : string; 
    Version : number; // Int32
    IsCurrent : boolean; 
    VersionDescription : string; 
  }
  
  export class ConfigurationProfileAggregationConfigDto {
    TypeID : string; 
    Type : string; 
    InitialShownItems : number; // Int32
    Sorting : string[][]; 
  }
  
  export class ConfigurationProfileDto {
    SiteID : number; // Int32
    LanguageID : string; 
    AggregationConfigs : EVA.Makeup.ConfigurationProfileAggregationConfigDto[]; 
    DefaultAggregationOptions : { [ key : string ] : EVA.Core.AggregationFilterModel }; 
    ProductPropertyTypeMappings : EVA.Makeup.ProductPropertyTypeMappingDto[]; 
    DefaultFilters : { [ key : string ] : EVA.Core.FilterModel }; 
    DefaultPageLimit : EVA.Makeup.ConfigurationProfilePageLimitDto; 
    DefaultSort : EVA.Makeup.ConfigurationProfileSortOptionsDto[]; 
    DefaultIncludedFields : string[]; 
    AvailableSortOptions : EVA.Makeup.ConfigurationProfileSortOptionsDto[]; 
    AvailablePageLimits : EVA.Makeup.ConfigurationProfilePageLimitDto[]; 
  }
  
  export class ConfigurationProfilePageLimitDto {
    Limit : number; // Int32
    LimitDisplay : string; 
  }
  
  export enum ConfigurationProfileSortOptionsDirection {
    Ascending = 0,
    Descending = 1,
  }
  
  export class ConfigurationProfileSortOptionsDto {
    FieldName : string; 
    SortDisplay : string; 
    Direction : EVA.Makeup.ConfigurationProfileSortOptionsDirection; 
  }
  
  export class ContainerChildDto {
    CssClasses : string[]; 
    Blocks : EVA.Makeup.PageBlockDto[]; 
    Width : string; 
    Height : string; 
  }
  
  export class ContainerDto {
    CssClasses : string[]; 
    Children : EVA.Makeup.ContainerChildDto[]; 
    Width : string; 
    Height : string; 
  }
  
  export class CreateEventModel {
    Name : string; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
    IsActive : boolean; 
  }
  
  export class EventDto {
    ID : number; // Int32
    Name : string; 
    StartDate? : string; // DateTime, nullable
    EndDate? : string; // DateTime, nullable
    IsActive : boolean; 
  }
  
  export interface IPageBlock {
    ID : string; 
    Type : string; 
    CssClasses : string[]; 
    Name : string; 
    Template : string; 
    Width : string; 
    Height : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupActivateEvent extends EVA.API.RequestMessageWithEmptyResponse {
    EventID : number; // Int32
  }
  
  export class MakeupCreateBlock extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupCreateBlockResponse> {
    Block : EVA.Makeup.BlockDto; 
  }
  
  export class MakeupCreateBlockResponse extends EVA.API.ResponseMessage {
    ID : string; 
  }
  
  export class MakeupCreateEvent extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupCreateEventResponse> {
    Event : EVA.Makeup.CreateEventModel; 
  }
  
  export class MakeupCreateEventResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class MakeupCreateMenu extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupCreateMenuResponse> {
    Menu : EVA.Makeup.MenuDto; 
  }
  
  export class MakeupCreateMenuResponse extends EVA.API.ResponseMessage {
    ID : string; 
  }
  
  export class MakeupCreatePage extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupCreatePageResponse> {
    Page : EVA.Makeup.PageDto; 
  }
  
  export class MakeupCreatePageResponse extends EVA.API.ResponseMessage {
    ID : string; 
  }
  
  export class MakeupCreateSite extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupCreateSiteResponse> {
    Name : string; 
    OrganizationUnitID : number; // Int32
    LanguageID : string; 
    BackendID : string; 
  }
  
  export class MakeupCreateSiteResponse extends EVA.API.ResponseMessage {
    SiteID : number; // Int32
    AnonymousUserToken : string; 
  }
  
  export class MakeupDeactivateEvent extends EVA.API.RequestMessageWithEmptyResponse {
    EventID : number; // Int32
  }
  
  export class MakeupDeleteBlock extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupDeleteEvent extends EVA.API.RequestMessageWithEmptyResponse {
    EventID : number; // Int32
  }
  
  export class MakeupDeleteMenu extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    LanguageID : string; 
  }
  
  export class MakeupDeletePage extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    LanguageID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupGetBlockByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetBlockByIDResponse> {
    ID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupGetBlockByIDResponse extends EVA.API.ResponseMessage {
    Block : EVA.Makeup.BlockDto; 
  }
  
  export class MakeupGetConfigurationProfile extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetConfigurationProfileResponse> {
    LanguageID : string; 
  }
  
  export class MakeupGetConfigurationProfileResponse extends EVA.API.ResponseMessage {
    Configuration : EVA.Makeup.ConfigurationProfileDto; 
  }
  
  export class MakeupGetCurrentBlockVersion extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetCurrentBlockVersionResponse> {
    ID : string; 
  }
  
  export class MakeupGetCurrentBlockVersionResponse extends EVA.API.ResponseMessage {
    Version : number; // Int32
    VersionDescription : string; 
  }
  
  export class MakeupGetCurrentPageVersion extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetCurrentPageVersionResponse> {
    ID : string; 
    LanguageID : string; 
  }
  
  export class MakeupGetCurrentPageVersionResponse extends EVA.API.ResponseMessage {
    Version : number; // Int32
    VersionDescription : string; 
  }
  
  export class MakeupGetEventByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetEventByIDResponse> {
    ID : number; // Int32
  }
  
  export class MakeupGetEventByIDResponse extends EVA.API.ResponseMessage {
    Event : EVA.Makeup.EventDto; 
  }
  
  export class MakeupGetMenuByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetMenuByIDResponse> {
    ID : string; 
    LanguageID : string; 
  }
  
  export class MakeupGetMenuByIDResponse extends EVA.API.ResponseMessage {
    Menu : EVA.Makeup.MenuDto; 
  }
  
  export class MakeupGetPageByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetPageByIdResponse> {
    ID : string; 
    LanguageID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupGetPageByIdResponse extends EVA.API.ResponseMessage {
    Page : EVA.Makeup.PageDto; 
  }
  
  export class MakeupGetPageByPath extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetPageByPathResponse> {
    Path : string; 
    LanguageID : string; 
  }
  
  export class MakeupGetPageByPathResponse extends EVA.API.ResponseMessage {
    Page : EVA.Makeup.PageDto; 
    PathContext : EVA.Makeup.PathContext; 
  }
  
  export class MakeupGetPageMap extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetPageMapResponse> {
    LanguageID : string; 
  }
  
  export class MakeupGetPageMapResponse extends EVA.API.ResponseMessage {
    PageMap : { [ key : string ] : EVA.Makeup.MakeupPageMapSection }; 
  }
  
  export class MakeupGetRenderedBlockByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetRenderedBlockByIDResponse> {
    ID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupGetRenderedBlockByIDResponse extends EVA.API.ResponseMessage {
    Block : EVA.Makeup.BlockDto; 
  }
  
  export class MakeupGetRenderedPageByID extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetRenderedPageByIDResponse> {
    ID : string; 
    LanguageID : string; 
    Version? : number; // Int32, nullable
  }
  
  export class MakeupGetRenderedPageByIDResponse extends EVA.API.ResponseMessage {
    Page : EVA.Makeup.RenderedPageDto; 
  }
  
  export class MakeupGetRenderedPageByPath extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetRenderedPageByPathResponse> {
    Path : string; 
    LanguageID : string; 
  }
  
  export class MakeupGetRenderedPageByPathResponse extends EVA.API.ResponseMessage {
    Page : EVA.Makeup.RenderedPageDto; 
  }
  
  export class MakeupGetRenderedPagesByPartialPath extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetRenderedPagesByPartialPathResponse> {
    PartialPath : string; 
    LanguageID : string; 
  }
  
  export class MakeupGetRenderedPagesByPartialPathResponse extends EVA.API.ResponseMessage {
    Pages : EVA.Makeup.RenderedPageDto[]; 
  }
  
  export class MakeupGetSiteConfiguration extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetSiteConfigurationResponse> {
    SiteID : number; // Int32
    LanguageID : string; 
  }
  
  export class MakeupGetSiteConfigurationResponse extends EVA.API.ResponseMessage {
    Configuration : any; 
  }
  
  export class MakeupGetSiteConfigurationSchema extends EVA.API.RequestMessageGeneric<EVA.Makeup.MakeupGetSiteConfigurationSchemaResponse> {
    SiteID : number; // Int32
  }
  
  export class MakeupGetSiteConfigurationSchemaResponse extends EVA.API.ResponseMessage {
    Schema : any; 
  }
  
  export class MakeupListBlocks extends EVA.API.PagedResultRequest<EVA.Makeup.MakeupListBlocksResponse> {
    Type : string; 
  }
  
  export class MakeupListBlocksResponse extends EVA.API.PagedResultResponse<EVA.Makeup.BlockDto> {
  }
  
  export class MakeupListBlockVersions extends EVA.API.PagedResultRequest<EVA.Makeup.MakeupListBlockVersionsResponse> {
    ID : string; 
  }
  
  export class MakeupListBlockVersionsResponse extends EVA.API.PagedResultResponse<EVA.Makeup.BlockVersionDto> {
  }
  
  export class MakeupListEvents extends EVA.API.PagedResultRequest<EVA.Makeup.MakeupListEventsResponse> {
    IsActive? : boolean; 
  }
  
  export class MakeupListEventsResponse extends EVA.API.PagedResultResponse<EVA.Makeup.EventDto> {
  }
  
  export class MakeupListMenus extends EVA.API.PagedResultRequest<EVA.Makeup.MakeupListMenusResponse> {
    LanguageID : string; 
  }
  
  export class MakeupListMenusResponse extends EVA.API.PagedResultResponse<EVA.Makeup.MenuDto> {
  }
  
  export class MakeupListPageVersions extends EVA.API.PagedResultRequest<EVA.Makeup.MakeupListPageVersionsResponse> {
    ID : string; 
    LanguageID : string; 
  }
  
  export class MakeupListPageVersionsResponse extends EVA.API.PagedResultResponse<EVA.Makeup.PageVersionDto> {
  }
  
  export class MakeupPageMapSection {
    Name : string; 
    Sections : EVA.Makeup.MakeupPageMapSection[]; 
    Description : string; 
    IsBase : boolean; 
    Pages : EVA.Makeup.MakeupPageMapSectionPage[]; 
  }
  
  export class MakeupPageMapSectionPage {
    ID : string; 
    Name : string; 
    Path : string; 
    IsBase : boolean; 
  }
  
  export class MakeupPublishBlockVersion extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    Version : number; // Int32
  }
  
  export class MakeupPublishPageVersion extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    LanguageID : string; 
    Version : number; // Int32
  }
  
  export class MakeupReplaceConfigurationProfile extends EVA.API.RequestMessageWithEmptyResponse {
    Configuration : EVA.Makeup.ConfigurationProfileDto; 
    LanguageID : string; 
  }
  
  export class MakeupReplaceMenu extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    Menu : EVA.Makeup.MenuDto; 
  }
  
  export class MakeupReplacePage extends EVA.API.RequestMessageWithEmptyResponse {
    ID : string; 
    Page : EVA.Makeup.PageDto; 
  }
  
  export class MakeupReplaceSiteConfiguration extends EVA.API.RequestMessageWithEmptyResponse {
    SiteID : number; // Int32
    LanguageID : string; 
    Configuration : any; 
  }
  
  export class MakeupReplaceSiteConfigurationSchema extends EVA.API.RequestMessageWithEmptyResponse {
    SiteID : number; // Int32
    Schema : any; 
  }
  
  export class MakeupUpdateBlock extends EVA.API.RequestMessageWithEmptyResponse {
    Block : EVA.Makeup.BlockDto; 
  }
  
  export class MenuDto {
    ID : string; 
    Name : string; 
    LanguageID : string; 
    Types : EVA.Makeup.MenuTypeDto[]; 
  }
  
  export class MenuItemDto {
    Name : string; 
    Path : string; 
    ImageBlobID : string; 
    Items : EVA.Makeup.MenuItemDto[]; 
  }
  
  export class MenuTypeDto {
    Type : string; 
    Items : EVA.Makeup.MenuItemDto[]; 
  }
  
  export class MetaTagDto {
    Attribute : string; 
    Content : string; 
    Type : string; 
  }
  
  export class PageBlockDto implements EVA.Makeup.IPageBlock {
    ID : string; 
    Type : string; 
    Input : { [ key : string ] : EVA.Makeup.BlockInputDto }; 
    CssClasses : string[]; 
    CssStyles : string; 
    Name : string; 
    Content : string; 
    Template : string; 
    Width : string; 
    Height : string; 
    Version? : number; // Int32, nullable
  }
  
  export class PageDto {
    ID : string; 
    LanguageID : string; 
    Name : string; 
    Description : string; 
    Type : string; 
    SearchProductsRequest : EVA.Core.Services.SearchProducts; 
    Path : string; 
    Containers : EVA.Makeup.ContainerDto[]; 
    CssClasses : string[]; 
    MetaTags : EVA.Makeup.MetaTagDto[]; 
    Version : number; // Int32
    VersionDescription : string; 
    IsCurrent : boolean; 
    CssStyles : string; 
    StyleSheetBlobID : string; 
    Slug : string; 
    Blocks : EVA.Makeup.PageBlockDto[]; 
    Event : EVA.Makeup.EventDto; 
    EventID? : number; // Int32, nullable
    RequiresAuthentication : boolean; 
    RequiredFunctionality : string; 
  }
  
  export class PageVersionDto {
    ID : string; 
    Version : number; // Int32
    IsCurrent : boolean; 
    VersionDescription : string; 
  }
  
  export class PathContext {
    Path : string; 
    Parameters : EVA.Makeup.PathParameter[]; 
  }
  
  export class PathParameter {
    Key : string; 
    Value : any; 
  }
  
  export class ProductPropertyTypeMappingDto {
    Key : string; 
    ProductPropertyTypeID : string; 
  }
  
  export class RenderedPageDto {
    ID : string; 
    LanguageID : string; 
    Name : string; 
    Description : string; 
    Type : string; 
    SearchProductsRequest : EVA.Core.Services.SearchProducts; 
    Path : string; 
    Containers : EVA.Makeup.ContainerDto[]; 
    CssClasses : string[]; 
    MetaTags : EVA.Makeup.MetaTagDto[]; 
    StyleSheetBlobID : string; 
    Slug : string; 
    RequiresAuthentication : boolean; 
    RequiredFunctionality : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Media.ImageProvider {
  
  export enum PaddingOptions {
    PadNone = 0,
    PadWidth = 1,
    PadHeight = 2,
    PadBoth = 3,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Migrations {
  
  export enum Developers {
    Mark = 10000,
    Julian = 20000,
    AartJan = 30000,
    Geert = 40000,
    Coen = 70000,
    Kevin = 80000,
    Other = 90000,
  }
  
  export enum MigrationDirection {
    Up = 1,
    Down = 2,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.PIM.Common {
  
  export enum ContentEditTypes {
    Product = 1,
    ProductPropertyType = 2,
    ProductPropertyCategory = 3,
  }
  
  export enum ContentLayerTypes {
    UserLayer = 0,
    SystemLayer = 1,
  }
  
  export enum ContentMergeTypes {
    MergeRevisions = 0,
    MergeArrays = 1,
    MergeLayers = 2,
  }
  
  export enum ProductPropertyTypeDataTypes {
    None = 0,
    Integer = 1,
    Double = 2,
    Boolean = 3,
    String = 4,
    Blob = 5,
    Date = 6,
    RichText = 7,
  }
  
  export enum ProductPropertyTypeInheritanceTypes {
    NormalInheritance = 0,
    NoInheritance = 1,
  }
  
  export enum ProductPropertyTypeIntents {
    RichAttribute = 0,
    SimpleField = 1,
    RootLevelOnly = 2,
  }
  
  export enum ProductPropertyTypeRequired {
    NotRequired = 0,
    RequiredOnEdit = 1,
    RequireOnApplyRevision = 2,
  }
  
  export enum ProductPropertyTypeSearchTypes {
    None = 0,
    Keyword = 1,
    Text = 2,
    IsHidden = 4,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.PIM.Core {
  
  export class AbstractComposeProducts extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ComposeResponse> {
    LanguageIDs : string[]; 
  }
  
  export class AddReferenceDataToProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ProductID : number; // Int32
    Data : any; 
    Name : string; 
  }
  
  export class ProductSearchStrategyModelAggregationStrategy {
    VariationAggregations : EVA.PIM.Core.ProductSearchStrategyModelAggregationStrategyProductVariationAggregation[]; 
    StockFilterType : EVA.PIM.Core.StockFilterTypes; 
  }
  
  export class ProductSearchConfigurationModelAnalyzer implements EVA.PIM.Core.ProductSearchConfigurationModelIHasCulture {
    Name : string; 
    LanguageID : string; 
    Type : string; 
    Tokenizer : string; 
    Filters : string[]; 
    CharFilters : string[]; 
  }
  
  export class ApplyRevision extends EVA.API.RequestMessageWithEmptyResponse {
    RevisionID? : number; // Int32, nullable
  }
  
  export class GetAssortmentContentCulturesResponseAssortmentContentCulture {
    AssortmentID : number; // Int32
    AssortmentName : string; 
    CultureID : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export enum BoostMode {
    Multiply = 0,
    Replace = 1,
    Sum = 2,
    Average = 3,
    Max = 4,
    Min = 5,
  }
  
  export class BrandDto {
    ID : number; // Int32
    Name : string; 
    BackendID : string; 
  }
  
  export class CancelComposeProducts extends EVA.API.RequestMessageWithEmptyResponse {
    CompositionID : string; 
  }
  
  export class ProductSearchConfigurationModelCharFilter implements EVA.PIM.Core.ProductSearchConfigurationModelIHasCulture {
    Name : string; 
    LanguageID : string; 
    Type : string; 
    Options : any; 
  }
  
  export class ComposeAllProducts extends EVA.PIM.Core.AbstractComposeProducts {
  }
  
  export class ComposeProducts extends EVA.PIM.Core.AbstractComposeProducts {
    ProductIDs : number[]; 
  }
  
  export class ComposeProducts2 extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ComposeProducts2Response> {
    ProductIDs : number[]; 
  }
  
  export class ComposeProducts2Response extends EVA.API.ResponseMessage {
    CompositionID : string; 
  }
  
  export class ComposePropertyTypes extends EVA.API.RequestMessageWithEmptyResponse {
  }
  
  export class ComposeResponse extends EVA.API.ResponseMessage {
    UID : string; 
  }
  
  export class ComposeRevision extends EVA.PIM.Core.AbstractComposeProducts {
    RevisionID : number; // Int32
  }
  
  export class ListContentCultureMappingResponseContentCultureMappingDto {
    ID : number; // Int32
    SourceLanguageID : string; 
    SourceCountryID : string; 
    ContentCultureID : string; 
    ContentLanguageID : string; 
    ContentCountryID : string; 
  }
  
  export class ContentCultureMappingFilter {
    SourceLanguageID : string; 
    SourceCountryID : string; 
    ContentLanguageID : string; 
    ContentCountryID : string; 
  }
  
  export enum ContentUpdateTypes {
    Replace = 0,
    Merge = 1,
  }
  
  export class CreateAssortmentContentCulture extends EVA.API.RequestMessageWithEmptyResponse {
    AssortmentID : number; // Int32
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class CreateBrand extends EVA.API.RequestMessageWithEmptyResponse {
    BackendID : string; 
    Name : string; 
  }
  
  export class CreateContentCultureMapping extends EVA.API.RequestMessageWithEmptyResponse {
    SourceLanguageID : string; 
    SourceCountryID : string; 
    ContentLanguageID : string; 
    ContentCountryID : string; 
  }
  
  export class CreatedLayer {
    ID : number; // Int32
    Name : string; 
    ApplicationID? : number; // Int32, nullable
    Description : string; 
    Level : number; // Int32
    CountryID : string; 
  }
  
  export class CreatedRevision {
    ID : number; // Int32
    Name : string; 
    ApplicationID? : number; // Int32, nullable
  }
  
  export class CreateLayer extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.CreateLayerResponse> {
    ApplicationID? : number; // Int32, nullable
    CountryID : string; 
    Description : string; 
    LanguageID : string; 
    Level : number; // Int32
    Name : string; 
  }
  
  export class CreateLayerResponse extends EVA.API.ResponseMessage {
    Result : EVA.PIM.Core.CreatedLayer; 
  }
  
  export class CreateNewSearchDataIndex extends EVA.API.RequestMessageWithEmptyResponse {
    DeleteOldIndex : boolean; 
  }
  
  export class CreateOrReplaceProductSearchConfiguration extends EVA.API.RequestMessageWithEmptyResponse {
    Configuration : EVA.PIM.Core.ProductSearchConfigurationModel; 
  }
  
  export class CreateProduct extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.CreateProductResponse> {
    PrimitiveName : string; 
    ProductType : EVA.Core.ProductTypes; 
    BrandID? : number; // Int32, nullable
    BackendID : string; 
    BackendSystemID : string; 
    OrganizationUnitID? : number; // Int32, nullable
    CustomID : string; 
    TaxCodeID? : number; // Int32, nullable
    LogicalLevel : string; 
    LedgerClassID : string; 
  }
  
  export class CreateProductPropertyCategory extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.CreateProductPropertyCategoryResponse> {
    CategoryID : string; 
    EditFunctionality : string; 
  }
  
  export class CreateProductPropertyCategoryResponse extends EVA.API.ResponseMessage {
  }
  
  export class CreateProductPropertyType extends EVA.API.RequestMessageWithEmptyResponse {
    TypeID : string; 
    CategoryID : string; 
    DataType : EVA.PIM.Common.ProductPropertyTypeDataTypes; 
    SearchType : EVA.PIM.Common.ProductPropertyTypeSearchTypes; 
    Options : EVA.PIM.Core.ProductPropertyTypeOptions; 
    IsArray : boolean; 
    IsEnum : boolean; 
    EditFunctionality : string; 
  }
  
  export class CreateProductPropertyTypeEnumValue extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.CreateProductPropertyTypeEnumValueResponse> {
    ProductPropertyTypeID : string; 
    Identifier : number; // Int32
    Value : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class CreateProductPropertyTypeEnumValueResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductSearchStrategy extends EVA.API.RequestMessageGeneric<EVA.API.CreateResponse> {
    CountryID : string; 
    LanguageID : string; 
    Name : string; 
    Code : string; 
    Strategy : EVA.PIM.Core.ProductSearchStrategyModel; 
  }
  
  export class CreateRevision extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.CreateRevisionResponse> {
    ApplicationID? : number; // Int32, nullable
    Name : string; 
  }
  
  export class CreateRevisionResponse extends EVA.API.ResponseMessage {
    Result : EVA.PIM.Core.CreatedRevision; 
  }
  
  export class DeleteAssortmentContentCulture extends EVA.API.RequestMessageWithEmptyResponse {
    AssortmentID : number; // Int32
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class DeleteContentCultureMapping extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductPropertyTypeEnumValue extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductSearchStrategy extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteRevision extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DownloadProductExcel extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class EditProduct extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    RevisionID? : number; // Int32, nullable
    Edits : EVA.PIM.Core.ProductEdit[]; 
  }
  
  export class EditProductPropertyCategory extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.EditProductPropertyCategoryResponse> {
    ID : string; 
    RevisionID : number; // Int32
    Edits : EVA.PIM.Core.ProductPropertyCategoryEdit[]; 
  }
  
  export class EditProductPropertyCategoryResponse extends EVA.API.ResponseMessage {
  }
  
  export class EditProductPropertyType extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.EditProductPropertyTypeResponse> {
    ID : string; 
    RevisionID? : number; // Int32, nullable
    Edits : EVA.PIM.Core.ProductPropertyTypeEdit[]; 
    SearchType : EVA.PIM.Common.ProductPropertyTypeSearchTypes; 
    Options : EVA.PIM.Core.ProductPropertyTypeOptions; 
  }
  
  export class EditProductPropertyTypeResponse extends EVA.API.ResponseMessage {
  }
  
  export class ExportProductContentExcel extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    Query : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
    IncludedFields : string[]; 
  }
  
  export class ProductSearchStrategyModelFilterCondition {
    ProductPropertyTypeID : string; 
    FilterValue : string; 
  }
  
  export class GenerateProductBarcodeExcelSample extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class GenerateProductContentExcelSample extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class GenerateProductExcelSample extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
  }
  
  export class GetAssortmentContentCultures extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetAssortmentContentCulturesResponse> {
  }
  
  export class GetAssortmentContentCulturesResponse extends EVA.API.ResponseMessage {
    ContentCultures : EVA.PIM.Core.GetAssortmentContentCulturesResponseAssortmentContentCulture[]; 
  }
  
  export class GetAvailableEnumValuesForProductPropertyType extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetAvailableEnumValuesForProductPropertyTypeResponse> {
    TypeID : string; 
  }
  
  export class GetAvailableEnumValuesForProductPropertyTypeResponse extends EVA.API.ResponseMessage {
    Values : { [ key : number ] : string }; 
  }
  
  export class GetBrand extends EVA.API.GetRequestGeneric<EVA.PIM.Core.GetBrandResponse> {
  }
  
  export class GetBrandResponse extends EVA.API.ResponseMessage {
    Result : EVA.PIM.Core.BrandDto; 
  }
  
  export class GetCompositionProgress extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetCompositionProgressResponse> {
    RevisionID? : number; // Int32, nullable
    UID : string; 
  }
  
  export class GetCompositionProgressResponse extends EVA.API.ResponseMessage {
    State : EVA.PIM.Core.ProductCompositionProgressState; 
    Current : number; // Int32
    Total : number; // Int32
    Progress : number; // Double
  }
  
  export class GetLayerByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetLayerByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetLayerByIDResponse extends EVA.API.ResponseMessage {
    Layer : EVA.PIM.Core.LayerDto; 
  }
  
  export class GetProductByID extends EVA.API.GetRequestGeneric<EVA.PIM.Core.GetProductByIDResponse> {
  }
  
  export class GetProductByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string; 
    CustomID : string; 
    PrimitiveName : string; 
    TypeID : number; // Int32
    TaxCodeID : number; // Int32
    LedgerClassID : string; 
  }
  
  export class GetProductCompositionState extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductCompositionStateResponse> {
    CompositionID : string; 
  }
  
  export class GetProductCompositionStateResponse extends EVA.API.ResponseMessage {
    Status : string; 
    TotalProductCount : number; // Int32
    TotalComposeCount : number; // Int32
    ProductsComposed : number; // Int32
    CompositionCount : number; // Int32
    DocumentsCopiedToElasticsearch : number; // Int32
    DocumentsCopiedToStaging : number; // Int32
    BytesWrittenToElasticsearch : number; // Int64
    BytesWrittenToStaging : number; // Int64
    CreationTime : string; // DateTime
    CompositionsPerSecond : number; // Int32
    ProductsComposedPerSecond : number; // Int32
    DocumentsCopiedToElasticsearchPerSecond : number; // Int32
    DocumentsCopiedToStagingPerSecond : number; // Int32
    BytesWrittenToElasticsearchPerSecond : number; // Int32
    BytesWrittenToStagingPerSecond : number; // Int32
    RemainingBatchCount : number; // Int32
    CompletionTime? : string; // DateTime, nullable
    ComposeWaitTimeInSeconds : number; // Double
    StorageWaitTimeInSeconds : number; // Double
    ElapsedTimeInSeconds : number; // Double
    ElasticsearchWaitTimeInSeconds : number; // Double
    ComposeProcessingTimeInSeconds : number; // Double
    DatabaseQueryWaitTimeInSeconds : number; // Double
  }
  
  export class GetProductForEditByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductForEditByIDResponse> {
    ID : number; // Int32
    RevisionID : number; // Int32
  }
  
  export class GetProductForEditByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    CatalogID : number; // Int32
    DisplayValue : string; 
    LayersWithContent : EVA.PIM.Core.LayerWithContentDto[]; 
    Types : { [ key : string ] : any }; 
  }
  
  export class GetProductForQuickEditByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductForQuickEditByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetProductForQuickEditByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    CatalogID : number; // Int32
    DisplayValue : string; 
    Content : any; 
    Types : { [ key : string ] : any }; 
  }
  
  export class GetProductPropertyCategoryByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductPropertyCategoryByIDResponse> {
    ID : string; 
    RevisionID : number; // Int32
  }
  
  export class GetProductPropertyCategoryByIDResponse extends EVA.API.ResponseMessage {
    ID : string; 
    CatalogID : number; // Int32
    LayersWithContent : EVA.PIM.Core.LayerWithContentDto[]; 
  }
  
  export class GetProductPropertyTypeByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductPropertyTypeByIDResponse> {
    ID : string; 
    RevisionID : number; // Int32
  }
  
  export class GetProductPropertyTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : string; 
    CatalogID : number; // Int32
    LayersWithContent : EVA.PIM.Core.LayerWithContentDto[]; 
    CategoryID : string; 
  }
  
  export class GetProductPropertyTypeEnumValueByID extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductPropertyTypeEnumValueByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetProductPropertyTypeEnumValueByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ProductPropertyTypeID : string; 
    CatalogID : number; // Int32
    Identifier : number; // Int32
    Value : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class GetProductSearchConfiguration extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductSearchConfigurationResponse> {
  }
  
  export class GetProductSearchConfigurationResponse extends EVA.API.ResponseMessage {
    Configuration : EVA.PIM.Core.ProductSearchConfigurationModel; 
  }
  
  export class GetProductSearchSynonyms extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetProductSearchSynonymsResponse> {
    LanguageID : string; 
  }
  
  export class GetProductSearchSynonymsResponse extends EVA.API.ResponseMessage {
    Result : EVA.PIM.Core.GetProductSearchSynonymsResponseProductSearchSynonym[]; 
  }
  
  export class GetReferenceDataForProduct extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetReferenceDataForProductResponse> {
    ProductID : number; // Int32
  }
  
  export class GetReferenceDataForProductResponse extends EVA.API.ResponseMessage {
    Data : { [ key : string ] : any }; 
  }
  
  export class GetRevisionStatus extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.GetRevisionStatusResponse> {
    RevisionID : number; // Int32
  }
  
  export class GetRevisionStatusResponse extends EVA.API.ResponseMessage {
    Status : EVA.PIM.Core.RevisionProgress; 
  }
  
  export interface ProductSearchConfigurationModelIHasCulture {
    LanguageID : string; 
  }
  
  export enum ImageSortingLogic {
    ByCurrentOrdering = 0,
    BySize = 1,
  }
  
  export class ImportProducts extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ImportProductsResponse> {
    // <br />A string that identifies the system that was used to call this service. In combination with a product's ID, this is what uniquely identifies the product in EVA.<br />The SystemID must be the same for every call, if it's different from a previous call then new products will be created.
    SystemID : string; 
    // Determines the behavior of this service.
    Type : EVA.PIM.Core.ImportType; 
    // <br />The LogicalLevel that will be assigned to the root level of a product hierarcy. If not specified a default value is used.<br /><br />See ProductVariation.LogicalLevel for more information.<br />
    RootLogicalLevel : string; 
    // The list of products to create or update. If a product does not exist it's created and if a product with the same ID and SystemID already exists it is updated.
    Products : EVA.PIM.Core.ImportProductsProduct[]; 
  }
  
  export class ImportProductsResponse extends EVA.API.ResponseMessage {
    // The EVA IDs of the products were touched by this call.
    UpdatedProductIDs : number[]; 
    // The EVA IDs of the products that were newly created by this call.
    CreatedProductIDs : number[]; 
    // If the Type of the request was PreviewOnly this property will contain the product structure that would be generated.
    PreviewResult : string; 
    // Contains an entry for every product mapping the input string ID to its internal EVA integer ID.
    ProductMap : EVA.PIM.Core.ProductMapItem[]; 
  }
  
  export enum ImportType {
    Normal = 0,
    ContentOnly = 1,
    PreviewOnly = 2,
  }
  
  export enum ImportTypes {
    Normal = 0,
    ContentOnly = 1,
  }
  
  export class LayerDto {
    ID : number; // Int32
    Description : string; 
    Level : number; // Int32
    ApplicationID? : number; // Int32, nullable
    LanguageID : string; 
    CatalogID : number; // Int32
    Name : string; 
    CountryID : string; 
    Type : EVA.PIM.Common.ContentLayerTypes; 
  }
  
  export class LayerWithContentDto {
    ID : number; // Int32
    Name : string; 
    Level : number; // Int32
    ApplicationID? : number; // Int32, nullable
    LanguageID : string; 
    CountryID : string; 
    Content : any; 
    Description : string; 
    DisplayValue : string; 
  }
  
  export class ListApplicationContentCulture {
    ApplicationID : number; // Int32
    LanguageID : string; 
    CountryID : string; 
    Culture : string; 
  }
  
  export class ListApplicationCultures extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ListApplicationCulturesResponse> {
  }
  
  export class ListApplicationCulturesResponse extends EVA.API.ResponseMessage {
    Result : EVA.PIM.Core.ListApplicationContentCulture[]; 
  }
  
  export class ListContentCultureMapping extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ListContentCultureMappingResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.PIM.Core.ContentCultureMappingFilter>; 
  }
  
  export class ListContentCultureMappingResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.ListContentCultureMappingResponseContentCultureMappingDto> {
  }
  
  export class ListLayers extends EVA.API.PagedResultRequest<EVA.PIM.Core.ListLayersResponse> {
  }
  
  export class ListLayersResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.LayerDto> {
  }
  
  export class ListProductPropertyCategories extends EVA.API.PagedResultRequest<EVA.PIM.Core.ListProductPropertyCategoriesResponse> {
  }
  
  export class ListProductPropertyCategoriesDto {
    ID : string; 
    DisplayName : string; 
  }
  
  export class ListProductPropertyCategoriesResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.ListProductPropertyCategoriesDto> {
  }
  
  export class ListProductPropertyTypeEnumValues extends EVA.API.PagedResultRequest<EVA.PIM.Core.ListProductPropertyTypeEnumValuesResponse> {
  }
  
  export class ListProductPropertyTypeEnumValuesResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.ListProductPropertyTypeEnumValuesResponseProductPropertyTypeEnumValueDto> {
  }
  
  export class ListProductPropertyTypes extends EVA.API.PagedResultRequest<EVA.PIM.Core.ListProductPropertyTypesResponse> {
  }
  
  export class ListProductPropertyTypesDto {
    ID : string; 
    DisplayName : string; 
    CategoryID : string; 
    CategoryDisplayName : string; 
    DataType : EVA.PIM.Common.ProductPropertyTypeDataTypes; 
  }
  
  export class ListProductPropertyTypesResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.ListProductPropertyTypesDto> {
  }
  
  export class ListProductSearchStrategies extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ListProductSearchStrategiesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.PIM.Core.ListProductSearchStrategiesFilter>; 
  }
  
  export class ListProductSearchStrategiesFilter {
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class ListProductSearchStrategiesResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.ListProductSearchStrategyItem> {
  }
  
  export class ListProductSearchStrategyItem {
    ID : number; // Int32
    CatalogID : number; // Int32
    LanguageID : string; 
    CountryID : string; 
    Name : string; 
    Code : string; 
    TypeID : number; // Int32
    Type : EVA.PIM.Core.ProductSearchStrategyTypes; 
    OrganizationUnitTypeID? : number; // Int32, nullable
    OrganizationUnitType : EVA.Framework.OrganizationUnitTypes; 
    Strategy : EVA.PIM.Core.ProductSearchStrategyModel; 
    SerializedStrategy : string; 
  }
  
  export class ListRevisions extends EVA.API.PagedResultRequest<EVA.PIM.Core.ListRevisionsResponse> {
  }
  
  export class ListRevisionsResponse extends EVA.API.PagedResultResponse<EVA.PIM.Core.RevisionDto> {
  }
  
  export class ListRevisionUser {
    FullName : string; 
  }
  
  export class ListRevisionValidationErrors extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.ListRevisionValidationErrorsResponse> {
    RevisionID : number; // Int32
    Offset? : number; // Int32, nullable
    Cursor? : number; // Int32, nullable
  }
  
  export class ListRevisionValidationErrorsResponse extends EVA.API.ResponseMessage {
    Offset? : number; // Int32, nullable
    Cursor? : number; // Int32, nullable
    Errors : any[]; 
  }
  
  export enum MatchOperator {
    And = 0,
    Or = 1,
  }
  
  export class ProductSearchStrategyModelMultiMatchFuzziness {
    EditDistance? : number; // Int32, nullable
    PrefixLength? : number; // Int32, nullable
    MaxExpansions? : number; // Int32, nullable
  }
  
  export class ProductSearchStrategyModelMultiMatchQuery {
    Type : EVA.PIM.Core.MultiMatchType; 
    Slop? : number; // Int32, nullable
    Fuzziness : EVA.PIM.Core.ProductSearchStrategyModelMultiMatchFuzziness; 
    Operator : EVA.PIM.Core.MatchOperator; 
    Boost? : number; // Int32, nullable
    RequirementType : EVA.PIM.Core.QueryRequirementType; 
    PropertiesToSearch : EVA.PIM.Core.ProductSearchStrategyModelProductPropertyTypeToSearch[]; 
    Analyzer : string; 
    MinimumShouldMatch : string; 
  }
  
  export enum MultiMatchType {
    BestFields = 0,
    MostFields = 1,
    CrossFields = 2,
    Phrase = 3,
    PhrasePrefix = 4,
  }
  
  export class PreviewProductPropertyCategory extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.PreviewProductPropertyCategoryResponse> {
    ID : string; 
    RevisionID : number; // Int32
    Edits : EVA.PIM.Core.ProductPropertyCategoryEdit[]; 
  }
  
  export class PreviewProductPropertyCategoryResponse extends EVA.API.ResponseMessage {
    Result : any; 
  }
  
  export class PreviewProductPropertyType extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.PreviewProductPropertyTypeResponse> {
    ID : string; 
    RevisionID : number; // Int32
    Edits : EVA.PIM.Core.ProductPropertyTypeEdit[]; 
  }
  
  export class PreviewProductPropertyTypeResponse extends EVA.API.ResponseMessage {
    Result : any; 
  }
  
  export class ImportProductsProduct {
    // The unique identifier for the product.
    ID : string; 
    // The culture independent name of the product by which it can be recognized even if it otherwise does not have any content. Required unless Type = ContentOnly.
    Name : string; 
    // The (optional) brand of the product. Only has to be specified on the root level of a hierarchy.
    Brand : string; 
    // The (optional) ledger class ID of the product. Only has to be specified on the root level of a hierarchy.
    LedgerClassID : string; 
    // <br />The TaxCode determines how sales tax applies to this product. This must refer to an existing TaxCode in EVA, if it doesn't exist yet an error is returned.<br /><br />Required unless Type = ContentOnly.<br /><br />The string expected here is the Name property of the tax code, so 'High' for TaxCode High.<br /><br />EVA defines the following default tax codes:<br /><br />- High<br />- Intermediate<br />- Low<br />- Zero<br />- Exempt<br /><br />In a hierarchy, the TaxCode only has to be specified for the root level; all products part of the hierarchy will always have the same TaxCode.<br />
    TaxCode : string; 
    // An (optional) list of barcodes for this product. A barcode should be globally unique and any duplicate barcodes will result in an error.
    Barcodes : string[]; 
    // Defines what kind of product it is. If the product is part of a hierarchy, this is only relevant for the SKU level, all other levels will have type Configurable.
    Type : EVA.PIM.Core.ImportProductsProductType; 
    // Defines the status of a product.
    Status : EVA.PIM.Core.ImportProductsProductStatus; 
    // Defines the variations hierarchy of the product.
    Variations : EVA.PIM.Core.ImportProductsProductVariation; 
    // The per-language content of the product.<br /><br />A small set of default properties has been defined, such as Name and MarketingDescription. Additional content can be defined inside `CustomContent`, which is a key-value container<br />where the key is the name of a property and value should be a single scalar value (string, number, boolean or null) or an array of values.<br /><br />If LanguageID is left null, this will be the fallback content for languages that have no content of their own.<br />For example, you may offer a French website but you only have English product content, if you specify your English content with LanguageID = null<br />then products on the French website will have the English content.<br />
    Content : EVA.PIM.Core.ImportProductsProductContent[]; 
    // <br />Defines the per-language value of the variation property for this product. For example, if the variation property is `color` then the value could be 'red' or 'blue'.<br /><br />If the variation value isn't language sensitive then the LanguageID should be left null. If there isn't an item where LanguageID is null, all languages for which this product has content must have<br />a value for the variation property.<br />
    VariationValues : EVA.PIM.Core.ImportProductsProductVariationValue[]; 
  }
  
  export enum ProductCompositionProgressState {
    None = 0,
    Composing = 1,
    PostProcessing = 2,
    Publishing = 3,
    Complete = 4,
  }
  
  export class ImportProductsProductContent {
    LanguageID : string; 
    CountryID : string; 
    MarketingDescription : string; 
    Name : string; 
    ShortDescription : string; 
    LongDescription : string; 
    // The publication status determines the visibility of the product. A product generally won't be visible to non-employee users unless it has publication status 'public'.
    PublicationStatuses : string[]; 
    Images : EVA.PIM.Core.ImportProductsProductImage[]; 
    Tags : string[]; 
    CustomContent : any; 
  }
  
  export class ProductEdit {
    LayerID? : number; // Int32, nullable
    Content : any; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class ImportProductsProductImage {
    // The unique identifier for the image. Optional, if null then an ID is generated based on the hash of the ImageUrl
    ID : string; 
    // Where can the image be downloaded? Required unless ImageData is provided.
    ImageUrl : string; 
    // The image mime type. Optional, if null then the mime type will be guessed by the ImageUrl
    MimeType : string; 
    // The human readable name of the image. Optional, if null then the name will be the ID of the image.
    Name : string; 
    // The raw image data. Only required if ImageUrl is left empty.
    ImageData : string; 
  }
  
  export enum ProductImportValidationFailureReason {
    InfiniteRecursionInReferences = 0,
    InfiniteRecursionInBackendIDs = 1,
    InfiniteRecursionInIDs = 2,
    DuplicateBackendID = 3,
    DuplicateProductID = 4,
    MissingField = 5,
    MissingLogicalLevel = 6,
    InconsistentData = 7,
    MissingImageUrl = 8,
    MissingImageMimeType = 9,
    InvalidProductType = 10,
    MissingConfigurableProperty = 11,
    MissingConfigurablePropertyValue = 12,
    ImageBlobCategoryRequired = 13,
    UnknownProduct = 14,
  }
  
  export class ProductMapItem {
    BackendID : string; 
    ID : number; // Int32
  }
  
  export class ProductPropertyCategoryEdit {
    LayerID : number; // Int32
    Content : any; 
  }
  
  export enum ProductPropertyDataTypes {
    String = 0,
    Int = 1,
    Double = 2,
    Bool = 3,
  }
  
  export enum ProductPropertyIndexTypes {
    NotIndexed = 0,
    IndexedNotAnalyzed = 1,
    IndexedAnalyzed = 2,
  }
  
  export class ProductSearchConfigurationModelProductPropertyTypeConfiguration implements EVA.PIM.Core.ProductSearchConfigurationModelIHasCulture {
    Name : string; 
    LanguageID : string; 
    Analyzer : string; 
    SearchAnalyzer : string; 
    CopyTo : string; 
  }
  
  export class ProductPropertyTypeEdit {
    LayerID : number; // Int32
    Content : any; 
  }
  
  export class ListProductPropertyTypeEnumValuesResponseProductPropertyTypeEnumValueDto {
    ID : number; // Int32
    ProductPropertyTypeID : string; 
    Identifier : number; // Int32
    Value : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export enum ProductPropertyTypeOptions {
    None = 0,
    AlphabeticallySortable = 1,
  }
  
  export class ProductSearchStrategyModelProductPropertyTypeToSearch {
    ID : string; 
    Boost? : number; // Double, nullable
  }
  
  export class ProductSearchConfigurationModel {
    Analyzers : EVA.PIM.Core.ProductSearchConfigurationModelAnalyzer[]; 
    TokenFilters : EVA.PIM.Core.ProductSearchConfigurationModelTokenFilter[]; 
    CharFilters : EVA.PIM.Core.ProductSearchConfigurationModelCharFilter[]; 
    ProductPropertyTypes : EVA.PIM.Core.ProductSearchConfigurationModelProductPropertyTypeConfiguration[]; 
    DisableSynonyms : boolean; 
    IndexPipelineScript : string; 
  }
  
  export enum ProductSearchItemFlags {
    DisplayValue = 1,
    CustomID = 2,
    BackendID = 4,
    BrandName = 8,
    LogicalLevel = 16,
    ConfigurableProperties = 32,
    Name = 64,
    Type = 128,
    Status = 256,
    Unstackable = 512,
    MaxQuantityPerOrder = 1024,
    Barcodes = 2048,
    PublicationStatuses = 4096,
    ProductMedia = 8192,
    PrimaryImage = 16384,
    ParentProductIDs = 32768,
    ParentHierarchy = 65536,
    LogicalLevelHierarchy = 131072,
    ProductRequirements = 262144,
    DisplayPrice = 524288,
    OriginalPrice = 1048576,
    CurrencyID = 2097152,
    TaxExemptionCode = 4194304,
    TaxExemptionReason = 8388608,
    ShortDescription = 16777216,
    LongDescription = 33554432,
    PriceLabel = 67108864,
    ExcludeFromGiftWrapping = 134217728,
  }
  
  export enum ProductSearchItemMediaFlags {
    Gallery = 1,
    ImageCount = 2,
    Media = 4,
    PrimaryImage = 8,
  }
  
  export class ProductSearchStrategyModel {
    Condition : EVA.PIM.Core.ProductSearchStrategyModelStrategyCondition; 
    Scoring : EVA.PIM.Core.ProductSearchStrategyModelScoringStrategy; 
    Sorting : EVA.PIM.Core.ProductSearchStrategyModelSortingStrategy; 
    Query : EVA.PIM.Core.ProductSearchStrategyModelQueryStrategy; 
    Aggregation : EVA.PIM.Core.ProductSearchStrategyModelAggregationStrategy; 
  }
  
  export enum ProductSearchStrategyTypes {
    Full = 0,
    Partial = 1,
  }
  
  export class GetProductSearchSynonymsResponseProductSearchSynonym {
    ID : number; // Int32
    Rule : string; 
    LanguageID : string; 
  }
  
  export class ImportProductsProductStatus {
    // The product will be unavailable until the pre-order date.
    PreRelease : boolean; 
    // The product won't be available for endless aisle pickup from shop.
    DeliveryOnly : boolean; 
    // The product will be unavailable for delivery.
    DisableDelivery : boolean; 
    // The product won't be available from a shop at all.
    DisablePickup : boolean; 
    // The product won't be orderable if there is no available stock.
    DisableBackorder : boolean; 
    // Indicates the product won't be back in store and all current stock is all there is going to be.
    UseUp : boolean; 
  }
  
  export class ImportProductsProductType {
    // A normal stock-keeping product. This will be the default if not specified.
    Stock : boolean; 
    // A giftcard product.
    GiftCard : boolean; 
    // A non-physical product that represents a service of some sort.
    Service : boolean; 
    // Indicates the product is of a bundle type.
    BundleProduct : boolean; 
  }
  
  export class ImportProductsProductVariation {
    // The property on which the product hierarchy varies. For example 'size' or 'color'.
    Property : string; 
    // <br />The LogicalLevel of a product defines the 'level' on which the product can be thought to sit in the hierarchy.<br /><br />For example, the various different colors of a shirt can be thought to have LogicalLevel = 'color' and the actual SKU might have LogicalLevel = 'size' or 'sku'.<br /><br />You are free to use any value, but it's recommended to keep this consistent between all products, or at least between products of the same kind, as it's a useful way to<br />structure a frontend by for example filtering on the color level and only show sizes when navigating to the product detail.<br />
    LogicalLevel : string; 
    // The actual variations of the product on the specified LogicalLevel.
    Products : EVA.PIM.Core.ImportProductsProduct[]; 
  }
  
  export class ProductSearchStrategyModelAggregationStrategyProductVariationAggregation {
    LogicalLevel : string; 
    VariationField : string; 
  }
  
  export class ImportProductsProductVariationValue {
    // Can be left null if the variation value isn't culture dependent.
    LanguageID : string; 
    // Can be left null if the variation value isn't culture dependent.
    CountryID : string; 
    Value : string; 
  }
  
  export enum PropertyValueType {
    None = 0,
    Int = 1,
    String = 2,
    Bool = 3,
    DateTime = 4,
    Float = 5,
  }
  
  export enum PropertyValueTypes {
    Unknown = 0,
    Integer = 1,
    String = 2,
    Boolean = 3,
    Double = 4,
    Date = 5,
  }
  
  export class ProductSearchStrategyModelQueryCondition {
    Text : string; 
    Type : EVA.PIM.Core.QueryConditionTypes; 
  }
  
  export enum QueryConditionTypes {
    Equals = 0,
    Contains = 1,
    StartsWith = 2,
  }
  
  export enum QueryRequirementType {
    Must = 0,
    Should = 1,
  }
  
  export class ProductSearchStrategyModelQueryStrategy {
    Queries : EVA.PIM.Core.ProductSearchStrategyModelMultiMatchQuery[]; 
    MinimumShouldMatch : string; 
    StockFilter : EVA.PIM.Core.ProductSearchStrategyModelStockFilterStrategy; 
  }
  
  export class ReplaceProductSearchSynonyms extends EVA.API.RequestMessageWithEmptyResponse {
    Rules : string[]; 
    LanguageID : string; 
  }
  
  export class RequestReindexSearchData extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.RequestReindexSearchDataResponse> {
    Script : string; 
    LanguageID : string; 
    CountryID : string; 
    ApplyProductSearchConfiguration : boolean; 
  }
  
  export class RequestReindexSearchDataResponse extends EVA.API.ResponseMessage {
  }
  
  export class RevisionDto {
    ID : number; // Int32
    Name : string; 
    ApplicationID? : number; // Int32, nullable
    Status : EVA.PIM.Core.RevisionStatus; 
    AppliedOn? : string; // DateTime, nullable
    CreatedBy : EVA.PIM.Core.ListRevisionUser; 
    CreationTime : string; // DateTime
  }
  
  export class RevisionProgress {
    TotalItems : number; // Int32
    HandledItems : number; // Int32
    State : EVA.PIM.Core.ProductCompositionProgressState; 
    Progress : number; // Double
    ValidationErrors : number; // Int64
  }
  
  export enum RevisionStatus {
    Open = 1,
    Applied = 2,
    Inactive = 4,
    InProgress = 8,
  }
  
  export enum RevisionTypes {
    UserRevision = 0,
    SystemRevision = 1,
  }
  
  export enum ScoreModes {
    Multiply = 0,
    Sum = 1,
    Average = 2,
    First = 3,
    Max = 4,
    Min = 5,
  }
  
  export class ProductSearchStrategyModelScoringFunction {
    Type : EVA.PIM.Core.ScoringFunctionTypes; 
    Options : any; 
    Weight? : number; // Int32, nullable
  }
  
  export enum ScoringFunctionTypes {
    FieldValueFactor = 0,
    Script = 1,
  }
  
  export class ProductSearchStrategyModelScoringStrategy {
    ScoreMode : EVA.PIM.Core.ScoreModes; 
    BoostMode : EVA.PIM.Core.BoostMode; 
    ScoringFunctions : EVA.PIM.Core.ProductSearchStrategyModelScoringFunction[]; 
    MaxBoost? : number; // Int32, nullable
    MinScore? : number; // Int32, nullable
    StockScoring : EVA.PIM.Core.ProductSearchStrategyModelStockScoringStrategy; 
  }
  
  export class SearchProductPropertyTypes extends EVA.API.PagedResultRequest<EVA.PIM.Core.SearchProductPropertyTypesResponse> {
    Query : string; 
  }
  
  export class SearchProductPropertyTypesResponse extends EVA.API.PagedResultResponse<any> {
  }
  
  export enum SortingScriptType {
    Number = 0,
    String = 1,
  }
  
  export class ProductSearchStrategyModelSortingStrategy {
    Sort : EVA.PIM.Core.ProductSearchStrategyModelSortingStrategySort[]; 
    StockSorting : EVA.PIM.Core.ProductSearchStrategyModelStockSortingStrategy; 
  }
  
  export enum SortingStrategyOrder {
    Ascending = 0,
    Descending = 1,
  }
  
  export class ProductSearchStrategyModelSortingStrategySort {
    Order : EVA.PIM.Core.SortingStrategyOrder; 
    Script : EVA.PIM.Core.ProductSearchStrategyModelSortingStrategySortScript; 
    Field : string; 
    MissingValue : any; 
  }
  
  export class ProductSearchStrategyModelSortingStrategySortScript {
    Type : EVA.PIM.Core.SortingScriptType; 
    Source : string; 
    Language : string; 
  }
  
  export class ProductSearchStrategyModelStockFilterStrategy {
    FilterByStock : boolean; 
    Type : EVA.PIM.Core.StockFilterTypes; 
  }
  
  export enum StockFilterTypes {
    CurrentOrganizationUnit = 0,
    Suppliers = 1,
  }
  
  export class ProductSearchStrategyModelStockScoringStrategy {
    AdjustScoreByStock : boolean; 
    BoostAmount : number; // Int32
    Type : EVA.PIM.Core.StockFilterTypes; 
  }
  
  export class ProductSearchStrategyModelStockSortingStrategy {
    SortByStock : boolean; 
    Type : EVA.PIM.Core.StockFilterTypes; 
  }
  
  export class ProductSearchStrategyModelStrategyCondition {
    Query : EVA.PIM.Core.ProductSearchStrategyModelQueryCondition; 
    Filters : EVA.PIM.Core.ProductSearchStrategyModelFilterCondition[]; 
  }
  
  export class ProductSearchConfigurationModelTokenFilter implements EVA.PIM.Core.ProductSearchConfigurationModelIHasCulture {
    Name : string; 
    LanguageID : string; 
    Type : string; 
    Options : any; 
  }
  
  export class UpdateBrand extends EVA.API.UpdateRequest<EVA.PIM.Core.BrandDto> implements EVA.API.IRequestRespondsAs<EVA.API.EmptyResponseMessage> {
  }
  
  export class UpdateLayer extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Level : number; // Int32
  }
  
  export class UpdateProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string; 
    CustomID : string; 
    PrimitiveName : string; 
    TypeID : number; // Int32
    TaxCodeID : number; // Int32
    LedgerClassID : string; 
  }
  
  export class UpdateProductPropertyTypeEnumValue extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Identifier : number; // Int32
    Value : string; 
    LanguageID : string; 
    CountryID : string; 
  }
  
  export class UpdateProductSearchStrategy extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    CountryID : string; 
    LanguageID : string; 
    Name : string; 
    Code : string; 
    Strategy : EVA.PIM.Core.ProductSearchStrategyModel; 
  }
  
  export class UploadProductBarcodeExcel extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.UploadProductBarcodeExcelResponse> {
    Data : string; 
  }
  
  export class UploadProductBarcodeExcelResponse extends EVA.API.ResponseMessage {
  }
  
  export class UploadProductContentExcel extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.UploadProductContentExcelResponse> {
    LanguageID : string; 
    Data : string; 
  }
  
  export class UploadProductContentExcelResponse extends EVA.API.ResponseMessage {
  }
  
  export class UploadProductExcel extends EVA.API.RequestMessageGeneric<EVA.PIM.Core.UploadProductExcelResponse> {
    Data : string; 
  }
  
  export class UploadProductExcelResponse extends EVA.API.ResponseMessage {
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.Adyen {
  
  export enum AdyenChannel {
    Web = 1,
    iOS = 2,
    Android = 3,
  }
  
  export class AdyenPaymentDetails extends EVA.API.RequestMessageGeneric<EVA.Payment.Adyen.AdyenPaymentDetailsResponse> {
    OrderID : number; // Int32
    PaymentTransactionID : number; // Int32
    Details : { [ key : string ] : string }; 
    PaymentData : string; 
    ThreeDSAuthenticationOnly : boolean; 
  }
  
  export class AdyenPaymentDetailsResponse extends EVA.API.ResponseMessage {
    RedirectUrl : string; 
    QrCode : string; 
    Data : any; 
  }
  
  export class ListAdyenCheckoutGatewaysResponseDetail {
    ID : string; 
    Type : string; 
    Items : EVA.Payment.Adyen.ListAdyenCheckoutGatewaysResponseItem[]; 
  }
  
  export class ListAdyenCheckoutGatewaysResponseGateway {
    ID : string; 
    Name : string; 
    Details : EVA.Payment.Adyen.ListAdyenCheckoutGatewaysResponseDetail[]; 
  }
  
  export class ListAdyenCheckoutGatewaysResponseItem {
    ID : string; 
    Name : string; 
  }
  
  export class ListAdyenCheckoutGateways extends EVA.API.RequestMessageGeneric<EVA.Payment.Adyen.ListAdyenCheckoutGatewaysResponse> {
    CurrencyID : string; 
    Amount : number; // Decimal
  }
  
  export class ListAdyenCheckoutGatewaysResponse extends EVA.API.ResponseMessage {
    Gateways : EVA.Payment.Adyen.ListAdyenCheckoutGatewaysResponseGateway[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.Buckaroo {
  
  export enum BuckarooArticleVatcategory {
    HighRate = 1,
    LowRate = 2,
    ZeroRate = 3,
    NullRate = 4,
    MiddleRate = 5,
  }
  
  export enum BuckarooGender {
    Male = 1,
    Female = 2,
  }
  
  export interface IGateway {
    Name : string; 
    Description : string; 
    Initialize : boolean; 
  }
  
  export class ListBuckarooGateways extends EVA.API.RequestMessageGeneric<EVA.Payment.Buckaroo.ListBuckarooGatewaysResponse> {
  }
  
  export class ListBuckarooGatewaysResponse extends EVA.API.ResponseMessage {
    Gateways : EVA.Payment.Buckaroo.IGateway[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.Cash {
  
  export class OpenCashDrawer extends EVA.API.RequestMessageGeneric<EVA.Payment.Cash.OpenCashDrawerResponse> {
    StationID? : number; // Int32, nullable
    Remark : string; 
    PaymentTransactionID? : number; // Int32, nullable
  }
  
  export class OpenCashDrawerResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.OpenCashDrawerResults; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.EVAPay {
  
  export class EVAPayGetInfo extends EVA.API.RequestMessageGeneric<EVA.Payment.EVAPay.EVAPayGetInfoResponse> {
    ProductProperties : string[]; 
    IncludeFailedPayments : boolean; 
    IncludePendingPayments : boolean; 
    ShowOnlyShippableLines : boolean; 
  }
  
  export class EVAPayGetInfoResponse extends EVA.API.GetResponse<EVA.Core.OrderDto> {
    Amounts : EVA.Core.OpenOrderAmounts; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.Mollie {
  
  export class Amount {
    Minimum : number; // Decimal
    Maximum : number; // Decimal
  }
  
  export class Image {
    Normal : string; 
    Bigger : string; 
  }
  
  export class Issuer {
    ID : string; 
    Name : string; 
    Image : EVA.Payment.Mollie.Image; 
  }
  
  export class ListMollieGateways extends EVA.API.RequestMessageGeneric<EVA.Payment.Mollie.ListMollieGatewaysResponse> {
  }
  
  export class ListMollieGatewaysResponse extends EVA.API.ResponseMessage {
    Gateways : EVA.Payment.Mollie.Method[]; 
  }
  
  export class Method {
    ID : string; 
    Description : string; 
    Amount : EVA.Payment.Mollie.Amount; 
    Image : EVA.Payment.Mollie.Image; 
    Issuers : EVA.Payment.Mollie.Issuer[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.MultiSafepay {
  
  export class GetMultiSafepayGateways extends EVA.API.RequestMessageGeneric<EVA.Payment.MultiSafepay.GetMultiSafepayGatewaysResponse> {
    OrderID : number; // Int32
  }
  
  export class GetMultiSafepayGatewaysResponse extends EVA.API.ResponseMessage {
    Gateways : { [ key : string ] : string }; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payment.UserCard {
  
  export class CancelPendingUserCardPayment extends EVA.API.RequestMessageWithEmptyResponse {
    PaymentTransactionID : number; // Int32
  }
  
  export class CreateUserCard extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.CreateUserCardResponse> {
    UserID? : number; // Int32, nullable
    CurrencyID : string; 
    UserCardTypeID : number; // Int32
  }
  
  export class CreateUserCardMutation extends EVA.API.RequestMessageWithEmptyResponse {
    UserCardID : number; // Int32
    Amount : number; // Decimal
    Description : string; 
  }
  
  export class CreateUserCardResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class GetUserCardBalance extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardBalanceResponse> {
    UserCardID : number; // Int32
    CurrencyID : string; 
  }
  
  export class GetUserCardBalanceResponse extends EVA.API.ResponseMessage {
    CurrentBalance : EVA.Core.UserCardBalance; 
  }
  
  export class GetUserCardDetails extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardDetailsResponse> {
    UserCardID? : number; // Int32, nullable
    CardNumber : string; 
    CurrencyID : string; 
  }
  
  export class GetUserCardDetailsResponse extends EVA.API.ResponseMessage {
    UserCard : EVA.Core.UserCardDto; 
  }
  
  export class GetUserCardsForUser extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardsForUserResponse> {
    UserID? : number; // Int32, nullable
    CurrencyID : string; 
  }
  
  export class GetUserCardsForUserResponse extends EVA.API.ResponseMessage {
    UserCards : EVA.Core.UserCardDto[]; 
  }
  
  export class GetUserCardTypes extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.GetUserCardTypesResponse> {
  }
  
  export class GetUserCardTypesResponse extends EVA.API.ResponseMessage {
    Types : EVA.Core.UserCardTypeDto[]; 
  }
  
  export class ListUserCardDto {
    Barcode : string; 
    ID : number; // Int32
    Type : EVA.Core.UserCardTypeDto; 
    UserFullName : string; 
  }
  
  export class ListUserCardMutations extends EVA.API.PagedResultRequest<EVA.Payment.UserCard.ListUserCardMutationsResponse> {
    UserCardID : number; // Int32
  }
  
  export class ListUserCardMutationsDto {
    Amount : number; // Decimal
    CreationTime : string; // DateTime
    Description : string; 
    Status : EVA.Core.UserCardMutationStatuses; 
  }
  
  export class ListUserCardMutationsResponse extends EVA.API.PagedResultResponse<EVA.Payment.UserCard.ListUserCardMutationsDto> {
  }
  
  export class ListUserCards extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.ListUserCardsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Core.ListUserCardsFilter>; 
  }
  
  export class ListUserCardsResponse extends EVA.API.PagedResultResponse<EVA.Payment.UserCard.ListUserCardDto> {
  }
  
  export class RefundAmountFromUserCard extends EVA.API.RequestMessageGeneric<EVA.Payment.UserCard.RefundAmountFromUserCardResponse> {
    UserCardID : number; // Int32
    Amount : number; // Decimal
    PaymentTransactionID? : number; // Int32, nullable
    PaymentTypeID? : number; // Int32, nullable
  }
  
  export class RefundAmountFromUserCardResponse extends EVA.API.ResponseMessage {
    ActualRefundedAmount : number; // Decimal
    RefundStatus : EVA.Core.PaymentStatuses; 
    Message : EVA.Payment.UserCard.RefundAmountFromUserCardResponseRefundAttemptMessage; 
  }
  
  export class RefundAmountFromUserCardResponseRefundAttemptMessage {
    Code : string; 
    Message : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Payroll {
  
  export class CreateEmployment extends EVA.API.RequestMessageGeneric<EVA.Payroll.CreateEmploymentResponse> {
    BackendID : string; 
    UserID : number; // Int32
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    EmploymentType : string; 
    Employer : string; 
    DefaultReplacementID? : number; // Int32, nullable
  }
  
  export class CreateEmploymentResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class DeleteEmployment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class EmploymentDto {
    ID : number; // Int32
    BackendID : string; 
    UserID : number; // Int32
    UserFullName : string; 
    UserEmailAddress : string; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    EmploymentType : string; 
    Employer : string; 
    DefaultReplacementID? : number; // Int32, nullable
    DefaultReplacementFullName : string; 
    DefaultReplacementEmailAddress : string; 
  }
  
  export class GetEmploymentByID extends EVA.API.RequestMessageGeneric<EVA.Payroll.GetEmploymentByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetEmploymentByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    BackendID : string; 
    UserID : number; // Int32
    UserFullName : string; 
    UserEmailAddress : string; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    EmploymentType : string; 
    Employer : string; 
    DefaultReplacementID? : number; // Int32, nullable
    DefaultReplacementFullName : string; 
    DefaultReplacementEmailAddress : string; 
  }
  
  export class ListEmployments extends EVA.API.RequestMessageGeneric<EVA.Payroll.ListEmploymentsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Payroll.ListEmploymentsFilter>; 
  }
  
  export class ListEmploymentsFilter {
    UserID? : number; // Int32, nullable
    DefaultReplacementID? : number; // Int32, nullable
    BackendID : string; 
    EmploymentType : string; 
    Employer : string; 
  }
  
  export class ListEmploymentsResponse extends EVA.API.PagedResultResponse<EVA.Payroll.EmploymentDto> {
  }
  
  export class UpdateEmployment extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    BackendID : string; 
    UserID : number; // Int32
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    EmploymentType : string; 
    Employer : string; 
    DefaultReplacementID? : number; // Int32, nullable
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Pin {
  
  export class AbortTransaction extends EVA.API.RequestMessageGeneric<EVA.Pin.AbortTransactionResponse> {
    StationID? : number; // Int32, nullable
    HardwareID : string; 
    UseHardwareID? : boolean; 
  }
  
  export class AbortTransactionResponse extends EVA.API.ResponseMessage {
    ResultStatus : EVA.Pin.PinTransactionResultStatus; 
  }
  
  export enum PinTransactionResultStatus {
    None = 0,
    TimeoutFromPinDevice = 1,
    TransactionStillInProgressForPayment = 2,
    Success = 3,
    Aborted = 4,
    Failure = 5,
    DeviceUnavailable = 6,
    PrintLastTicket = 7,
    TimedOut = 8,
    TransactionAlreadyInProgressForUser = 9,
    UserMustScanStationToAbort = 10,
    PaymentValidationError = 11,
    InProgress = 12,
    ClientFailure = 13,
    SelectPaymentMethod = 14,
    MustRevalidate = 16,
    ConnectToTerminal = 17,
  }
  
  export class PrintLastReceipt extends EVA.API.RequestMessageGeneric<EVA.Pin.PrintLastReceiptResponse> {
    StationID : number; // Int32
    DeviceID : number; // Int32
  }
  
  export class PrintLastReceiptCallback extends EVA.API.RequestMessageWithEmptyResponse {
    StationID : number; // Int32
    ReceiptLines : string[]; 
  }
  
  export class PrintLastReceiptResponse extends EVA.API.ResponseMessage {
    Success : boolean; 
  }
  
  export class PrintPinReceipt extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ECRID : string; 
    OrderReference : string; 
    ReceiptLines : string[]; 
    TransactionSucceeded : boolean; 
    SignatureLines : EVA.Pin.SignatureLine[]; 
    ReceiptType : string; 
  }
  
  export enum ResultStatus {
    None = 0,
    TransactionStillInProgressForPayment = 1,
    Success = 2,
    Aborted = 3,
    Failure = 4,
    Timeout = 5,
    NoRequestPending = 6,
    ValidationError = 7,
  }
  
  export class SignatureLine {
    X1 : number; // Int32
    Y1 : number; // Int32
    X2 : number; // Int32
    Y2 : number; // Int32
  }
  
  export class StartTransaction extends EVA.API.RequestMessageGeneric<EVA.Pin.StartTransactionResponse> {
    PaymentTransactionID : number; // Int32
    HardwareID : string; 
    UseHardwareID : boolean; 
    StationID? : number; // Int32, nullable
  }
  
  export class StartTransactionResponse extends EVA.API.ResponseMessage {
    ResultStatus : EVA.Pin.PinTransactionResultStatus; 
    ResultStatusString : string; 
    OpenAmount : number; // Decimal
    CardCircuit : string; 
    LocalTerminalAddress : string; 
  }
  
  export enum TransactionType {
    Purchase = 0,
    Refund = 1,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.PostcodeNL {
  
  export enum RangeType {
    Odd = 0,
    Even = 1,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Privacy {
  
  export class CreatePrivacyDataRequest extends EVA.API.RequestMessageGeneric<EVA.Privacy.CreatePrivacyDataRequestResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class CreatePrivacyDataRequestResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreatePrivacyOrderDataRemovalRequest extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    Type : string; 
  }
  
  export class CreatePrivacyRemovalRequest extends EVA.API.RequestMessageGeneric<EVA.Privacy.CreatePrivacyRemovalRequestResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class CreatePrivacyRemovalRequestResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Hash : string; 
  }
  
  export enum DataRequestStatus {
    Requested = 0,
    Processing = 1,
    Ready = 2,
    Expired = 3,
  }
  
  export class DeletePrivacyDataRequest extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class GetPrivacyDataRequestByID extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyDataRequestByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPrivacyDataRequestByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.DataRequestStatus; 
    GenerationTime? : string; // DateTime, nullable
    BlobID : string; 
    Url : string; 
  }
  
  export class GetPrivacyOrderDataRemovals extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyOrderDataRemovalsResponse> {
    OrderID : number; // Int32
  }
  
  export class GetPrivacyOrderDataRemovalsResponse extends EVA.API.ResponseMessage {
    Results : EVA.Privacy.GetPrivacyOrderDataRemovalsResponseModel[]; 
  }
  
  export class GetPrivacyRemovalRequestByID extends EVA.API.RequestMessageGeneric<EVA.Privacy.GetPrivacyRemovalRequestByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetPrivacyRemovalRequestByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.RemovalRequestStatus; 
    RemovalTime? : string; // DateTime, nullable
    Hash : string; 
  }
  
  export class ListPrivacyDataRequests extends EVA.API.PagedResultRequest<EVA.Privacy.ListPrivacyDataRequestsResponse> {
    UserID? : number; // Int32, nullable
  }
  
  export class ListPrivacyDataRequestsResponse extends EVA.API.PagedResultResponse<EVA.Privacy.ListPrivacyDataRequestsResponsePrivacyDataRequest> {
  }
  
  export class ListPrivacyRemovalRequests extends EVA.API.PagedResultRequest<EVA.Privacy.ListPrivacyRemovalRequestsResponse> {
    UserID? : number; // Int32, nullable
    Hash : string; 
  }
  
  export class ListPrivacyRemovalRequestsResponse extends EVA.API.PagedResultResponse<EVA.Privacy.ListPrivacyRemovalRequestsResponsePrivacyRemovalRequest> {
  }
  
  export class GetPrivacyOrderDataRemovalsResponseModel {
    OrderID : number; // Int32
    OrderLineID? : number; // Int32, nullable
    Type : string; 
  }
  
  export class ListPrivacyDataRequestsResponsePrivacyDataRequest {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.DataRequestStatus; 
    GenerationTime? : string; // DateTime, nullable
    BlobID : string; 
    Url : string; 
  }
  
  export class ListPrivacyRemovalRequestsResponsePrivacyRemovalRequest {
    ID : number; // Int32
    UserID : number; // Int32
    UserFullName : string; 
    Status : EVA.Privacy.RemovalRequestStatus; 
    RemovalTime? : string; // DateTime, nullable
    Hash : string; 
  }
  
  export enum RemovalRequestStatus {
    Requested = 0,
    Processing = 1,
    Done = 2,
  }
  
  export class ScheduleRemovalRequests extends EVA.API.RequestMessageWithEmptyResponse {
    IDs : number[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Replenishment {
  
  export class CreateReplenishmentProposal extends EVA.API.RequestMessageGeneric<EVA.Replenishment.CreateReplenishmentProposalResponse> {
    SourceOrganizationUnitIDs : number[]; 
    TargetOrganizationUnitIDs : number[]; 
    StockLabels : EVA.Replenishment.CreateReplenishmentProposalStockLabelDto[]; 
  }
  
  export class CreateReplenishmentProposalResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposal extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalResponse> {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposalResponse extends EVA.API.GetResponse<EVA.Replenishment.ReplenishmentProposalDto> {
  }
  
  export class GetReplenishmentProposalSources extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalSourcesResponse> {
    ID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class GetReplenishmentProposalSourcesResponse extends EVA.API.GetResponse<EVA.Core.OrganizationUnitDto[]> {
  }
  
  export class GetReplenishmentProposalStockLabels extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalStockLabelsResponse> {
    ID : number; // Int32
  }
  
  export class GetReplenishmentProposalStockLabelsResponse extends EVA.API.GetResponse<EVA.Replenishment.StockLabelDto[]> {
  }
  
  export class GetReplenishmentProposalTargets extends EVA.API.RequestMessageGeneric<EVA.Replenishment.GetReplenishmentProposalTargetsResponse> {
    ID : number; // Int32
    OrganizationUnitIDs : number[]; 
  }
  
  export class GetReplenishmentProposalTargetsResponse extends EVA.API.GetResponse<EVA.Core.OrganizationUnitDto[]> {
  }
  
  export class ListReplenishmentProposalFilters {
    ID? : number; // Int32, nullable
    SourceIDs : number[]; 
    TargetIDs : number[]; 
    CreatedAfter? : string; // DateTime, nullable
    CreatedBefore? : string; // DateTime, nullable
    CreatedByName : string; 
  }
  
  export class ListReplenishmentProposalResultFilters {
    SourceIDs : number[]; 
    TargetIDs : number[]; 
    ProductIDs : number[]; 
    CustomID : string; 
    BrandName : string; 
  }
  
  export class ListReplenishmentProposalResults extends EVA.API.RequestMessageGeneric<EVA.Replenishment.ListReplenishmentProposalResultsResponse> {
    ID : number; // Int32
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Replenishment.ListReplenishmentProposalResultFilters>; 
  }
  
  export class ListReplenishmentProposalResultsResponse extends EVA.API.PagedResultResponse<EVA.Replenishment.ReplenishmentProposalResultListDto> {
  }
  
  export class ListReplenishmentProposals extends EVA.API.RequestMessageGeneric<EVA.Replenishment.ListReplenishmentProposalsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.Replenishment.ListReplenishmentProposalFilters>; 
  }
  
  export class ListReplenishmentProposalsResponse extends EVA.API.PagedResultResponse<EVA.Replenishment.ReplenishmentProposalListDto> {
  }
  
  export class ReplenishmentProposalBlobDto {
    TypeID : string; 
    BlobID : string; 
  }
  
  export class ReplenishmentProposalDto {
    ID : number; // Int32
    BlobID : string; 
    Status : EVA.Replenishment.ReplenishmentProposalStatus; 
    CreationTime : string; // DateTime
    Blobs : EVA.Replenishment.ReplenishmentProposalBlobDto[]; 
  }
  
  export class ReplenishmentProposalListDto {
    ID : number; // Int32
    StatusID : number; // Int32
    CreatedByID : number; // Int32
    CreationTime : string; // DateTime
    CreatedBy : EVA.Core.UserDto; 
  }
  
  export class ReplenishmentProposalResultListDto {
    ID : number; // Int32
    ReplenishmentProposalID : number; // Int32
    SourceOrganizationUnitID : number; // Int32
    TargetOrganizationUnitID : number; // Int32
    ProductID : number; // Int32
    StockLabelID? : number; // Int32, nullable
    Quantity : number; // Int32
    SourceOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    TargetOrganizationUnit : EVA.Core.OrganizationUnitDto; 
    Product : EVA.Core.ProductDto; 
    ProductName : string; 
    UnitCost? : number; // Decimal, nullable
    TotalCost? : number; // Decimal, nullable
    CurrencyID : string; 
  }
  
  export enum ReplenishmentProposalStatus {
    New = 0,
    Processing = 1,
    Processed = 2,
    Error = 9,
  }
  
  export class RetryReplenishmentProposal extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Force : boolean; 
  }
  
  export class CreateReplenishmentProposalStockLabelDto {
    SequenceID : number; // Int32
    StockLabelID : number; // Int32
  }
  
  export class StockLabelDto {
    SequenceID : number; // Int32
    StockLabelID : number; // Int32
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.SDK.Generator {
  
  export class ServiceError {
    Message : string; 
    Type : string; 
    Code : string; 
    RequestID : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Sentinel.Cloud {
  
  export class EVAStatus extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Cloud.EVAStatusResponse> {
  }
  
  export class EVAStatusResponse extends EVA.API.ResponseMessage {
    Ready : boolean; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Sentinel.Common {
  
  export class SentinelSyncUsersResponseUserDtoAuthenticationDataDto {
    Type : string; 
    Data : string; 
    SearchKey : string; 
  }
  
  export class SentinelSyncGeneralResponseCashHandlerDto {
    Name : string; 
    CurrencyID : string; 
    RoundingFactor : number; // Decimal
    Coins : number[]; 
    BankNotes : number[]; 
  }
  
  export class CurrencyInfo {
    Name : string; 
    Description : string; 
    Precision : number; // Int16
  }
  
  export class PushSentinelOrderCustomerDto {
    SentinelID : number; // Int32
    FirstName : string; 
    LastName : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
    LanguageID : string; 
    CountryID : string; 
    Gender : string; 
  }
  
  export class SentinelSyncGeneralResponseDeviceDto {
    ID : number; // Int32
    Name : string; 
    Types : string[]; 
    NetworkName : string; 
    IpAddress : string; 
    StationID? : number; // Int32, nullable
    AssemblyName : string; 
    EcrID : string; 
    HardwareID : string; 
    ProxyID : string; 
    ConnectionType : EVA.Core.ConnectionType; 
  }
  
  export class SentinelSyncUsersResponseUserDtoFunctionalityDto {
    Functionality : string; 
    FunctionalityScope : EVA.Framework.FunctionalityScope; 
    UserType : EVA.Framework.UserTypes; 
  }
  
  export class SentinelSyncGeneralResponseMessageTemplateDto {
    Name : string; 
    Type : EVA.Core.MessageTemplateTypes; 
    Template : string; 
    Helpers : string; 
    Destination : EVA.Core.MessageTemplateDestinations; 
    PaperProperties : EVA.Core.PaperProperties; 
    IsDisabled : boolean; 
  }
  
  export class PushSentinelOrderOrderLineDiscount {
    BackendID : string; 
    Description : string; 
    Amount : number; // Decimal
  }
  
  export class PushSentinelOrderOrderLineDto {
    ID : number; // Int32
    BackendID : string; 
    CustomID : string; 
    UnitPriceInTax : number; // Decimal
    TaxRate : number; // Decimal
    Quantity : number; // Int32
    Description : string; 
    Discounts : EVA.Sentinel.Common.PushSentinelOrderOrderLineDiscount[]; 
  }
  
  export class SentinelSyncGeneralResponseOrganizationUnitDto {
    BackendID : string; 
    Name : string; 
    Description : string; 
    CashHandler : EVA.Sentinel.Common.SentinelSyncGeneralResponseCashHandlerDto; 
    BackendRelationID : string; 
    BackendCompanyID : string; 
    BranchNumber : string; 
    GlobalLocationNumber : string; 
    Address : EVA.Core.AddressDataDto; 
    Status : EVA.Core.OrganizationUnitStatus; 
    Type : EVA.Framework.OrganizationUnitTypes; 
    Latitude? : number; // Double, nullable
    Longitude? : number; // Double, nullable
    Subnet : string; 
    IpAddress : string; 
    BankAccount : string; 
    VatNumber : string; 
    RegistrationNumber : string; 
    EmailAddress : string; 
    PhoneNumber : string; 
    UseForAccounting : boolean; 
    CountryID : string; 
    LanguageID : string; 
    CurrencyID : string; 
    CostPriceCurrencyID : string; 
    TimeZone : string; 
    AssortmentID : number; // Int32
  }
  
  export class PushSentinelOrderPaymentDto {
    BackendID : string; 
    Method : string; 
    Type : string; 
    Amount : number; // Decimal
    Data : string; 
    ID : number; // Int32
    ProxyID : string; 
  }
  
  export class SentinelSyncGeneralResponsePaymentTypeDto {
    Name : string; 
    Code : string; 
    IsRoundingType : boolean; 
    CashJournalMethod : EVA.Core.PaymentCashJournalMethod; 
    IsExternal : boolean; 
    LedgerClassID : string; 
    PrintOnDocuments : boolean; 
    BackendRelationID : string; 
    BookPaymentMethodInvoice : boolean; 
    CanBeUsedForAuthorization : boolean; 
    AutoFinalizeOnOrderPaid : boolean; 
  }
  
  export class SentinelSyncCatalogResponseProductDto {
    ID : number; // Int32
    BackendID : string; 
    BrandName : string; 
    CustomID : string; 
    Name : string; 
    Type : EVA.Core.ProductTypes; 
    BackendSystemID : string; 
    BackendStatus : string; 
    LogicalLevel : string; 
    ConfigurableProperty : string; 
    ConfigurablePropertyValue : string; 
    TaxCode : string; 
    _data : any; 
    Data : string; 
    UnitPriceInTax? : number; // Decimal, nullable
    Children : number[]; 
    HasParents : boolean; 
    Barcodes : string[]; 
    GiftCardType : string; 
    GiftCardData : string; 
  }
  
  export class PushSentinelOrder extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.PushSentinelOrderResponse> {
    SentinelOrderID : string; 
    CreationTime? : string; // DateTime, nullable
    Remark : string; 
    Customer : EVA.Sentinel.Common.PushSentinelOrderCustomerDto; 
    ShippingAddress : EVA.Core.AddressDataDto; 
    BillingAddress : EVA.Core.AddressDataDto; 
    Lines : EVA.Sentinel.Common.PushSentinelOrderOrderLineDto[]; 
    Payments : EVA.Sentinel.Common.PushSentinelOrderPaymentDto[]; 
  }
  
  export class PushSentinelOrderResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    AlreadyExists : boolean; 
  }
  
  export class SentinelSyncCatalog extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncCatalogResponse> {
  }
  
  export class SentinelSyncCatalogResponse extends EVA.API.ResponseMessage {
    Products : EVA.Sentinel.Common.SentinelSyncCatalogResponseProductDto[]; 
  }
  
  export class SentinelSyncGeneral extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncGeneralResponse> {
  }
  
  export class SentinelSyncGeneralResponse extends EVA.API.ResponseMessage {
    LedgerClasses : string[]; 
    Currencies : EVA.Sentinel.Common.CurrencyInfo[]; 
    OrganizationUnit : EVA.Sentinel.Common.SentinelSyncGeneralResponseOrganizationUnitDto; 
    Settings : { [ key : string ] : string }; 
    PaymentTypes : EVA.Sentinel.Common.SentinelSyncGeneralResponsePaymentTypeDto[]; 
    MessageTemplates : EVA.Sentinel.Common.SentinelSyncGeneralResponseMessageTemplateDto[]; 
    Stations : EVA.Sentinel.Common.SentinelSyncGeneralResponseStationDto[]; 
    Devices : EVA.Sentinel.Common.SentinelSyncGeneralResponseDeviceDto[]; 
  }
  
  export class SentinelSyncUsers extends EVA.API.RequestMessageGeneric<EVA.Sentinel.Common.SentinelSyncUsersResponse> {
  }
  
  export class SentinelSyncUsersResponse extends EVA.API.ResponseMessage {
    Users : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDto[]; 
  }
  
  export class SentinelSyncGeneralResponseStationDto {
    ID : number; // Int32
    Name : string; 
    ProxyID : string; 
  }
  
  export class SentinelSyncUsersResponseUserDto {
    EmailAddress : string; 
    Nickname : string; 
    FirstName : string; 
    LastName : string; 
    LanguageID : string; 
    CountryID : string; 
    Type : EVA.Framework.UserTypes; 
    BackendSystemID : string; 
    BackendID : string; 
    TimeZone : string; 
    Functionalities : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDtoFunctionalityDto[]; 
    AuthenticationData : EVA.Sentinel.Common.SentinelSyncUsersResponseUserDtoAuthenticationDataDto[]; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Sentinel.Local {
  
  export class SetSentinelStatus extends EVA.API.RequestMessageWithEmptyResponse {
    RunningAsSentinel? : boolean; 
    InternetAvailable? : boolean; 
    EVACloudAvailable? : boolean; 
  }
  
  export class TriggerSyncRequest extends EVA.API.RequestMessageWithEmptyResponse {
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.ShelfManagement {
  
  export class CreateOrganizationUnitShelf extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateOrganizationUnitShelfResponse> {
    ShelfID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
  }
  
  export class CreateOrganizationUnitShelfResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateProductRestriction extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateProductRestrictionResponse> {
    ProductID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
    MaximumReplenismentQuantity? : number; // Int32, nullable
    MaximumStockQuantity? : number; // Int32, nullable
  }
  
  export class CreateProductRestrictionResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelf extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfResponse> {
    Name : string; 
    Description : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
    StockLabelID? : number; // Int32, nullable
    TypeID : number; // Int32
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class CreateShelfBlob extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfBlobResponse> {
    ShelfID : number; // Int32
    BlobID : string; 
  }
  
  export class CreateShelfBlobResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfLocation extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationResponse> {
    ShelfID : number; // Int32
    ParentID? : number; // Int32, nullable
    TemplateID : number; // Int32
    Name : string; 
  }
  
  export class CreateShelfLocationBlob extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationBlobResponse> {
    ShelfLocationID : number; // Int32
    BlobID : string; 
  }
  
  export class CreateShelfLocationBlobResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfLocationProduct extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationProductResponse> {
    ShelfLocationID : number; // Int32
    ProductID : number; // Int32
    MinimumQuantity : number; // Int32
    MaximumQuantity : number; // Int32
  }
  
  export class CreateShelfLocationProductResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfLocationProducts extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationProductsResponse> {
    ShelfLocationID : number; // Int32
    Products : EVA.ShelfManagement.CreateShelfLocationProductsProduct[]; 
  }
  
  export class CreateShelfLocationProductsResponse extends EVA.API.ResponseMessage {
    IDs : number[]; 
  }
  
  export class CreateShelfLocationResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfLocationTemplate extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationTemplateResponse> {
    TypeID : number; // Int32
    Name : string; 
    ProductLimit? : number; // Int32, nullable
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class CreateShelfLocationTemplateResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfLocationTemplateType extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfLocationTemplateTypeResponse> {
    Name : string; 
    Description : string; 
  }
  
  export class CreateShelfLocationTemplateTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateShelfType extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.CreateShelfTypeResponse> {
    Name : string; 
    Description : string; 
  }
  
  export class CreateShelfTypeResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class DeleteOrganizationUnitShelf extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteProductRestriction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelf extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfBlob extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfLocation extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfLocationBlob extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfLocationProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfLocationTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfLocationTemplateType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteShelfType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DownloadShelfLocationProducts extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    ShelfLocationID : number; // Int32
  }
  
  export class DuplicateShelf extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.DuplicateShelfResponse> {
    ShelfID : number; // Int32
    Name : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
  }
  
  export class DuplicateShelfResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class ExportShelfTemplate extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    ShelfIDs : number[]; 
  }
  
  export class GetOrganizationUnitDistributionTree extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetOrganizationUnitDistributionTreeResponse> {
  }
  
  export class GetOrganizationUnitDistributionTreeResponse extends EVA.API.ResponseMessage {
    Tree : EVA.ShelfManagement.TreeNode; 
  }
  
  export class GetOrganizationUnitShelfByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetOrganizationUnitShelfByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetOrganizationUnitShelfByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShelfID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
  }
  
  export class GetProductRestrictionByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetProductRestrictionByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetProductRestrictionByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ProductID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
    MaximumReplenismentQuantity? : number; // Int32, nullable
    MaximumStockQuantity? : number; // Int32, nullable
  }
  
  export class GetShelfBlobByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfBlobByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfBlobByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShelfID : number; // Int32
    BlobID : string; 
  }
  
  export class GetShelfByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
    StockLabelID? : number; // Int32, nullable
    TypeID : number; // Int32
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class GetShelfLocationBlobByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationBlobByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfLocationBlobByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShelfLocationID : number; // Int32
    BlobID : string; 
  }
  
  export class GetShelfLocationByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfLocationByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShelfID : number; // Int32
    ParentID? : number; // Int32, nullable
    TemplateID : number; // Int32
    Name : string; 
  }
  
  export class GetShelfLocationProductByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationProductByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfLocationProductByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    ShelfLocationID : number; // Int32
    ProductID : number; // Int32
    MinimumQuantity : number; // Int32
    MaximumQuantity : number; // Int32
  }
  
  export class GetShelfLocationTemplateByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationTemplateByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfLocationTemplateByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    TypeID : number; // Int32
    Name : string; 
    ProductLimit? : number; // Int32, nullable
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class GetShelfLocationTemplateTypeByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationTemplateTypeByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfLocationTemplateTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class GetShelfLocationTemplateTypes extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfLocationTemplateTypesResponse> {
  }
  
  export class GetShelfLocationTemplateTypesResponse extends EVA.API.ResponseMessage {
    ShelfLocationTemplateTypes : EVA.ShelfManagement.GetShelfLocationTemplateTypesResponseShelfLocationTemplateTypeDto[]; 
  }
  
  export class GetShelfTypeByID extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfTypeByIDResponse> {
    ID : number; // Int32
  }
  
  export class GetShelfTypeByIDResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class GetShelfTypes extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.GetShelfTypesResponse> {
  }
  
  export class GetShelfTypesResponse extends EVA.API.ResponseMessage {
    ShelfTypes : EVA.ShelfManagement.GetShelfTypesResponseShelfTypeDto[]; 
  }
  
  export class ImportShelfTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    Data : string; 
  }
  
  export class ListOrganizationUnitShelves extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListOrganizationUnitShelvesResponse> {
  }
  
  export class ListOrganizationUnitShelvesResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListOrganizationUnitShelvesResponseOrganizationUnitShelfDto> {
  }
  
  export class ListProductRestrictions extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListProductRestrictionsResponse> {
  }
  
  export class ListProductRestrictionsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListProductRestrictionsResponseProductRestrictionDto> {
  }
  
  export class ListShelfBlobs extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListShelfBlobsResponse> {
  }
  
  export class ListShelfBlobsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfBlobsResponseShelfBlobDto> {
  }
  
  export class ListShelfLocationBlobs extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListShelfLocationBlobsResponse> {
  }
  
  export class ListShelfLocationBlobsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfLocationBlobsResponseShelfLocationBlobDto> {
  }
  
  export class ListShelfLocationProducts extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.ListShelfLocationProductsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.ShelfManagement.ListShelfLocationProductsFilter>; 
  }
  
  export class ListShelfLocationProductsFilter {
    ProductQuery : string; 
    ShelfLocationID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
    MinimumQuantity? : number; // Int32, nullable
    MaximumQuantity? : number; // Int32, nullable
  }
  
  export class ListShelfLocationProductsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfLocationProductsResponseShelfLocationProductDto> {
  }
  
  export class ListShelfLocations extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListShelfLocationsResponse> {
  }
  
  export class ListShelfLocationsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfLocationsResponseShelfLocationDto> {
  }
  
  export class ListShelfLocationTemplates extends EVA.API.PagedResultRequest<EVA.ShelfManagement.ListShelfLocationTemplatesResponse> {
  }
  
  export class ListShelfLocationTemplatesResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfLocationTemplatesResponseShelfLocationTemplateDto> {
  }
  
  export class ListShelfProducts extends EVA.API.FilteredPagedResultRequest<EVA.ShelfManagement.ListShelfProductsFilter, EVA.ShelfManagement.ListShelfProductsResponse> {
    IncludedProperties : string[]; 
    Query : string; 
  }
  
  export class ListShelfProductsDto {
    OrganizationUnitID : number; // Int32
    StockLabelID : number; // Int32
    StockLabelName : string; 
    ProductID : number; // Int32
    BackendID : string; 
    TotalMinimumQuantity : number; // Int32
    TotalMaximumQuantity : number; // Int32
    Properties : any; 
  }
  
  export class ListShelfProductsFilter {
    OrganizationUnitID? : number; // Int32, nullable
    StockLabelID? : number; // Int32, nullable
    BackendID : string; 
    ProductID? : number; // Int32, nullable
    ProductIDs : number[]; 
  }
  
  export class ListShelfProductsResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelfProductsDto> {
  }
  
  export class ListShelves extends EVA.API.RequestMessageGeneric<EVA.ShelfManagement.ListShelvesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.ShelfManagement.ListShelvesFilter>; 
  }
  
  export class ListShelvesFilter {
    Name : string; 
    TypeID? : number; // Int32, nullable
    StartDateTime? : string; // DateTime, nullable
    EndDateTime? : string; // DateTime, nullable
    ProductID? : number; // Int32, nullable
  }
  
  export class ListShelvesResponse extends EVA.API.PagedResultResponse<EVA.ShelfManagement.ListShelvesResponseShelfDto> {
  }
  
  export class ListOrganizationUnitShelvesResponseOrganizationUnitShelfDto {
    ID : number; // Int32
    ShelfID : number; // Int32
    Shelf : EVA.ShelfManagement.ListOrganizationUnitShelvesResponseShelfDto; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    OrganizationUnitTypeID? : number; // Int32, nullable
  }
  
  export class CreateShelfLocationProductsProduct {
    ProductID : number; // Int32
    MinimumQuantity : number; // Int32
    MaximumQuantity : number; // Int32
  }
  
  export class ListProductRestrictionsResponseProductDto {
    BackendID : string; 
    DisplayValue : string; 
  }
  
  export class ListProductRestrictionsResponseProductRestrictionDto {
    ID : number; // Int32
    ProductID : number; // Int32
    Product : EVA.ShelfManagement.ListProductRestrictionsResponseProductDto; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
    MaximumReplenismentQuantity? : number; // Int32, nullable
    MaximumStockQuantity? : number; // Int32, nullable
  }
  
  export class ListShelfBlobsResponseShelfBlobDto {
    ID : number; // Int32
    ShelfID : number; // Int32
    BlobID : string; 
  }
  
  export class ListOrganizationUnitShelvesResponseShelfDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
    TypeID : number; // Int32
    Type : EVA.Framework.EnumDto; 
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class ListShelfLocationProductsResponseShelfDto {
    Name : string; 
  }
  
  export class ListShelvesResponseShelfDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
    StockLabelID? : number; // Int32, nullable
    TypeID : number; // Int32
    Type : EVA.Framework.EnumDto; 
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class ListShelfLocationBlobsResponseShelfLocationBlobDto {
    ID : number; // Int32
    ShelfLocationID : number; // Int32
    BlobID : string; 
  }
  
  export class ListShelfLocationProductsResponseShelfLocationDto {
    Name : string; 
    ShelfID : number; // Int32
    Shelf : EVA.ShelfManagement.ListShelfLocationProductsResponseShelfDto; 
  }
  
  export class ListShelfLocationsResponseShelfLocationDto {
    ID : number; // Int32
    ShelfID : number; // Int32
    ParentID? : number; // Int32, nullable
    TemplateID : number; // Int32
    Name : string; 
  }
  
  export class ListShelfLocationProductsResponseShelfLocationProductDto {
    ID : number; // Int32
    ShelfLocationID : number; // Int32
    ShelfLocation : EVA.ShelfManagement.ListShelfLocationProductsResponseShelfLocationDto; 
    ProductID : number; // Int32
    Product : EVA.ShelfManagement.ListShelfLocationProductsResponseShelfProductDto; 
    MinimumQuantity : number; // Int32
    MaximumQuantity : number; // Int32
  }
  
  export class ListShelfLocationTemplatesResponseShelfLocationTemplateDto {
    ID : number; // Int32
    TypeID : number; // Int32
    Name : string; 
    ProductLimit? : number; // Int32, nullable
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class GetShelfLocationTemplateTypesResponseShelfLocationTemplateTypeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class ListShelfLocationProductsResponseShelfProductDto {
    BackendID : string; 
    CustomID : string; 
    DisplayValue : string; 
    DisplayPrice? : number; // Decimal, nullable
  }
  
  export class GetShelfTypesResponseShelfTypeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class TreeNode {
    Fraction? : number; // Decimal, nullable
    OrganizationUnitIDs : number[]; 
    OrganizationUnitTypeID? : number; // Int32, nullable
    Negation : boolean; 
    Nodes : EVA.ShelfManagement.TreeNode[]; 
  }
  
  export class UpdateOrganizationUnitDistributionTree extends EVA.API.RequestMessageWithEmptyResponse {
    Tree : EVA.ShelfManagement.TreeNode; 
  }
  
  export class UpdateOrganizationUnitShelf extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ShelfID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
  }
  
  export class UpdateProductRestriction extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ProductID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitTypeID? : number; // Int32, nullable
    MaximumReplenismentQuantity? : number; // Int32, nullable
    MaximumStockQuantity? : number; // Int32, nullable
  }
  
  export class UpdateShelf extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    StartDateTime : string; // DateTime
    EndDateTime? : string; // DateTime, nullable
    StockLabelID? : number; // Int32, nullable
    TypeID : number; // Int32
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class UpdateShelfBlob extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ShelfID : number; // Int32
    BlobID : string; 
  }
  
  export class UpdateShelfLocation extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ParentID? : number; // Int32, nullable
    TemplateID : number; // Int32
    Name : string; 
  }
  
  export class UpdateShelfLocationBlob extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ShelfLocationID : number; // Int32
    BlobID : string; 
  }
  
  export class UpdateShelfLocationProduct extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    MinimumQuantity : number; // Int32
    MaximumQuantity : number; // Int32
  }
  
  export class UpdateShelfLocationTemplate extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    TypeID : number; // Int32
    Name : string; 
    ProductLimit? : number; // Int32, nullable
    Height? : number; // Int32, nullable
    Width? : number; // Int32, nullable
    Depth? : number; // Int32, nullable
  }
  
  export class UpdateShelfLocationTemplateType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
  }
  
  export class UpdateShelfType extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
  }
  
  export class UploadShelfLocationProducts extends EVA.API.RequestMessageWithEmptyResponse {
    ShelfLocationID : number; // Int32
    Data : string; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.UserTasks {
  
  export class AddLabelToFullStockCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.AddLabelToFullStockCountResponse> {
    FullStockCountID : number; // Int32
    StockLabelID : number; // Int32
    Name : string; 
  }
  
  export class AddLabelToFullStockCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
  }
  
  export class AddProductToFullStockCountLabel extends EVA.API.RequestMessageGeneric<EVA.UserTasks.AddProductToFullStockCountLabelResponse> {
    ID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
  }
  
  export class AddProductToFullStockCountLabelResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    PreviousQuantity : number; // Int32
  }
  
  export class AvailableUserTaskDto {
    ID : number; // Int32
    Description : string; 
    Priority : number; // Int32
    User : EVA.Core.UserDto; 
    Type : EVA.Core.UserTaskTypeDto; 
    SubType : EVA.Framework.EnumDto; 
    CreationTime : string; // DateTime
    ExpectedTimeToComplete? : any; // TimeSpan, nullable
    Deadline? : string; // DateTime, nullable
    CanBeIgnored : boolean; 
    Data : any; 
  }
  
  export class CancelFullStockCount extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
  }
  
  export class CancelFullStockCountLabel extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
  }
  
  export class CancelUserTask extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CancelUserTaskResponse> {
    TaskID : number; // Int32
    UserID? : number; // Int32, nullable
  }
  
  export class CancelUserTaskResponse extends EVA.API.ResponseMessage {
    Success : boolean; 
  }
  
  export class CanProcessInitialCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CanProcessInitialCycleCountResponse> {
    InitialCycleCountID : number; // Int32
  }
  
  export class CanProcessInitialCycleCountResponse extends EVA.API.ResponseMessage {
    CanProcess : boolean; 
  }
  
  export class CompleteCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CompleteCycleCountResponse> {
    WorkSet : EVA.UserTasks.CycleCountWorkSet; 
  }
  
  export class CompleteCycleCountResponse extends EVA.API.ResponseMessage {
    Results : EVA.UserTasks.CompleteCycleCountStockLabelResult[]; 
  }
  
  export class CompleteCycleCountStockLabelResult {
    OverallResult : EVA.UserTasks.CycleCountAttemptResult; 
    StockLabel : number; // Int32
    ExpectedQuantity? : number; // Int32, nullable
    CountedQuantity : number; // Int32
  }
  
  export class CompleteFullStockCount extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
    CycleCountProductIDs : number[]; 
  }
  
  export class CompleteFullStockCountLabel extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
    Products : { [ key : number ] : number }; 
  }
  
  export class CompletePriceChange extends EVA.API.RequestMessageWithEmptyResponse {
    Task : EVA.UserTasks.PriceChangeWorkSet; 
  }
  
  export class CompleteReservationCleanup extends EVA.API.RequestMessageWithEmptyResponse {
    Task : EVA.UserTasks.ReservationCleanupWorkSet; 
    CreateNewTaskForRemainingLines : boolean; 
  }
  
  export class CompleteReservationDeviationTask extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CompleteReservationDeviationTaskResponse> {
    WorkSet : EVA.UserTasks.ReservationDeviationWorkSet; 
  }
  
  export class CompleteReservationDeviationTaskResponse extends EVA.API.ResponseMessage {
    Retry : boolean; 
  }
  
  export class CompleteStockMovementFollowUp extends EVA.API.RequestMessageWithEmptyResponse {
    WorkSet : EVA.UserTasks.StockMovementFollowUpWorkSet; 
  }
  
  export class CompleteStockReplenishment extends EVA.API.RequestMessageWithEmptyResponse {
    WorkSet : EVA.UserTasks.StockReplenishmentWorkSet; 
  }
  
  export class CompleteStockReservationTask extends EVA.API.RequestMessageWithEmptyResponse {
    Task : EVA.UserTasks.StockReservationTaskDto; 
    // Station to print the receipt on
    StationID? : number; // Int32, nullable
    // Should we print a receipt? Default true
    PrintReceipt? : boolean; 
  }
  
  export class CompleteUserTask extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    WorkSet : EVA.UserTasks.UserTaskWorkSet; 
  }
  
  export class CompleteValueAddedLogisticTask extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
  }
  
  export enum CompleteZonedCycleCountCompletionTypes {
    AcceptPreCount = 0,
    Recount = 1,
  }
  
  export class CompleteZonedCycleCountPreCount extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
    Results : EVA.UserTasks.CompleteZonedCycleCountPreCountResult[]; 
  }
  
  export class CompleteZonedCycleCountPreCountResult {
    StockLabelID : number; // Int32
    CountedQuantity? : number; // Int32, nullable
    Resources : { [ key : string ] : string }[]; 
  }
  
  export class CompleteZonedCycleCounts extends EVA.API.RequestMessageWithEmptyResponse {
    ToComplete : EVA.UserTasks.ZonedCycleCountToComplete[]; 
    CompletionType : EVA.UserTasks.CompleteZonedCycleCountCompletionTypes; 
  }
  
  export class CountProductForInitialCycleCount extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    LabelID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
    Resources : { [ key : string ] : string }; 
  }
  
  export class CountStockLabelForZonedCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CountStockLabelForZonedCycleCountResponse> {
    UserTaskID : number; // Int32
    StockLabelID : number; // Int32
    CountedQuantity : number; // Int32
    Resources : { [ key : string ] : string }[]; 
  }
  
  export class CountStockLabelForZonedCycleCountResponse extends EVA.API.ResponseMessage {
    CountResult : EVA.UserTasks.ZonedCycleCountResultTypes; 
    IsCompleted : boolean; 
  }
  
  export class CreateCycleCountZone extends EVA.API.RequestMessageWithEmptyResponse {
    Name : string; 
    Description : string; 
  }
  
  export class CreateCycleCountZoneGroup extends EVA.API.RequestMessageWithEmptyResponse {
    Name : string; 
    OrganizationUnitSetID : number; // Int32
    ZoneIDs : number[]; 
  }
  
  export class CreateFullStockCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CreateFullStockCountResponse> {
    RecountInterval? : number; // Int32, nullable
    CreateFullStockCountLabelsForShelves? : boolean; 
  }
  
  export class CreateFullStockCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
  }
  
  export class CreateInitialCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CreateInitialCycleCountResponse> {
  }
  
  export class CreateInitialCycleCountResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.InitialCycleCountDto; 
  }
  
  export class CreateManualCycleCount extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ProductID : number; // Int32
  }
  
  export class CreateStockReplenishmentTask extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    ProductID : number; // Int32
    Quantity : number; // Int32
    Type : EVA.UserTasks.StockReplenishmentType; 
  }
  
  export class CreateStockReplenishmentTasks extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    Type : EVA.UserTasks.StockReplenishmentType; 
    Products : { [ key : number ] : number }; 
  }
  
  export class CreateUserTask extends EVA.API.RequestMessageWithEmptyResponse {
    UserID? : number; // Int32, nullable
    OrganizationUnitID : number; // Int32
    TypeID : number; // Int32
    Deadline? : string; // DateTime, nullable
    ExpectedTimeToComplete? : any; // TimeSpan, nullable
  }
  
  export class CreateUserTaskSchedule extends EVA.API.RequestMessageWithEmptyResponse {
    TypeID : number; // Int32
    OrganizationUnitTypeID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    Description : string; 
    Deadline : any; // TimeSpan
    CronExpression : string; 
    ApplicationID? : number; // Int32, nullable
  }
  
  export class CreateUserTaskType extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CreateUserTaskTypeResponse> {
    Name : string; 
    Description : string; 
    Configuration : string; 
    DefaultPriority : number; // Int32
    DefaultRequired : boolean; 
  }
  
  export class CreateUserTaskTypeOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.UserTasks.UserTaskTypeOrganizationUnitSetResponse> {
    UserTaskTypeID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    Required : boolean; 
  }
  
  export class CreateUserTaskTypeResponse extends EVA.API.ResponseMessage {
    UserTaskType : EVA.Core.UserTaskTypeDto; 
  }
  
  export class CreateZonedCycleCount extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    ProductID : number; // Int32
  }
  
  export class CreateZonedCycleCountPlan extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CreateZonedCycleCountPlanResponse> {
    Date : string; // DateTime
    Description : string; 
    ProductSearchModel : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
    OrganizationUnitFilter : EVA.UserTasks.ZonedCycleCountScheduleOrganizationUnitsFilter; 
  }
  
  export class CreateZonedCycleCountPlanResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
  }
  
  export class CreateZonedCycleCounts extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitIDs : number[]; 
    ProductIDs : number[]; 
  }
  
  export class CreateZonedCycleCountsByQuery extends EVA.API.RequestMessageWithEmptyResponse {
    Query : string; 
    Filters : { [ key : string ] : EVA.Core.FilterModel }; 
    OrganizationUnitFilter : EVA.UserTasks.CreateZonedCycleCountsByQueryOrganizationUnitFilterModel; 
    OrganizationUnitSetID? : number; // Int32, nullable
    // Obsolete, please use the OrganizationUnitFilter
    OrganizationUnitIDs : number[]; 
  }
  
  export class CreateZonedCycleCountSchedule extends EVA.API.RequestMessageGeneric<EVA.UserTasks.CreateZonedCycleCountScheduleResponse> {
    OrganizationUnitID : number; // Int32
    Description : string; 
    CycleCountIntervalInDays : number; // Int32
    ProductSearchModel : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
  }
  
  export class CreateZonedCycleCountScheduleResponse extends EVA.API.CreateResponse {
  }
  
  export enum CycleCountAttemptResult {
    None = 0,
    CountAgain = 1,
    Finished = 2,
    FinishedWithDeviation = 3,
    CompleteResource = 5,
  }
  
  export class GetCycleCountDetailResponseCycleCountDto {
    ID : number; // Int32
    StockLabel : number; // Int32
    ProductID? : number; // Int32, nullable
    Product : EVA.Core.ProductDto; 
    UserTaskID : number; // Int32
    UserTask : EVA.Core.UserTaskDto; 
    IsCompleted : boolean; 
    UserID? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    Results : EVA.UserTasks.CycleCountResultDto[]; 
    Result : EVA.UserTasks.CycleCountResults; 
    IsActive : boolean; 
    CreationTime : string; // DateTime
  }
  
  export class ListCycleCountsResponseCycleCountDto {
    ID : number; // Int32
    StockLabel : number; // Int32
    ProductID? : number; // Int32, nullable
    Product : EVA.Core.ProductDto; 
    UserTaskID : number; // Int32
    UserTask : EVA.Core.UserTaskDto; 
    IsCompleted : boolean; 
    UserID? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    Results : EVA.UserTasks.CycleCountResultDto[]; 
    Result : EVA.UserTasks.CycleCountResults; 
    IsActive : boolean; 
    CreationTime : string; // DateTime
  }
  
  export class CycleCountResultDto {
    CycleCountID : number; // Int32
    ExpectedQuantity : number; // Int32
    CountedQuantity : number; // Int32
    ResourceID? : number; // Int32, nullable
    StockLabelID : number; // Int32
    StockLabel : number; // Int32
    ID : number; // Int32
    CreatedByID? : number; // Int32, nullable
    CreatedBy : EVA.Core.UserDto; 
    CreationTime : string; // DateTime
    StockLabelDescription : string; 
  }
  
  export enum CycleCountResults {
    New = 0,
    InProgress = 1,
    Deviated = 2,
    Correct = 3,
    Unknown = 4,
  }
  
  export class CycleCountWorkSet {
    UserTaskID : number; // Int32
    ProductID : number; // Int32
    Product : EVA.Core.ProductDto; 
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
    StockLabels : EVA.UserTasks.StockLabelToCycleCount[]; 
  }
  
  export class CycleCountWorkSetLine {
    CountedQuantity : number; // Int32
    Resource : EVA.UserTasks.ResourceToCycleCount; 
    NewResources : { [ key : string ] : string }; 
  }
  
  export class CycleCountZoneDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class ListCycleCountZoneGroupsResponseCycleCountZoneGroupDto {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitSetID : number; // Int32
    OrganizationUnitSetName : string; 
    Zones : EVA.Framework.EnumDto[]; 
  }
  
  export class CycleCountZonesForOrganizationUnitDto {
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    Zones : EVA.UserTasks.CycleCountZoneDto[]; 
  }
  
  export class DeactivateUserTask extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskIDs : number[]; 
  }
  
  export class DeactivateZonedCycleCount extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskIDs : number[]; 
  }
  
  export class DeleteCycleCountZone extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteCycleCountZoneGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteInitialCycleCountResult extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ProductID : number; // Int32
    StockLabel : number; // Int32
    ResourceID? : number; // Int32, nullable
    LabelID : number; // Int32
  }
  
  export class DeleteUserTaskTypeOrganizationUnitSet extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskTypeID : number; // Int32
    OrganizationUnitSetID : number; // Int32
  }
  
  export class DeleteZonedCycleCountPlan extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class DeleteZonedCycleCountSchedule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
  }
  
  export class FullStockCountResult {
    FullStockCountLabelID : number; // Int32
    Name : string; 
    StockLabelID : number; // Int32
    StockLabelName : string; 
    UserID? : number; // Int32, nullable
    UserFullName : string; 
    ProductID : number; // Int32
    BackendID : string; 
    Quantity : number; // Int32
    Properties : any; 
    RecountUserID? : number; // Int32, nullable
    RecountUserFullName : string; 
    RecountQuantity? : number; // Int32, nullable
  }
  
  export class FullStockCountSummary {
    StockLabelID : number; // Int32
    StockLabelName : string; 
    ProductID : number; // Int32
    BackendID : string; 
    Properties : any; 
    CountQuantity : number; // Int32
    CurrentQuantity : number; // Int32
  }
  
  export enum FullStockCountType {
    Initial = 1,
    InProgress = 2,
  }
  
  export class GetCurrentInitialCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetCurrentInitialCycleCountResponse> {
  }
  
  export class GetCurrentInitialCycleCountResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.InitialCycleCountDto; 
  }
  
  export class GetCycleCountDetail extends EVA.API.GetRequestGeneric<EVA.UserTasks.GetCycleCountDetailResponse> {
  }
  
  export class GetCycleCountDetailResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.GetCycleCountDetailResponseCycleCountDto; 
  }
  
  export class GetCycleCountSettings extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetCycleCountSettingsResponse> {
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class GetCycleCountSettingsResponse extends EVA.API.ResponseMessage {
    OrganizationUnitID : number; // Int32
    GenerateCycleCountAfterNASC : boolean; 
    MaxCycleCountsPerShop : number; // Int32
    MaxCycleCountsPerShopPerDay : number; // Int32
    PastDueProductsOnly : boolean; 
    CycleCountDays : EVA.Framework.DaysOfWeek; 
    StockLabels : string[]; 
  }
  
  export class GetCycleCountZones extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetCycleCountZonesResponse> {
  }
  
  export class GetCycleCountZonesResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.CycleCountZoneDto[]; 
  }
  
  export class GetFullStockCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetFullStockCountResponse> {
    UserTaskID : number; // Int32
  }
  
  export class GetFullStockCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    RecountInterval : number; // Int32
    CreatedByFullName : string; 
    CreationTime : string; // DateTime
    Type : EVA.UserTasks.FullStockCountType; 
    Progress : number; // Decimal
    IsReady : boolean; 
  }
  
  export class GetInitialCycleCountLabel extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetInitialCycleCountLabelResponse> {
    LabelID : number; // Int32
  }
  
  export class GetInitialCycleCountLabelResponse extends EVA.API.ResponseMessage {
    Label : EVA.UserTasks.InitialCycleCountLabelDto; 
  }
  
  export class GetStatusForZonedCycleCountPreCounts extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetStatusForZonedCycleCountPreCountsResponse> {
    ZonedCycleCountUserTaskID? : number; // Int32, nullable
    PreCountUserTaskID? : number; // Int32, nullable
  }
  
  export class GetStatusForZonedCycleCountPreCountsResponse extends EVA.API.ResponseMessage {
    PreCounts : EVA.UserTasks.GetStatusForZonedCycleCountPreCountsResponsePreCountStatus[]; 
  }
  
  export class GetStockReservationTask extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetStockReservationTaskResponse> {
    OrderID : number; // Int32
  }
  
  export class GetStockReservationTaskResponse extends EVA.API.GetResponse<EVA.UserTasks.StockReservationTaskDto> {
  }
  
  export class GetUserTaskCounts extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetUserTaskCountsResponse> {
    UserTaskTypes : string[]; 
    // <br />Also include the already assigned tasks in the counts<br />
    IncludeAssignedTasks : boolean; 
  }
  
  export class GetUserTaskCountsResponse extends EVA.API.ResponseMessage {
    NumberOfTasks : number; // Int32
    DetailedNumberOfTasks : { [ key : string ] : EVA.UserTasks.GetUserTaskCountsResponseUserTaskCount }; 
  }
  
  export class GetUserTaskDetails extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetUserTaskDetailsResponse> {
    UserTaskID : number; // Int32
  }
  
  export class GetUserTaskDetailsResponse extends EVA.API.ResponseMessage {
    Details : EVA.UserTasks.UserTaskDetails; 
  }
  
  export class GetUserTaskTypeOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.UserTasks.UserTaskTypeOrganizationUnitSetResponse> {
    UserTaskTypeID : number; // Int32
    OrganizationUnitSetID : number; // Int32
  }
  
  export class GetUserTaskTypes extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetUserTaskTypesResponse> {
  }
  
  export class GetUserTaskTypesResponse extends EVA.API.ResponseMessage {
    Types : EVA.Core.UserTaskTypeDto[]; 
  }
  
  export class GetUserWhoDeletedCycleCountZoneAndMakeItGreatAgain extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetUserWhoDeletedCycleCountZoneAndMakeItGreatAgainResponse> {
    ID : number; // Int32
  }
  
  export class GetUserWhoDeletedCycleCountZoneAndMakeItGreatAgainResponse extends EVA.API.ResponseMessage {
    LastModifiedByID? : number; // Int32, nullable
    LastModificationTime? : string; // DateTime, nullable
  }
  
  export class GetValueAddedLogisticTasks extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetValueAddedLogisticTasksResponse> {
    OrderID? : number; // Int32, nullable
    OrderLineIDs : number[]; 
  }
  
  export class GetValueAddedLogisticTasksResponse extends EVA.API.ResponseMessage {
    OrderTasks : EVA.UserTasks.GetValueAddedLogisticTasksResponseModel[]; 
    OrderLineTasks : EVA.UserTasks.GetValueAddedLogisticTasksResponseModel[]; 
  }
  
  export class GetZonedCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetZonedCycleCountResponse> {
    ID : number; // Int32
    IncludedFields : string[]; 
  }
  
  export class GetZonedCycleCountPlan extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetZonedCycleCountPlanResponse> {
    ID : number; // Int32
  }
  
  export class GetZonedCycleCountPlanResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.ZonedCycleCountPlanDto; 
  }
  
  export class GetZonedCycleCountPreCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.GetZonedCycleCountPreCountResponse> {
    UserTaskID : number; // Int32
    IncludedFields : string[]; 
  }
  
  export class GetZonedCycleCountPreCountDto {
    CycleCountZone : EVA.Framework.EnumDto; 
    User : EVA.UserTasks.GetZonedCycleCountPreCountUserDto; 
    Results : EVA.UserTasks.GetZonedCycleCountPreCountResult[]; 
  }
  
  export class GetZonedCycleCountPreCountedQuantity {
    StockLabel : EVA.Framework.EnumDto; 
    CountedQuantity? : number; // Int32, nullable
  }
  
  export class GetZonedCycleCountPreCountResponseGetZonedCycleCountPreCountProduct {
    ID : number; // Int32
    CustomID : string; 
    Type : EVA.Core.ProductTypes; 
    Content : any; 
    UnitPriceInTax : number; // Decimal
    CurrencyID : string; 
  }
  
  export class GetZonedCycleCountPreCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    CycleCountZone : EVA.Framework.EnumDto; 
    StockLabelsToCount : EVA.Framework.EnumDto[]; 
    Product : EVA.UserTasks.GetZonedCycleCountPreCountResponseGetZonedCycleCountPreCountProduct; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
  }
  
  export class GetZonedCycleCountPreCountResult {
    StockLabel : EVA.Framework.EnumDto; 
    CountedQuantity : number; // Int32
    CreationTime : string; // DateTime
    CurrentStock? : number; // Int32, nullable
  }
  
  export class GetZonedCycleCountPreCountUserDto {
    ID : number; // Int32
    Name : string; 
  }
  
  export class GetZonedCycleCountProduct {
    ID : number; // Int32
    CustomID : string; 
    Type : EVA.Core.ProductTypes; 
    Content : any; 
  }
  
  export class GetZonedCycleCountResponse extends EVA.API.ResponseMessage {
    StockLabelsToCount : EVA.Framework.EnumDto[]; 
    Product : EVA.UserTasks.GetZonedCycleCountProduct; 
    StockMutationsSincePreCount : EVA.UserTasks.GetZonedCycleCountStockMutation[]; 
    PreCounts : EVA.UserTasks.GetZonedCycleCountPreCountDto[]; 
    PreCountedQuantities : EVA.UserTasks.GetZonedCycleCountPreCountedQuantity[]; 
    StockMutationQuantitiesSincePreCount : EVA.UserTasks.GetZonedCycleCountStockMutationQuantity[]; 
    StockLabelQuantities : EVA.UserTasks.GetZonedCyleCountStockLabelQuantities[]; 
    ExpectedPreCountedQuantity? : number; // Int32, nullable
    PreCountedQuantity? : number; // Int32, nullable
  }
  
  export class GetZonedCycleCountStockMutation {
    StockLabel : EVA.Framework.EnumDto; 
    StockMutationReason : EVA.Framework.EnumDto; 
    MutationQuantity : number; // Int32
    CreationTime : string; // DateTime
  }
  
  export class GetZonedCycleCountStockMutationQuantity {
    TotalMutationQuantity : number; // Int32
    Since : string; // DateTime
    StockLabel : EVA.Framework.EnumDto; 
  }
  
  export class GetZonedCyleCountStockLabelQuantities {
    StockLabel : EVA.Framework.EnumDto; 
    CurrentQuantityOnHand : number; // Int32
    ExpectedQuantity : number; // Int32
    CountedQuantity : number; // Int32
    ModifiedQuantity? : number; // Int32, nullable
  }
  
  export class IgnoreUserTask extends EVA.API.RequestMessageWithEmptyResponse {
    UserTaskID : number; // Int32
  }
  
  export class InitialCycleCountDto {
    ID : number; // Int32
    Status : EVA.UserTasks.InitialCycleCountStatus; 
    OrganizationUnitID : number; // Int32
  }
  
  export class InitialCycleCountLabelDto {
    ID : number; // Int32
    Number : number; // Int32
    Status : EVA.UserTasks.InitialCycleCountLabelStatus; 
    StockLabel? : number; // Int32, nullable
    ItemPreCount? : number; // Int32, nullable
    ItemEndCount? : number; // Int32, nullable
    CreatedByID : number; // Int32
    CreationTime : string; // DateTime
    InitialCycleCount : EVA.UserTasks.InitialCycleCountDto; 
    PreCountedByFullName : string; 
    CountedByFullName : string; 
  }
  
  export enum InitialCycleCountLabelStatus {
    New = 0,
    PreCounted = 1,
    Counted = 2,
  }
  
  export enum InitialCycleCountStatus {
    New = 0,
    DetailCount = 1,
    Processing = 2,
    Finished = 3,
  }
  
  export class ListAvailableUserTasks extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListAvailableUserTasksResponse> {
    // Return only UserTasks attached to this UserID
    UserID? : number; // Int32, nullable
    // Return only Started/Open UserTasks
    IsStarted? : boolean; 
    // Return only UserTasks of one of the specified types
    UserTaskTypes : string[]; 
    // Return only UserTasks with one of the specified subtypes
    UserTaskSubTypes : string[]; 
    // Filter for a specific UserTaskType.Name using a property name and a list of values.
    Filters : { [ key : string ] : { [ key : string ] : any[] } }; 
  }
  
  export class ListAvailableUserTasksResponse extends EVA.API.ResponseMessage {
    AvailableTasks : EVA.UserTasks.AvailableUserTaskDto[]; 
    Aggregations : { [ key : string ] : { [ key : string ] : EVA.UserTasks.UserTaskDataAggregation[] } }; 
  }
  
  export class ListCycleCountGroupsFilter {
    Name : string; 
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitSetID? : number; // Int32, nullable
    CycleCountZoneID? : number; // Int32, nullable
  }
  
  export class ListCycleCounts extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListCycleCountsResponse> {
    ProductID? : number; // Int32, nullable
    StockLabel? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    BackendID : string; 
    CreatedBy : string; 
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
    Result : EVA.UserTasks.CycleCountResults; 
    IsCompleted? : boolean; 
    PageConfig : EVA.Framework.PageConfig; 
    CustomID : string; 
  }
  
  export class ListCycleCountsResponse extends EVA.API.ResponseMessage {
    CycleCounts : EVA.Framework.PagedResultGeneric<EVA.UserTasks.ListCycleCountsResponseCycleCountDto>; 
  }
  
  export class ListCycleCountZoneGroups extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListCycleCountZoneGroupsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.UserTasks.ListCycleCountGroupsFilter>; 
  }
  
  export class ListCycleCountZoneGroupsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ListCycleCountZoneGroupsResponseCycleCountZoneGroupDto> {
  }
  
  export class ListCycleZonesForOrganizationUnits extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListCycleZonesForOrganizationUnitsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.UserTasks.ListOrganizationUnitCycleCountZonesFilter>; 
  }
  
  export class ListCycleZonesForOrganizationUnitsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.CycleCountZonesForOrganizationUnitDto> {
  }
  
  export class ListFullStockCountDto {
    ID : number; // Int32
    RecountInterval : number; // Int32
    Type : EVA.UserTasks.FullStockCountType; 
    UserTaskID : number; // Int32
    UserID? : number; // Int32, nullable
    UserFullName : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    IsActive : boolean; 
    IsCompleted : boolean; 
  }
  
  export class ListFullStockCountLabelDto {
    ID : number; // Int32
    FullStockCountID : number; // Int32
    Name : string; 
    StockLabelID : number; // Int32
    StockLabelName : string; 
    IsRecount : boolean; 
    UserTaskID : number; // Int32
    UserID? : number; // Int32, nullable
    UserFullName : string; 
    IsActive : boolean; 
    IsCompleted : boolean; 
  }
  
  export class ListFullStockCountLabelProductDto {
    ProductID : number; // Int32
    BackendID : string; 
    Quantity : number; // Int32
    Properties : any; 
  }
  
  export class ListFullStockCountLabelProducts extends EVA.API.FilteredPagedResultRequest<EVA.UserTasks.ListFullStockCountLabelProductsFilter, EVA.UserTasks.ListFullStockCountLabelProductsResponse> {
    ID : number; // Int32
    IncludedProperties : string[]; 
  }
  
  export class ListFullStockCountLabelProductsFilter {
    ProductID? : number; // Int32, nullable
  }
  
  export class ListFullStockCountLabelProductsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ListFullStockCountLabelProductDto> {
  }
  
  export class ListFullStockCountLabels extends EVA.API.FilteredPagedResultRequest<EVA.UserTasks.ListFullStockCountLabelsFilter, EVA.UserTasks.ListFullStockCountLabelsResponse> {
    ID : number; // Int32
  }
  
  export class ListFullStockCountLabelsFilter {
    UserID? : number; // Int32, nullable
    StockLabelID? : number; // Int32, nullable
    ShowInactiveTasks : boolean; 
    ShowCompletedTasks : boolean; 
  }
  
  export class ListFullStockCountLabelsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ListFullStockCountLabelDto> {
  }
  
  export class ListFullStockCountResult extends EVA.API.FilteredPagedResultRequest<EVA.UserTasks.ListFullStockCountResultFilter, EVA.UserTasks.ListFullStockCountResultResponse> {
    ID : number; // Int32
    IncludedProperties : string[]; 
  }
  
  export class ListFullStockCountResultFilter {
    UserID? : number; // Int32, nullable
    StockLabelID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
    OnlyShowDeviations : boolean; 
  }
  
  export class ListFullStockCountResultResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.FullStockCountResult> {
  }
  
  export class ListFullStockCounts extends EVA.API.FilteredPagedResultRequest<EVA.UserTasks.ListFullStockCountsFilter, EVA.UserTasks.ListFullStockCountsResponse> {
  }
  
  export class ListFullStockCountsFilter {
    OrganizationUnitID? : number; // Int32, nullable
    UserID? : number; // Int32, nullable
    ShowInactiveTasks : boolean; 
    ShowCompletedTasks : boolean; 
  }
  
  export class ListFullStockCountsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ListFullStockCountDto> {
  }
  
  export class ListFullStockCountSummary extends EVA.API.FilteredPagedResultRequest<EVA.UserTasks.ListFullStockCountSummaryFilter, EVA.UserTasks.ListFullStockCountSummaryResponse> {
    ID : number; // Int32
    IncludedProperties : string[]; 
  }
  
  export class ListFullStockCountSummaryFilter {
    StockLabelID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
    OnlyShowDeviations : boolean; 
  }
  
  export class ListFullStockCountSummaryResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.FullStockCountSummary> {
  }
  
  export class ListInitialCycleCountLabels extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListInitialCycleCountLabelsResponse> {
    InitialCycleCountID : number; // Int32
    Start : number; // Int32
    Limit : number; // Int32
  }
  
  export class ListInitialCycleCountLabelsResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.InitialCycleCountLabelDto[]; 
    Total : number; // Int32
  }
  
  export class ListInitialCycleCountResults extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListInitialCycleCountResultsResponse> {
    Start : number; // Int32
    Limit : number; // Int32
    ShowAll : boolean; 
    ProductID? : number; // Int32, nullable
    CustomItemNumber : string; 
    StockLabel? : number; // Int32, nullable
    ResourceID? : number; // Int32, nullable
    LabelID? : number; // Int32, nullable
  }
  
  export class ListInitialCycleCountResultsResponse extends EVA.API.ResponseMessage {
    Results : EVA.UserTasks.StockWithInitialCycleCountResultDto[]; 
    Total : number; // Int32
  }
  
  export class ListOrganizationUnitCycleCountZonesFilter {
    OrganizationUnitID : number; // Int32
  }
  
  export class ListTasksForOrganization extends EVA.API.PagedResultRequest<EVA.UserTasks.ListTasksForOrganizationResponse> {
    UserTaskTypes : string[]; 
  }
  
  export class ListTasksForOrganizationResponse extends EVA.API.PagedResultResponse<EVA.Core.UserTaskDto> {
  }
  
  export class ListTasksThatBlockPeriodClosing extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListTasksThatBlockPeriodClosingResponse> {
  }
  
  export class ListTasksThatBlockPeriodClosingResponse extends EVA.API.ResponseMessage {
    Tasks : EVA.Core.UserTaskDto[]; 
  }
  
  export class ListUsersWithCycleCountResults extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListUsersWithCycleCountResultsResponse> {
  }
  
  export class ListUsersWithCycleCountResultsResponse extends EVA.API.ResponseMessage {
    Users : EVA.Core.UserDto[]; 
  }
  
  export class ListUserTaskTypeOrganizationUnitSets extends EVA.API.FilteredPagedResultRequest<EVA.Core.ListUserTaskTypeOrganizationUnitSetsFilter, EVA.UserTasks.ListUserTaskTypeOrganizationUnitSetsResponse> {
  }
  
  export class ListUserTaskTypeOrganizationUnitSetsResponse extends EVA.API.PagedResultResponse<EVA.Core.UserTaskTypeOrganizationUnitSetDto> {
  }
  
  export class ListZonedCycleCountPlans extends EVA.API.PagedResultRequest<EVA.UserTasks.ListZonedCycleCountPlansResponse> {
  }
  
  export class ListZonedCycleCountPlansResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ZonedCycleCountPlanDto> {
  }
  
  export class ListZonedCycleCounts extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListZonedCycleCountsResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.UserTasks.ListZonedCycleCountsFilter>; 
  }
  
  export class ListZonedCycleCountSchedules extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ListZonedCycleCountSchedulesResponse> {
    PageConfig : EVA.Framework.PageConfigGeneric<EVA.UserTasks.ListZonedCycleCountSchedulesFilter>; 
  }
  
  export class ListZonedCycleCountSchedulesFilter {
    Description : string; 
    OrganizationUnitID : number; // Int32
  }
  
  export class ListZonedCycleCountSchedulesResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ZonedCycleCountScheduleDto> {
  }
  
  export class ListZonedCycleCountsDto {
    ID : number; // Int32
    UserTaskID : number; // Int32
    IsCompleted : boolean; 
    IsActive : boolean; 
    UserID : number; // Int32
    UserName : string; 
    ResultStatus? : EVA.UserTasks.ZonedCycleCountResultStatus; 
    CreationTime : string; // DateTime
    StartTime? : string; // DateTime, nullable
    CompletionTime? : string; // DateTime, nullable
    ProductID : number; // Int32
    CustomID : string; 
    ProductBarcode : string; 
    ProductDisplayValue : string; 
    ExpectedPreCountedQuantity? : number; // Int32, nullable
    PreCountedQuantity? : number; // Int32, nullable
    DeviationPercentage? : number; // Double, nullable
    FinishedPreCountTasks : number; // Int32
    TotalPreCountTasks : number; // Int32
    PreCountProgression? : number; // Double, nullable
  }
  
  export class ListZonedCycleCountsFilter {
    OrganizationUnitID? : number; // Int32, nullable
    ProductID? : number; // Int32, nullable
    IsCompleted? : boolean; 
    InProgress? : boolean; 
    ResultStatus? : EVA.UserTasks.ZonedCycleCountResultStatus; 
    IsActive? : boolean; 
    UserTaskIDs : number[]; 
    FromDate? : string; // DateTime, nullable
    ToDate? : string; // DateTime, nullable
  }
  
  export class ListZonedCycleCountsResponse extends EVA.API.PagedResultResponse<EVA.UserTasks.ListZonedCycleCountsDto> {
  }
  
  export class MissingProductForInitialCycleCount extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    LabelID : number; // Int32
    Barcode : string; 
    Quantity : number; // Int32
    Photo : string; 
    PhotoMimeType : string; 
  }
  
  export class GetValueAddedLogisticTasksResponseModel {
    OrderLineID? : number; // Int32, nullable
    UserTaskID : number; // Int32
    Type : string; 
    Description : string; 
    Data : any; 
  }
  
  export class OrderLineToCancel {
    OrderLineID : number; // Int32
    QuantityToCancel : number; // Int32
  }
  
  export class OrderLineToOrder {
    OrderLineID : number; // Int32
    QuantityToOrder : number; // Int32
  }
  
  export class CreateZonedCycleCountsByQueryOrganizationUnitFilterModel {
    IDs : number[]; 
    BackendIDs : string[]; 
    CountryIDs : string[]; 
    StatusID? : number; // Int32, nullable
  }
  
  export class PreCountInitialCycleCountLabel extends EVA.API.RequestMessageWithEmptyResponse {
    LabelID : number; // Int32
    Quantity : number; // Int32
    StockLabelID : number; // Int32
  }
  
  export class GetStatusForZonedCycleCountPreCountsResponsePreCountStatus {
    CycleCountZone : EVA.Framework.EnumDto; 
    IsCompleted : boolean; 
    IsStarted : boolean; 
    UserID? : number; // Int32, nullable
    UserFullName : string; 
    CompletionTime? : string; // DateTime, nullable
    PreCountedQuantity? : number; // Int32, nullable
    CountResults : EVA.UserTasks.GetStatusForZonedCycleCountPreCountsResponsePreCountStatusResult[]; 
  }
  
  export class PriceChangeWorkSet {
    UserTaskID : number; // Int32
    PriceChangeTaskID : number; // Int32
    ProductID : number; // Int32
    ProductBackendID : string; 
    ProductName : string; 
    OriginalPrice : number; // Decimal
    CurrentPrice : number; // Decimal
    ProductCustomID : string; 
  }
  
  export class PrintFullStockCountLabels extends EVA.API.RequestMessageWithEmptyResponse {
    StationID : number; // Int32
    // Prints all labels for this count - required if FullStockCountLabelID is empty
    FullStockCountID? : number; // Int32, nullable
    // Prints just this label - required if FullStockCountID is empty
    FullStockCountLabelID? : number; // Int32, nullable
  }
  
  export class PrintStockReservationReceipt extends EVA.API.RequestMessageWithEmptyResponse {
    OrderID : number; // Int32
    StationID : number; // Int32
  }
  
  export class ProcessInitialCycleCountResults extends EVA.API.RequestMessageWithEmptyResponse {
  }
  
  export class ProduceInitialCycleCountLabels extends EVA.API.RequestMessageWithResourceResponse {
    Count : number; // Int32
    // The ID of the station, which will be used to determine what printer to use to print the bar codes
    StationID? : number; // Int32, nullable
    AsPDF : boolean; 
    // If this is set all the labels that've currently been created will be re-generated, but no new labels will be created in the process.
    ReprintLabels : boolean; 
    Destination : EVA.Core.MessageTemplateDestinations; 
  }
  
  export class ProduceZonedCycleCountHandout extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ProduceZonedCycleCountHandoutResponse> {
    CycleCountZoneIDs : number[]; 
    OrganizationUnitID : number; // Int32
    StationID? : number; // Int32, nullable
    Channel : EVA.Core.TemplateOutputChannel; 
  }
  
  export class ProduceZonedCycleCountHandoutResponse extends EVA.API.ResponseMessage {
    Url : string; 
  }
  
  export class ReplaceCycleCountZonesForOrganizationUnit extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    CycleCountZoneIDs : number[]; 
  }
  
  export enum ReservationCleanupTaskLineTypes {
    ExpiredReservation = 0,
    Cancellation = 1,
  }
  
  export class ReservationCleanupWorkSet {
    UserTaskID : number; // Int32
    ReservationCleanupTaskID : number; // Int32
    Order : EVA.Core.OrderDto; 
    Lines : EVA.UserTasks.ReservationCleanupWorkSetOrderLine[]; 
  }
  
  export class ReservationCleanupWorkSetOrderLine {
    QuantityToReturn : number; // Int32
    QuantityReturned : number; // Int32
    NothingToReturn : boolean; 
    ReservationExpirationOverride? : string; // DateTime, nullable
    OrderLine : EVA.Core.OrderLineDto; 
  }
  
  export class ReservationDeviationWorkSet {
    TaskID : number; // Int32
    ProductID : number; // Int32
    Orders : EVA.Core.OrderDto[]; 
    OrderLineIDs : number[]; 
    QuantityToCancel : number; // Int32
    Product : EVA.Core.ProductDto; 
    QuantityToMoveToSellable : number; // Int32
    OrderLinesToCancel : EVA.UserTasks.OrderLineToCancel[]; 
    OrderLinesToOrder : EVA.UserTasks.OrderLineToOrder[]; 
    QuantityMovedBack : number; // Int32
  }
  
  export class ResourceToCycleCount {
    ResourceID : number; // Int32
    Resources : { [ key : string ] : string }; 
  }
  
  export class GetStatusForZonedCycleCountPreCountsResponsePreCountStatusResult {
    StockLabel : EVA.Framework.EnumDto; 
    CountedQuantity : number; // Int32
    CreationTime : string; // DateTime
  }
  
  export class SearchUserTasks extends EVA.API.RequestMessageGeneric<EVA.UserTasks.SearchUserTasksResponse> {
    Start : number; // Int32
    Limit : number; // Int32
    OrganizationUnitID : number; // Int32
    Filters : EVA.UserTasks.SearchUserTasksFilters; 
  }
  
  export class SearchUserTasksFilters {
    ShowCompleted : boolean; 
  }
  
  export class SearchUserTasksResponse extends EVA.API.ResponseMessage {
    Results : EVA.Core.UserTaskDto[]; 
  }
  
  export class SetCycleCountSettings extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID? : number; // Int32, nullable
    GenerateCycleCountAfterNASC? : boolean; 
    MaxCycleCountsPerShop? : number; // Int32, nullable
    MaxCycleCountsPerShopPerDay? : number; // Int32, nullable
    PastDueProductsOnly? : boolean; 
    CycleCountDays : EVA.Framework.DaysOfWeek; 
    StockLabels : string[]; 
  }
  
  export class StartCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartCycleCountResponse> {
    TaskID : number; // Int32
  }
  
  export class StartCycleCountResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.CycleCountWorkSet; 
  }
  
  export class StartFullStockCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartFullStockCountResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartFullStockCountLabel extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartFullStockCountLabelResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartFullStockCountLabelResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    FullStockCountID : number; // Int32
    Name : string; 
    StockLabelID : number; // Int32
    StockLabelName : string; 
    RecountProductID? : number; // Int32, nullable
    RecountQuantity? : number; // Int32, nullable
  }
  
  export class StartFullStockCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    RecountInterval : number; // Int32
    Type : EVA.UserTasks.FullStockCountType; 
  }
  
  export class StartPriceChange extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartPriceChangeResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartPriceChangeResponse extends EVA.API.ResponseMessage {
    Task : EVA.UserTasks.PriceChangeWorkSet; 
  }
  
  export class StartReceiveShipment extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartReceiveShipmentResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartReceiveShipmentResponse extends EVA.API.ResponseMessage {
    ReceiveMethod : EVA.Core.ShipmentReceiveMethods; 
    IsCompleted : boolean; 
    WorkSet : EVA.Core.ReceiveShipmentWorkSet; 
  }
  
  export class StartReservationCleanup extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartReservationCleanupResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartReservationCleanupResponse extends EVA.API.ResponseMessage {
    Task : EVA.UserTasks.ReservationCleanupWorkSet; 
  }
  
  export class StartReservationDeviationTask extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartReservationDeviationTaskResponse> {
    TaskID : number; // Int32
    Force : boolean; 
  }
  
  export class StartReservationDeviationTaskResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.ReservationDeviationWorkSet; 
  }
  
  export class StartStockMovementFollowUp extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartStockMovementFollowUpResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartStockMovementFollowUpResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.StockMovementFollowUpWorkSet; 
  }
  
  export class StartStockReplenishment extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartStockReplenishmentResponse> {
    UserTaskIDs : number[]; 
  }
  
  export class StartStockReplenishmentResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.StockReplenishmentWorkSet; 
  }
  
  export class StartStockReservation extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartStockReservationResponse> {
    TaskID : number; // Int32
    Force : boolean; 
  }
  
  export class StartStockReservationResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.StockReservationWorkSet; 
  }
  
  export class StartUserTask extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartUserTaskResponse> {
    UserTaskID : number; // Int32
  }
  
  export class StartUserTaskResponse extends EVA.API.ResponseMessage {
    WorkSet : EVA.UserTasks.UserTaskWorkSet; 
  }
  
  export class StartZonedCycleCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartZonedCycleCountResponse> {
    UserTaskID : number; // Int32
    IncludedFields : string[]; 
  }
  
  export class StartZonedCycleCountPreCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.StartZonedCycleCountPreCountResponse> {
    UserTaskID : number; // Int32
    IncludedFields : string[]; 
  }
  
  export class StartZonedCycleCountPreCountDto {
    CycleCountZone : EVA.Framework.EnumDto; 
    User : EVA.UserTasks.StartZonedCycleCountPreCountUserDto; 
    Results : EVA.UserTasks.StartZonedCycleCountPreCountResult[]; 
    IsCompleted : boolean; 
  }
  
  export class StartZonedCycleCountPreCountedQuantity {
    StockLabel : EVA.Framework.EnumDto; 
    CountedQuantity? : number; // Int32, nullable
  }
  
  export class StartZonedCycleCountPreCountResponseStartZonedCycleCountPreCountProduct {
    ID : number; // Int32
    CustomID : string; 
    Type : EVA.Core.ProductTypes; 
    Content : any; 
    UnitPriceInTax : number; // Decimal
    CurrencyID : string; 
  }
  
  export class StartZonedCycleCountPreCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    CycleCountZone : EVA.Framework.EnumDto; 
    StockLabelsToCount : EVA.Framework.EnumDto[]; 
    Product : EVA.UserTasks.StartZonedCycleCountPreCountResponseStartZonedCycleCountPreCountProduct; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
  }
  
  export class StartZonedCycleCountPreCountResult {
    StockLabel : EVA.Framework.EnumDto; 
    CountedQuantity : number; // Int32
    CreationTime : string; // DateTime
  }
  
  export class StartZonedCycleCountPreCountUserDto {
    ID : number; // Int32
    Name : string; 
  }
  
  export class StartZonedCycleCountProduct {
    ID : number; // Int32
    CustomID : string; 
    Type : EVA.Core.ProductTypes; 
    Content : any; 
    UnitPriceInTax : number; // Decimal
    CurrencyID : string; 
  }
  
  export class StartZonedCycleCountResponse extends EVA.API.ResponseMessage {
    ID : number; // Int32
    UserTaskID : number; // Int32
    StockLabelsToCount : EVA.Framework.EnumDto[]; 
    Product : EVA.UserTasks.StartZonedCycleCountProduct; 
    StockMutationsSincePreCount : EVA.UserTasks.StartZonedCycleCountStockMutation[]; 
    StockMutationQuantitiesSincePreCount : EVA.UserTasks.StartZonedCycleCountStockMutationQuantity[]; 
    PreCounts : EVA.UserTasks.StartZonedCycleCountPreCountDto[]; 
    PreCountedQuantities : EVA.UserTasks.StartZonedCycleCountPreCountedQuantity[]; 
    CurrentStock : EVA.UserTasks.StartZonedCyleCountCurrentStock[]; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
    ExpectedPreCountedQuantity? : number; // Int32, nullable
    PreCountedQuantity? : number; // Int32, nullable
  }
  
  export class StartZonedCycleCountStockMutation {
    StockLabel : EVA.Framework.EnumDto; 
    StockMutationReason : EVA.Framework.EnumDto; 
    MutationQuantity : number; // Int32
    CreationTime : string; // DateTime
  }
  
  export class StartZonedCycleCountStockMutationQuantity {
    TotalMutationQuantity : number; // Int32
    Since : string; // DateTime
    StockLabel : EVA.Framework.EnumDto; 
  }
  
  export class StartZonedCyleCountCurrentStock {
    StockLabel : EVA.Framework.EnumDto; 
    CurrentQuantityOnHand : number; // Int32
  }
  
  export class StockLabelDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class StockLabelToCycleCount {
    StockLabel : number; // Int32
    Lines : EVA.UserTasks.CycleCountWorkSetLine[]; 
  }
  
  export class StockMovementFollowUpWorkSet {
    UserTaskID : number; // Int32
    StockMovementFollowUpTaskID : number; // Int32
    ProductID : number; // Int32
    Product : any; 
    Quantity : number; // Int32
    FromStockLabel : EVA.UserTasks.StockLabelDto; 
    ToStockLabel : EVA.UserTasks.StockLabelDto; 
  }
  
  export enum StockReplenishmentType {
    Default = 0,
    Priority = 1,
    AutoGenerated = 2,
  }
  
  export class StockReplenishmentWorkSet {
    Items : EVA.UserTasks.StockReplenishmentWorkSetItem[]; 
  }
  
  export class StockReplenishmentWorkSetItem {
    UserTaskID : number; // Int32
    StockReplenishmentTaskID : number; // Int32
    Quantity : number; // Int32
    Type : EVA.UserTasks.StockReplenishmentType; 
    Product : any; 
  }
  
  export class StockReservationTaskDto {
    UserTaskID : number; // Int32
    OrderID : number; // Int32
    Order : EVA.Core.OrderDto; 
    Lines : EVA.UserTasks.StockReservationTaskLineDto[]; 
  }
  
  export class StockReservationTaskLineDto {
    IsCancelled : boolean; 
    IsReserved : boolean; 
    Barcodes : string[]; 
    Product : EVA.Core.ProductDto; 
    ProductID : number; // Int32
    OrderLineID : number; // Int32
    QuantityOnHand : number; // Int32
    ForceComplete : boolean; 
    MustBeOrdered : boolean; 
    RequiredResourceTypes : EVA.Core.StockResourceTypeDto[]; 
    ResourceID? : number; // Int32, nullable
    Resources : { [ key : string ] : string }; 
  }
  
  export class StockReservationWorkSet {
    UserTaskID : number; // Int32
    OrderID : number; // Int32
    Order : EVA.Core.OrderDto; 
    Lines : EVA.UserTasks.StockReservationTaskLineDto[]; 
  }
  
  export class StockWithInitialCycleCountResultDto {
    ProductID : number; // Int32
    OrganizationUnitID : number; // Int32
    QuantityOnHand : number; // Int32
    StockLabelID : number; // Int32
    StockLabel : number; // Int32
    ResourceID? : number; // Int32, nullable
    Quantity : number; // Int32
    BackendID : string; 
    LabelID : string; 
    LabelNumber : string; 
    ShortDescription : string; 
  }
  
  export class ToggleStockReplenishmentAutoGeneration extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    ProductID : number; // Int32
    Disabled : boolean; 
  }
  
  export class UpdateCycleCountZone extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    Description : string; 
  }
  
  export class UpdateCycleCountZoneGroup extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Name : string; 
    OrganizationUnitSetID : number; // Int32
    ZoneIDs : number[]; 
  }
  
  export class UpdateUserTask extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    UserID : number; // Int32
    TypeID : number; // Int32
    Deadline : string; // DateTime
    ExpectedTimeToComplete : any; // TimeSpan
  }
  
  export class UpdateUserTaskType extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Configuration : string; 
    DefaultPriority : number; // Int32
    DefaultRequired : boolean; 
  }
  
  export class UpdateUserTaskTypeOrganizationUnitSet extends EVA.API.RequestMessageGeneric<EVA.UserTasks.UserTaskTypeOrganizationUnitSetResponse> {
    UserTaskTypeID : number; // Int32
    OrganizationUnitSetID : number; // Int32
    Required : boolean; 
  }
  
  export class UpdateZonedCycleCountDays extends EVA.API.RequestMessageWithEmptyResponse {
    OrganizationUnitID : number; // Int32
    DaysOfWeek : EVA.Framework.DaysOfWeek; 
  }
  
  export class UpdateZonedCycleCountPlan extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
    Date : string; // DateTime
    ProductSearchModel : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
    OrganizationUnitFilter : EVA.UserTasks.ZonedCycleCountScheduleOrganizationUnitsFilter; 
  }
  
  export class UpdateZonedCycleCountSchedule extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    Description : string; 
    CycleCountIntervalInDays : number; // Int32
    ProductSearchModel : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
  }
  
  export class GetUserTaskCountsResponseUserTaskCount {
    Count : number; // Int32
    SubTypeCounts : { [ key : string ] : number }; 
  }
  
  export class UserTaskDataAggregation {
    Name : string; 
    Value : any; 
    Count : number; // Int32
  }
  
  export class UserTaskDetails extends EVA.Core.UserTaskDto {
    Results : EVA.UserTasks.UserTaskResultDto[]; 
  }
  
  export class UserTaskResultDto implements EVA.Core.IUserTaskResult {
    Name : string; 
    Description : string; 
    Type : string; 
    Value : string; 
    Data : string; 
  }
  
  export class UserTaskTypeOrganizationUnitSetResponse extends EVA.API.ResponseMessage {
    Result : EVA.Core.UserTaskTypeOrganizationUnitSetDto; 
  }
  
  export class UserTaskWorkSet {
    UserTaskID : number; // Int32
    StartTime : string; // DateTime
    Name : string; 
    Description : string; 
    CanBeIgnored : boolean; 
    Configuration : string; 
    ExpectedTimeToComplete? : any; // TimeSpan, nullable
    Results : EVA.UserTasks.UserTaskResultDto[]; 
  }
  
  export class ValidatePreCount extends EVA.API.RequestMessageGeneric<EVA.UserTasks.ValidatePreCountResponse> {
    LabelID : number; // Int32
    ConfirmedQuantity? : number; // Int32, nullable
  }
  
  export class ValidatePreCountResponse extends EVA.API.ResponseMessage {
    Result : EVA.UserTasks.ValidatePreCountResults; 
  }
  
  export enum ValidatePreCountResults {
    Correct = 1,
    Deviation = 2,
    RedoDetailCount = 3,
  }
  
  export class ZonedCycleCountPlanDto {
    ID : number; // Int32
    CreatedByID : number; // Int32
    CreatedByName : string; 
    LastModifiedByID? : number; // Int32, nullable
    LastModifiedByName : string; 
    Description : string; 
    StatusID : number; // Int32
    Date : string; // DateTime
    Products : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
    OrganizationUnits : EVA.UserTasks.ZonedCycleCountScheduleOrganizationUnitsFilter; 
  }
  
  export enum ZonedCycleCountPlanStatus {
    None = 0,
    Busy = 1,
    Finished = 2,
  }
  
  export enum ZonedCycleCountResultStatus {
    None = 0,
    Correct = 1,
    RecountRequested = 2,
    Modified = 4,
    Deviated = 8,
  }
  
  export enum ZonedCycleCountResultTypes {
    Accepted = 0,
    Recount = 1,
    CompleteResources = 2,
  }
  
  export class ZonedCycleCountScheduleDto {
    ID : number; // Int32
    Description : string; 
    OrganizationUnitID : number; // Int32
    OrganizationUnitName : string; 
    CycleCountIntervalInDays : number; // Int32
    SerializedProductSearchModel : string; 
    ProductSearchModel : EVA.UserTasks.ZonedCycleCountScheduleProductSearchModel; 
  }
  
  export class ZonedCycleCountScheduleOrganizationUnitsFilter {
    IDs : number[]; 
    BackendIDs : string[]; 
    CountryIDs : string[]; 
    StatusID? : number; // Int32, nullable
  }
  
  export class ZonedCycleCountScheduleProductSearchFilterModel {
    Values : any[]; 
    From : string; 
    To : string; 
    Negation : boolean; 
    ExactMatch : boolean; 
    IncludeMissing? : boolean; 
  }
  
  export class ZonedCycleCountScheduleProductSearchModel {
    Query : string; 
    Filters : { [ key : string ] : EVA.UserTasks.ZonedCycleCountScheduleProductSearchFilterModel }; 
  }
  
  export class ZonedCycleCountToComplete {
    UserTaskID : number; // Int32
    CountedQuantityCorrections : EVA.UserTasks.ZonedCycleCountToCompleteQuantityCorrection[]; 
  }
  
  export class ZonedCycleCountToCompleteQuantityCorrection {
    StockLabelID : number; // Int32
    NewCountedQuantity : number; // Int32
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Utils.FileTransfer {
  
  export enum ExistsBehavior {
    NoCheck = 0,
    Skip = 1,
    Overwrite = 2,
    Append = 3,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.WMS {
  
  export enum AttributeTypes {
    Partner = 0,
    VendorItemNumber = 1,
    ProductType = 2,
    SourceID = 3,
    MaximumHoldingTemprature = 4,
    MinimumHoldingTemprature = 5,
    EstimatedRestockDays = 6,
    IgnoreProduct = 7,
    MinimalDaysOfStock = 8,
    TransferLotFromExternalDays = 9,
    RequiresInboundInspection = 10,
    IsFragile = 11,
    IsUniqueProduct = 12,
    PrintPriceSticker = 13,
    PrintProductSticker = 14,
    FinishCode = 15,
    MaterialCode = 16,
    SeasonCode = 17,
    UpdateLevel = 18,
    ForceSinglePick = 19,
    RecommendedRetailPriceInTax = 20,
    SalesPriceInTax = 21,
  }
  
  export enum InspectionTypes {
    None = 0,
    Count = 1,
    Serial = 2,
    Detail = 3,
  }
  
  export enum ProcessingStatus {
    P = 0,
    E = 1,
    W = 2,
  }
  
  export enum PurchaseOrderTypes {
    Purchase = 0,
  }
  
  export enum RelationTypes {
    Customer = 0,
    Supplier = 1,
    Carrier = 2,
    Undefined = 4,
  }
  
  export enum SalesOrderLineStatusResponse {
    PendingPayment = 0,
    BackOrder = 1,
    New = 2,
    InProcess = 3,
    Completed = 4,
    Cancelled = 5,
    Destroyed = 6,
    Unknown = 7,
  }
  
  export enum SalesOrderReferenceType {
    Invoice = 0,
    FreeText1 = 1,
    FreeText2 = 2,
    FreeText3 = 3,
    FreeText4 = 4,
    FreeText5 = 5,
    FreeText6 = 6,
    FreeText7 = 7,
    AdditionalOrderNumber = 8,
    OrderFreeText1 = 9,
    OrderFreeText2 = 10,
    OrderFreeText3 = 11,
    ParcelshopNetworkId = 12,
    ParcelshopLocationId = 13,
    ParcelshopPicktimeStart = 14,
    ParcelshopLocationPinCode = 15,
    CustomerSpecificBarcode = 16,
    PreShipmentInformationSent = 17,
  }
  
  export enum SalesOrderTypes {
    S = 0,
  }
  
  export enum TransactionTypesPurchaseOrders {
    OV = 0,
    DO = 1,
    GD = 2,
    POC = 3,
    DD = 4,
    DS = 5,
    DM = 6,
  }
  
  export enum TransactionTypesReturnOrders {
    RR = 0,
  }
  
  export enum TransactionTypesSalesOrders {
    LC = 0,
    RS = 1,
    CS = 2,
    PACK = 3,
    PDV = 4,
    PDC = 5,
    SMC = 6,
    LD = 7,
    LNC = 8,
    PC = 9,
  }
  
  export enum UnitOfMeasureTypes {
    EA = 0,
    BX = 1,
    OMDOOS = 2,
    PL = 3,
  }
  
  export enum WmsPurchaseOrderModes {
    PurchaseOrders = 1,
    Shipments = 2,
  }
  
  export enum WmsSalesOrderCancelModes {
    Cancel = 1,
    Recreate = 2,
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module EVA.Workforce {
  
  export class ListClockedInEmployeesForFinancialPeriodResponseClockedInUser {
    User : EVA.Core.UserDto; 
    ClockedIn : string; // DateTime
    ClockedOut? : string; // DateTime, nullable
    IsAbsent : boolean; 
  }
  
  export class ClockEmployeeOutAsAbsent extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    FinancialPeriodID? : number; // Int32, nullable
    AbsentFrom : string; // DateTime
  }
  
  export class ConsecutiveTimeChunkWithUser {
    UserID : number; // Int32
    FullName : string; 
    Date : string; // DateTime
    StartTime : any; // TimeSpan
    EndTime : any; // TimeSpan
    IsAvailable : boolean; 
    BadgeIDs : number[]; 
    Duration : any; // TimeSpan
    StartDateTime : string; // DateTime
    EndDateTime : string; // DateTime
  }
  
  export class CorrectWorkedHours extends EVA.API.RequestMessageWithEmptyResponse {
    ID : number; // Int32
    ClockInDateTime? : string; // DateTime, nullable
    ClockOutDateTime? : string; // DateTime, nullable
  }
  
  export class CreateWorkedHours extends EVA.API.RequestMessageWithEmptyResponse {
    UserID : number; // Int32
    Date : string; // DateTime
    ClockInTime : any; // TimeSpan
    ClockOutTime : any; // TimeSpan
    OrganizationUnitID : number; // Int32
  }
  
  export class DeleteRosterItem extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    ExpireDate? : string; // DateTime, nullable
  }
  
  export class ExportPayrollPeriod extends EVA.API.RequestMessageWithEmptyResponse {
    PayrollPeriodID : number; // Int32
  }
  
  export enum FailedClockOutReasons {
    None = 0,
    AfterFinancialPeriod = 1,
    OutsideSubnet = 2,
  }
  
  export class GetPayrollPeriodReport extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    PayrollPeriodID : number; // Int32
  }
  
  export class GetPayrollPeriodWorkedHoursReport extends EVA.API.RequestMessageGeneric<EVA.API.ResourceResponseMessage> {
    PayrollPeriodID : number; // Int32
  }
  
  export class GetSalaryComponentTypes extends EVA.API.RequestMessageGeneric<EVA.Workforce.GetSalaryComponentTypesResponse> {
  }
  
  export class GetSalaryComponentTypesResponse extends EVA.API.ResponseMessage {
    Result : EVA.Workforce.GetSalaryComponentTypesResponseSalaryComponentTypeDto[]; 
  }
  
  export class ListLeaveBalancesForUserResponseLeaveBalanceDto {
    LeaveType : string; 
    Balance : number; // Decimal
  }
  
  export enum LeaveStatus {
    Requested = 0,
    Approved = 1,
  }
  
  export class ListAvailabilityForTimeslot extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListAvailabilityForTimeslotResponse> {
    OrganizationUnitID : number; // Int32
    StartDateTime : string; // DateTime
    EndDateTime : string; // DateTime
  }
  
  export class ListAvailabilityForTimeslotResponse extends EVA.API.ResponseMessage {
    Availability : EVA.Workforce.ConsecutiveTimeChunkWithUser[]; 
  }
  
  export class ListClockedInEmployeesForFinancialPeriod extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListClockedInEmployeesForFinancialPeriodResponse> {
    PeriodID : number; // Int32
  }
  
  export class ListClockedInEmployeesForFinancialPeriodResponse extends EVA.API.ResponseMessage {
    Employees : EVA.Workforce.ListClockedInEmployeesForFinancialPeriodResponseClockedInUser[]; 
  }
  
  export class ListLeaveBalancesForUser extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListLeaveBalancesForUserResponse> {
    UserID : number; // Int32
  }
  
  export class ListLeaveBalancesForUserResponse extends EVA.API.ResponseMessage {
    Items : EVA.Workforce.ListLeaveBalancesForUserResponseLeaveBalanceDto[]; 
  }
  
  export class ListOccupiedPeriods extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListOccupiedPeriodsResponse> {
    UserID : number; // Int32
    StartDate : string; // DateTime
    EndDate : string; // DateTime
  }
  
  export class ListOccupiedPeriodsResponse extends EVA.API.ResponseMessage {
    Absence : EVA.Workforce.ListOccupiedPeriodsResponseOccupiedPeriod[]; 
    Leave : EVA.Workforce.ListOccupiedPeriodsResponseOccupiedPeriod[]; 
  }
  
  export class ListPayrollPeriods extends EVA.API.PagedResultRequest<EVA.Workforce.ListPayrollPeriodsResponse> {
  }
  
  export class ListPayrollPeriodsResponse extends EVA.API.PagedResultResponse<EVA.Workforce.ListPayrollPeriodsResponsePayrollPeriodDto> {
  }
  
  export class ListPlanning extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListPlanningResponse> {
    OrganizationUnitID? : number; // Int32, nullable
    StartDate : string; // DateTime
    EndDate : string; // DateTime
  }
  
  export class ListPlanningResponse extends EVA.API.ResponseMessage {
    Items : EVA.Workforce.ListPlanningResponsePlanning[]; 
  }
  
  export class ListRoster extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListRosterResponse> {
    Types : number[]; 
    UserID? : number; // Int32, nullable
    BadgeID? : number; // Int32, nullable
    OrganizationUnitID? : number; // Int32, nullable
    StartDate : string; // DateTime
    EndDate : string; // DateTime
  }
  
  export class ListRosterableUsersForOrganizationUnit extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListRosterableUsersForOrganizationUnitResponse> {
    OrganizationUnitID : number; // Int32
    From : string; // DateTime
    To : string; // DateTime
  }
  
  export class ListRosterableUsersForOrganizationUnitResponse extends EVA.API.ResponseMessage {
    Users : EVA.Core.UserDto[]; 
  }
  
  export class ListRosterResponse extends EVA.API.ResponseMessage {
    Items : EVA.Workforce.ListRosterResponseRosterItem[]; 
  }
  
  export class ListSalaryComponents extends EVA.API.PagedResultRequest<EVA.Workforce.ListSalaryComponentsResponse> {
  }
  
  export class ListSalaryComponentsResponse extends EVA.API.PagedResultResponse<EVA.Workforce.ListSalaryComponentsResponseSalaryComponentDto> {
  }
  
  export class ListUnrosteredWorkedHours extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListUnrosteredWorkedHoursResponse> {
    UserID : number; // Int32
    StartDate : string; // DateTime
    EndDate : string; // DateTime
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class ListUnrosteredWorkedHoursResponse extends EVA.API.ResponseMessage {
    WorkedHours : EVA.Workforce.WorkedPeriod[]; 
  }
  
  export class ListWorkedHours extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListWorkedHoursResponse> {
    UserIDs : number[]; 
    StartDate : string; // DateTime
    EndDate : string; // DateTime
    OrganizationUnitID? : number; // Int32, nullable
  }
  
  export class ListWorkedHoursForCurrentEmployee extends EVA.API.RequestMessageGeneric<EVA.Workforce.ListWorkedHoursForCurrentEmployeeResponse> {
  }
  
  export class ListWorkedHoursForCurrentEmployeeResponse extends EVA.API.ResponseMessage {
    WorkedHours : EVA.Workforce.WorkedHoursDto[]; 
  }
  
  export class ListWorkedHoursForFinancialPeriod extends EVA.API.FilteredPagedResultRequest<EVA.Workforce.ListWorkedHoursInFinancialPeriodFilter, EVA.Workforce.ListWorkedHoursForFinancialPeriodResponse> {
  }
  
  export class ListWorkedHoursForFinancialPeriodResponse extends EVA.API.PagedResultResponse<EVA.Workforce.ListWorkedHoursForFinancialPeriodResponseWorkedPeriod> {
  }
  
  export class ListWorkedHoursInFinancialPeriodFilter {
    FinancialPeriodID : number; // Int32
  }
  
  export class ListWorkedHoursResponse extends EVA.API.ResponseMessage {
    WorkedPeriods : { [ key : number ] : EVA.Workforce.ListWorkedHoursResponseWorkedPeriod[] }; 
  }
  
  export class ListOccupiedPeriodsResponseOccupiedPeriod {
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    TypeDescription : string; 
    Reason : string; 
  }
  
  export class ListPayrollPeriodsResponsePayrollPeriodDto {
    ID : number; // Int32
    PreviousPeriodID? : number; // Int32, nullable
    StartDate : string; // DateTime
    EndDate : string; // DateTime
    Weeks : number; // Int32
    IsExported : boolean; 
  }
  
  export class ListPlanningResponsePlanning {
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    DateTime : string; // DateTime
    Result : number; // Int32
  }
  
  export class RecalculatePayrollPeriod extends EVA.API.RequestMessageWithEmptyResponse {
    PayrollPeriodID : number; // Int32
  }
  
  export class ListRosterResponseRosterItem {
    TypeID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    OrganizationUnitName : string; 
    UserID? : number; // Int32, nullable
    BadgeID? : number; // Int32, nullable
    FullName : string; 
    Date : string; // DateTime
    StartTime? : any; // TimeSpan, nullable
    EndTime? : any; // TimeSpan, nullable
    DayOfWeekID? : number; // Int32, nullable
    ID : number; // Int32
    StartDateTime? : string; // DateTime, nullable
    EndDateTime? : string; // DateTime, nullable
    Description : string; 
    AllDay : boolean; 
  }
  
  export enum RosterTypes {
    UserAvailable = 1,
    UserUnavailable = 2,
    TimeSlot = 3,
    Planned = 4,
    AbsenceRequested = 5,
  }
  
  export class ListSalaryComponentsResponseSalaryComponentDto {
    PayrollPeriodID : number; // Int32
    UserID : number; // Int32
    User : EVA.Core.UserDto; 
    TypeID : number; // Int32
    Param1? : number; // Decimal, nullable
    Param2? : number; // Decimal, nullable
    Param3? : number; // Decimal, nullable
    Reason : string; 
    IsExported : boolean; 
  }
  
  export class GetSalaryComponentTypesResponseSalaryComponentTypeDto {
    ID : number; // Int32
    Name : string; 
    Description : string; 
    Code : string; 
    ExportNextPeriod : boolean; 
  }
  
  export class SaveRosterItem extends EVA.API.RequestMessageGeneric<EVA.API.EmptyResponseMessage> {
    ID : number; // Int32
    TypeID : number; // Int32
    OrganizationUnitID? : number; // Int32, nullable
    UserID? : number; // Int32, nullable
    BadgeID? : number; // Int32, nullable
    Date? : string; // DateTime, nullable
    DayOfWeekID? : number; // Int32, nullable
    AllDay : boolean; 
    AvailabilityID? : number; // Int32, nullable
    SlotID? : number; // Int32, nullable
    StartDateTime? : string; // DateTime, nullable
    EndDateTime? : string; // DateTime, nullable
    Description : string; 
  }
  
  export enum UserTimeLedgerTypes {
    ActualUserTaskTime = 1,
    ExpectedUserTaskTime = 2,
    TimeSpentOnInterruptedUserTask = 3,
    ExpectedSalesTime = 4,
    ActualWorkedHours = 5,
  }
  
  export class WorkedHoursDto {
    ID : number; // Int32
    UserID : number; // Int32
    User : EVA.Core.UserDto; 
    OrganizationUnitID : number; // Int32
    OrganizationUnit : EVA.Core.OrganizationUnitDto; 
    Date : string; // DateTime
    ClockInTime : any; // TimeSpan
    ClockOutTime? : any; // TimeSpan, nullable
    ClockInDateTime : string; // DateTime
    ClockOutDateTime? : string; // DateTime, nullable
    IsExported : boolean; 
  }
  
  export enum WorkedHoursLedgerType {
    ClockIn = 1,
    ClockOut = 2,
    ClockInCorrection = 3,
    ClockOutCorrection = 4,
    ClockedOutInPeriodClosing = 5,
    DaySplit = 6,
  }
  
  export class WorkedPeriod {
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
  }
  
  export class ListWorkedHoursResponseWorkedPeriod {
    StartDate : string; // DateTime
    StartID : number; // Int32
    EndDate? : string; // DateTime, nullable
    ClockedOut : boolean; 
  }
  
  export class ListWorkedHoursForFinancialPeriodResponseWorkedPeriod {
    UserID : number; // Int32
    UserFullName : string; 
    StartDate : string; // DateTime
    EndDate? : string; // DateTime, nullable
    IsCorrected : boolean; 
    IsAbsent : boolean; 
  }
  
}
/* tslint:disable:max-classes-per-file */
/* tslint:disable:variable-name */
/* tslint:disable:no-trailing-whitespace */
/* tslint:disable:no-consecutive-blank-lines */
/* tslint:disable:no-namespace */
/* tslint:disable:member-access */
/* tslint:disable:typedef-whitespace */
/* tslint:disable:no-internal-module */

declare module System.Private.CoreLib {
  
  export enum DayOfWeek {
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
  }
  
}
/* tslint:disable */
declare module mscorlib {
  
  export enum DayOfWeek {
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6,
  }
  
}