import type { BalenaRequestStreamResult } from 'balena-request'; import type { Release, ReleaseTag } from '../types/models'; import type { InjectedDependenciesParam, InjectedOptionsParam } from '..'; import type { ODataOptionsWithoutCount, OptionsToResponse } from 'pinejs-client-core'; export declare enum OsTypes { DEFAULT = "default", ESR = "esr" } export declare enum OsVariant { production = "prod", development = "dev" } export type OsLines = 'next' | 'current' | 'sunset' | 'outdated' | undefined; declare const baseReleasePineOptions: { readonly $select: readonly ["id", "known_issue_list", "raw_version", "variant", "phase"]; readonly $expand: { readonly release_tag: { readonly $select: readonly ["tag_key", "value"]; }; }; }; type PickExpandedRelease = OptionsToResponse[number]; type OsVersionProps = { strippedVersion: string; basedOnVersion?: string; osType: string; line?: OsLines; }; export type OsVersion = PickExpandedRelease & OsVersionProps; type OsVersionResponse> = Array, undefined>[number] & OsVersionProps>; export interface ImgConfigOptions { network?: 'ethernet' | 'wifi'; appUpdatePollInterval?: number; provisioningKeyName?: string; provisioningKeyExpiryDate?: string; provisioningKeyDescription?: string; wifiKey?: string; wifiSsid?: string; ip?: string; gateway?: string; netmask?: string; deviceType?: string; version: string; developmentMode?: boolean; } export interface OsUpdateVersions { versions: string[]; recommended: string | undefined; current: string | undefined; } export interface OsDownloadOptions extends Pick { deviceType: string; version?: string; appId?: number; fileType?: '.img' | '.zip' | '.gz'; imageType?: 'raw' | 'flasher'; } declare const getOsModel: (deps: InjectedDependenciesParam, opts: InjectedOptionsParam) => { _getNormalizedDeviceTypeSlug: (deviceTypeSlug: string) => Promise; _getDownloadSize: (deviceType: string, version: string) => Promise; _clearDeviceTypesAndOsVersionCaches: () => void; _getMaxSatisfyingVersion: (versionOrRange: string, osVersions: Array>) => string | null; OsTypes: typeof OsTypes; getAllOsVersions: { (deviceType: string, options?: undefined): Promise; (deviceType: string[], options?: undefined): Promise>; >(deviceType: string, options?: TP): Promise>>; >(deviceTypes: string[], options?: TP): Promise>>>; }; getAvailableOsVersions: {
(deviceType: DT, pineOptions?: undefined, extraOptions?: { includeDraft?: boolean; }): Promise
>;
>(deviceType: DT, pineOptions: TP, extraOptions?: { includeDraft?: boolean; }): Promise
: Record>>; }; getMaxSatisfyingVersion: (deviceType: string, versionOrRange?: string, osType?: "default" | "esr") => Promise; getDownloadSize: (deviceType: string, version?: string) => Promise; download: (() => never) | (({ deviceType, version, ...restOptions }: OsDownloadOptions) => Promise); getConfig: (slugOrUuidOrId: string | number, options: ImgConfigOptions) => Promise; isSupportedOsUpdate: (deviceType: string, currentVersion: string, targetVersion: string) => Promise; getOsUpdateType: (deviceType: string, currentVersion: string, targetVersion: string) => Promise; getSupportedOsUpdateVersions: (deviceType: string, currentVersion: string, { osType, ...options }?: { osType?: "default" | "esr" | null; includeDraft?: boolean; }) => Promise; isArchitectureCompatibleWith: (osArchitecture: string, applicationArchitecture: string) => boolean; getSupervisorReleasesForCpuArchitecture: >(cpuArchitectureSlugOrId: string | number, options?: T) => Promise; release_tag?: Array; release__has__asset_key?: Array; release_asset?: Array; image__is_part_of__release?: Array; release_image?: Array; contains__image?: Array; should_be_running_on__application?: Array; should_be_running_on__device?: Array; is_running_on__device?: Array; is_pinned_to__device?: Array; should_operate__device?: Array; should_manage__device?: Array; provides__device__installs__image?: Array; provides__image_install?: Array; }, import("../util").MergePineOptions, undefined>>; }; export default getOsModel;