import { EnumValue } from "../enums/EnumValue"; import { Observer } from "../Observer"; import { AuthenticationFailedResponse } from "../messages/authentication/AuthenticationFailedResponse"; import { AuthenticationSuccessResponse } from "../messages/authentication/AuthenticationSuccessResponse"; import { UserCredentials } from "../messages/user/UserCredentials"; import { RequestResult } from "../messages/requestAndResult/RequestResult"; /** * Process data received from server. * @param {BaseDataClient} target - The target for calling subscribers. * @param {Object} message - The message for notification in subscribers. */ export interface BaseDataClient { /** * State of server in this client. * @returns {EnumValue} * @constructor */ readonly ServerState: EnumValue; /** * Type of serializer for sending / receiving from server. * @returns {EnumValue} * @constructor */ SerializerType: EnumValue; /** * Triggers when client connection state was changed. * @returns {Observer} * @constructor */ readonly OnServerStateChanged: Observer; /** * Triggers when authentication was successful for current client. * @returns {Observer} * @constructor */ readonly OnAuthenticationSuccessResponse: Observer; /** * Triggers when authentication was failed for current client. * @returns {Observer} * @constructor */ readonly OnAuthenticationFailedResponse: Observer; /** * Triggers when result for request was received. * @returns {Observer} * @constructor */ readonly OnRequestResult: Observer; /** * Triggers when exception was thrown during receive or send action. * @returns {Observer} * @constructor Observer should be returned model of Error. */ readonly OnClientException: Observer; /** * Connects current client to server. * @param {String} url - The full URL of domain and path. * @constructor */ Connect (url: string): void; /** * Disconnects current client from server. * @constructor */ Disconnect (): void; /** * Updates user credentials for current data client. * @param {UserCredentials} userCredentials * @constructor */ UpdateUserCredentials (userCredentials: UserCredentials): void; /** * Sets service of network for current clients. * It's for only development and test. * @param networkService */ setNetworkService: (networkService: any) => void; }