package com.appzung.codepush.react;

public class CodePushConstants {
    public static final String ASSETS_BUNDLE_PREFIX = "assets://";
    public static final String BINARY_MODIFIED_TIME_KEY = "binaryModifiedTime";
    public static final String CODE_PUSH_FOLDER_PREFIX = "CodePush";
    public static final String CODE_PUSH_HASH_FILE_NAME = "CodePushHash";
    public static final String CODE_PUSH_OLD_HASH_FILE_NAME = "CodePushHash.json";
    public static final String CODE_PUSH_PREFERENCES = "CodePush";
    public static final String CURRENT_PACKAGE_KEY = "currentPackage";
    public static final String DEFAULT_JS_BUNDLE_NAME = "index.android.bundle";
    public static final String DIFF_MANIFEST_FILE_NAME = "hotcodepush.json";
    public static final int DOWNLOAD_BUFFER_SIZE = 1024 * 256;
    public static final String DOWNLOAD_FILE_NAME = "download.zip";
    public static final String DOWNLOAD_PROGRESS_EVENT_NAME = "CodePushDownloadProgress";
    public static final String DOWNLOAD_URL_KEY = "downloadUrl";
    public static final String FAILED_UPDATES_KEY = "CODE_PUSH_FAILED_UPDATES";
    public static final String PACKAGE_FILE_NAME = "app.json";
    public static final String PACKAGE_HASH_KEY = "packageHash";
    public static final String PENDING_UPDATE_HASH_KEY = "hash";
    public static final String PENDING_UPDATE_IS_LOADING_KEY = "isLoading";
    public static final String PENDING_UPDATE_KEY = "CODE_PUSH_PENDING_UPDATE";
    public static final String PREVIOUS_PACKAGE_KEY = "previousPackage";
    public static final String REACT_NATIVE_LOG_TAG = "ReactNative";
    public static final String RELATIVE_BUNDLE_PATH_KEY = "bundlePath";
    public static final String STATUS_FILE = "codepush.json";
    public static final String UNZIPPED_FOLDER_NAME = "unzipped";
    public static final String CODE_PUSH_APK_BUILD_TIME_KEY = "CODE_PUSH_APK_BUILD_TIME";
    public static final String BUNDLE_JWT_FILE = ".codepushrelease";
    public static final String LATEST_ROLLBACK_INFO_KEY = "LATEST_ROLLBACK_INFO";
    public static final String LATEST_ROLLBACK_PACKAGE_HASH_KEY = "packageHash";
    public static final String LATEST_ROLLBACK_TIME_KEY = "time";
    public static final String LATEST_ROLLBACK_COUNT_KEY = "count";
    public static final String CLIENT_UNIQUE_ID_KEY = "clientUniqueId";
    public static final String TELEMETRY_ENABLED_KEY = "telemetryEnabled";
    public static final String DATA_TRANSMISSION_ENABLED_KEY = "dataTransmissionEnabled";

    // Failure-detail keys, stamped onto a failed package's JSON before persisting
    // into FAILED_UPDATES_KEY. Surfaced back on the StatusReport by
    // CodePushTelemetryManager.getRollbackReport(...).
    public static final String FAILURE_INFO_KEY = "__codePushFailureInfo";
    public static final String FAILURE_ERROR_CODE_KEY = "errorCode";
    public static final String FAILURE_ERROR_MESSAGE_KEY = "errorMessage";
    public static final String FAILURE_FAILED_PHASE_KEY = "failedPhase";

    /**
     * Built-in bundle metadata file packaged into APK assets/.
     *
     * 由 CI 脚本 scripts/ota/pull-baseline-bundle.sh 在打 APK 前生成，落到
     * `android/app/src/main/assets/main-bundle-meta.json`，结构：
     *
     * <pre>
     * {
     *   "pulledAt": "2026-04-30T...",
     *   "source": "codepush-server",
     *   "serverUrl": "...",
     *   "package": {
     *     "id": "...",
     *     "label": "v17",
     *     "packageHash": "...",
     *     ...
     *   }
     * }
     * </pre>
     *
     * 用途：Crashlytics 追踪内置包版本（区别于 OTA 下来的 update package）。
     */
    public static final String MAIN_BUNDLE_META_FILE_NAME = "main-bundle-meta.json";
}
