/**
 * Bundle artifact preparation shared by `bundle upload` and the offline
 * `bundle zip` packer. Everything here is local (no API key, no network): the
 * online upload wires its analytics through the optional hooks, so both
 * commands produce byte-for-byte the same zip, checksum, encryption metadata,
 * native package list and delta encryption settings.
 */
import type { Buffer } from 'node:buffer';
import type { getLocalDependencies } from '../utils';
import type { OptionsUpload } from './upload_interface';
export type BundleArtifactOptions = Pick<OptionsUpload, 'mode' | 'keyV2' | 'keyDataV2' | 'key' | 'oldEncryption' | 'forceCrc32Checksum' | 'packageJson' | 'displayIvSession' | 'verbose'>;
export interface BundleArtifactHooks {
    /** Called right before v2 encryption starts (the online upload sends its analytics event here). */
    onEncryptV2?: () => Promise<void>;
}
interface ResolvedUpdaterForUpload {
    packageName: string;
    version: string;
}
export declare function resolveUpdaterForUpload(options: Pick<OptionsUpload, 'mode' | 'packageJson'>, root: string): Promise<ResolvedUpdaterForUpload | null>;
/**
 * Zip the web assets, compute the checksum and apply v2 encryption exactly as
 * `bundle upload` does (sha256/crc32 selection, .capgo_key_v2 default,
 * --key-v2/--key-data-v2/--no-key, V3 hex vs V2 base64 checksum signature).
 */
export declare function prepareBundleArtifact(path: string, options: BundleArtifactOptions, publicKeyFromConfig?: string, hooks?: BundleArtifactHooks): Promise<{
    zipped: Buffer<ArrayBufferLike>;
    ivSessionKey: string | undefined;
    sessionKey: Buffer<ArrayBufferLike> | undefined;
    checksum: string;
    checksumAlgorithm: "sha256" | "crc32";
    checksumEncryption: "v2" | "v3" | undefined;
    encryptionMethod: "none" | "v1" | "v2";
    finalKeyData: string;
    keyId: string;
    updaterVersion: string | undefined;
    updaterPackageName: string | undefined;
}>;
type LocalDependencies = Awaited<ReturnType<typeof getLocalDependencies>>;
/** native_packages payload stored on the bundle (same shape `bundle upload` sends). */
export declare function buildNativePackagesPayload(localDependencies: LocalDependencies | undefined, ignoreMetadataCheck?: boolean): any[] | undefined;
/**
 * Resolve delta (manifest) encryption exactly like `bundle upload`: folds the
 * deprecated --encrypt-partial alias into options.encryptDelta, refuses explicit
 * delta encryption without v2, auto-enables it for updater >= 6.14.4 and picks
 * the hex (V3) checksum format when the updater supports it.
 */
export declare function resolveDeltaEncryptionSettings(options: OptionsUpload, encryptionMethod: 'none' | 'v2' | 'v1'): Promise<{
    supportsHexChecksum: boolean;
}>;
export {};
