import { Core, InitOptions } from '../../../wasm/dist';
import { AppConfig, CMS, Config } from './index';
import { API, BalancyPaymentInfo } from './balancy-api.class';
import { Profiles } from './profiles.class';
import { SmartObjectsAbTestInfo, SmartObjectsDailyBonusInfo, SmartObjectsEventInfo, SmartObjectsInventory, SmartObjectsItem, SmartObjectsOfferGroupInfo, SmartObjectsOfferInfo, SmartObjectsSegmentInfo, SmartObjectsShopSlot, SmartObjectsStoreItem, SmartObjectsGameOffer, SmartObjectsGameOfferGroup } from '../liveops';
import { UtilsEvent } from './utilsEvent';
import { Actions } from './actions.class';
import { ICachedFileHelper } from '../file-helper';
import { DataObjectsManager } from './data-objects-manager.class';
import { RenderViewsManager } from '../webview';
export declare class Main {
    static isReadyToUse: boolean;
    private static balancy;
    static init(config: AppConfig, options?: InitOptions): Promise<void>;
    static stop(): void;
    private static checkConfig;
    private static checkCallbacks;
    static initializeFileHelper(fh: ICachedFileHelper, options?: InitOptions): Promise<void>;
    static configLaunch(options?: InitOptions): Promise<Config>;
}
export interface NetworkDownloadInfo {
    readonly url: string;
    readonly relativePath: string;
    readonly domain: string;
    readonly isCDNRequest: boolean;
}
export interface NetworkDownloadCompletedInfo {
    readonly url: string;
    readonly relativePath: string;
    readonly domain: string;
    readonly isCDNRequest: boolean;
    readonly timeMs: number;
    readonly speedKBps: number;
    readonly downloadedBytes: number;
    readonly success: boolean;
    readonly errorCode: number;
    readonly errorMessage: string;
    readonly attempts: number;
}
export declare enum DisconnectReason {
    Unknown = 0,
    AnotherSessionConflict = 1
}
export declare class Callbacks {
    static readonly onDataUpdated: UtilsEvent<[{
        isCloudSynced: boolean;
        isCMSUpdated: boolean;
        isProfileUpdated: boolean;
    }]>;
    static readonly onAuthFailed: UtilsEvent<[{
        message: string;
    }]>;
    static readonly onCloudProfileFailedToLoad: UtilsEvent<[{
        message: string;
    }]>;
    static readonly onNewEventActivated: UtilsEvent<[SmartObjectsEventInfo]>;
    static readonly onEventDeactivated: UtilsEvent<[SmartObjectsEventInfo]>;
    static readonly onNewOfferActivated: UtilsEvent<[SmartObjectsOfferInfo]>;
    static readonly onOfferDeactivated: UtilsEvent<[SmartObjectsOfferInfo, boolean]>;
    static readonly onNewOfferGroupActivated: UtilsEvent<[SmartObjectsOfferGroupInfo]>;
    static readonly onOfferGroupDeactivated: UtilsEvent<[SmartObjectsOfferGroupInfo]>;
    static readonly onNewAbTestStarted: UtilsEvent<[SmartObjectsAbTestInfo]>;
    static readonly onAbTestEnded: UtilsEvent<[SmartObjectsAbTestInfo]>;
    static readonly onSegmentInfoUpdated: UtilsEvent<[SmartObjectsSegmentInfo]>;
    static readonly onDailyBonusUpdated: UtilsEvent<[SmartObjectsDailyBonusInfo]>;
    static readonly onShopUpdated: UtilsEvent<[]>;
    static readonly onProfileResetStart: UtilsEvent<[]>;
    static readonly onProfileResetFinish: UtilsEvent<[]>;
    static readonly onShopSlotWasPurchased: UtilsEvent<[SmartObjectsShopSlot]>;
    static readonly onOfferWasPurchased: UtilsEvent<[SmartObjectsOfferInfo]>;
    static readonly onOfferGroupWasPurchased: UtilsEvent<[SmartObjectsOfferGroupInfo, SmartObjectsStoreItem]>;
    static readonly onInventoryWasUpdated: UtilsEvent<[SmartObjectsInventory, SmartObjectsItem, number, number, number]>;
    static readonly onGameRefreshed: UtilsEvent<[]>;
    static readonly OnDisconnected: UtilsEvent<[DisconnectReason]>;
    static readonly onNetworkDownloadStarted: UtilsEvent<[NetworkDownloadInfo]>;
    static readonly onNetworkDownloadFinished: UtilsEvent<[NetworkDownloadCompletedInfo]>;
    static readonly onHardPurchasedStoreItem: UtilsEvent<[BalancyPaymentInfo, SmartObjectsStoreItem]>;
    static readonly onHardPurchasedShopSlot: UtilsEvent<[BalancyPaymentInfo, SmartObjectsShopSlot]>;
    static readonly onHardPurchasedOffer: UtilsEvent<[BalancyPaymentInfo, SmartObjectsGameOffer]>;
    static readonly onHardPurchasedOfferGroup: UtilsEvent<[BalancyPaymentInfo, SmartObjectsGameOfferGroup, SmartObjectsStoreItem]>;
    static initExamplesWithLogs(): void;
    static clearAll(): void;
}
export declare class Balancy {
    private wasm;
    private balancyCMS;
    private balancyAPI;
    private balancyActions;
    private balancyProfiles;
    private balancyCoreAppConfig;
    private updateTimer;
    private dataObjectsManager;
    static Main: typeof Main;
    static CMS: typeof CMS;
    static Callbacks: typeof Callbacks;
    static API: typeof API;
    static Actions: typeof Actions;
    static Profiles: typeof Profiles;
    static DataObjectsManager: typeof DataObjectsManager;
    static RenderViewsManager: typeof RenderViewsManager;
    private static LibraryMethods;
    private onProgressUpdateCallback;
    constructor(wasm: Core);
    init(config: AppConfig): void;
    stop(): void;
    private userDataInitialized;
    static initFileHelper(wasm: Core, fh: Core['JSFileHelper']): void;
    initializeFileHelper(fh: Core['JSFileHelper']): void;
    addFunction(fn: Function, signature: string): number;
    UTF8ToString(pointer: number): string;
    private getStatusNotification;
    private createAppConfig;
    private onStatusUpdated;
    private getEventInfo;
    private getShopSlot;
    private getOfferInfo;
    private getOfferGroupInfo;
    private getInventory;
    private onProgressUpdate;
    private createCoreAppConfig;
    getConfig(): Config;
}
//# sourceMappingURL=balancy.class.d.ts.map