import type { ManifestResponse } from "./types"; export interface SelectedTarget { packageHash: string; releaseLabel: string; patchUrl: string | undefined; patchSize: number | undefined; fullBundleUrl: string; fullBundleSize: number; isMandatory: boolean; releaseNotes: string | undefined; signature: string | undefined; /** Whether this target came from previous_package_info fallback. */ isPreviousFallback: boolean; } /** True when target_package_hash equals the currently running package — no update needed. */ export declare function isNoOp(manifest: ManifestResponse, runningPackageHash: string): boolean; /** True when target_package_hash is null — revert to embedded binary. */ export declare function isBinaryRevert(manifest: ManifestResponse): boolean; export interface SignatureVerifier { (signature: string | undefined, packageHash: string): boolean; } /** * Select the target package from a manifest. * * Implements Spec §Manifest Handling steps 6-9: * 1. validate manifest (done by parser.parseManifest) * 2-3. binary revert handling (done by caller checking isBinaryRevert) * 4-5. no-op check (done by caller checking isNoOp) * 6-9. rollout evaluation + previous_package_info fallback * 10. pending-package skip (done by caller against the selected target) * * @param manifest - Validated manifest (non-null target, not no-op) * @param runningPackageHash - Currently running OTA package hash * @param rolloutEligible - Whether the installation passes rollout for the root target * @param verifySignature - Optional signature verifier. Returns true if valid. * @returns Selected target, or null if no eligible target exists */ export declare function selectTarget(manifest: ManifestResponse, runningPackageHash: string, rolloutEligible: boolean, verifySignature?: SignatureVerifier): SelectedTarget | null; //# sourceMappingURL=manifest.d.ts.map