import type { BalenaSDK } from 'balena-sdk'; import type * as Dockerode from 'dockerode'; import type { BuildConfig, Composition, ImageDescriptor } from '@balena/compose/dist/parse'; import type * as MultiBuild from '@balena/compose/dist/multibuild'; import type { Readable } from 'stream'; import type { BuiltImage, ComposeOpts, ComposeProject, TarDirectoryOptions } from './compose-types'; import type { DeviceInfo } from './device/api'; import Logger = require('./logger'); export declare function parseReleaseTagKeysAndValues(releaseTags: string[]): { releaseTagKeys: string[]; releaseTagValues: string[]; }; export declare function applyReleaseTagKeysAndValues(sdk: BalenaSDK, releaseId: number, releaseTagKeys: string[], releaseTagValues: string[]): Promise; export declare function loadProject(logger: Logger, opts: ComposeOpts, image?: string, imageTag?: string): Promise; export interface Renderer { start: () => void; end: (buildSummaryByService?: Dictionary) => void; streams: Dictionary; } export interface BuildProjectOpts { docker: Dockerode; logger: Logger; projectPath: string; projectName: string; composition: Composition; arch: string; deviceType: string; emulated: boolean; buildOpts: import('./docker').BuildOpts; inlineLogs?: boolean; convertEol: boolean; dockerfilePath?: string; multiDockerignore: boolean; } export declare function buildProject(opts: BuildProjectOpts): Promise; export declare function makeImageName(projectName: string, serviceName: string, tag?: string): string; export declare function getServiceDirsFromComposition(sourceDir: string, composition?: Composition): Promise>; export declare function isBuildConfig(image: string | BuildConfig): image is BuildConfig; export declare function tarDirectory(dir: string, { composition, convertEol, multiDockerignore, preFinalizeCallback, }: TarDirectoryOptions): Promise; export declare function checkBuildSecretsRequirements(docker: Dockerode, sourceDir: string): Promise; export declare function getRegistrySecrets(sdk: BalenaSDK, inputFilename?: string): Promise; export declare function makeBuildTasks(composition: Composition, tarStream: Readable, deviceInfo: DeviceInfo, logger: Logger, projectName: string, releaseHash?: string, preprocessHook?: (dockerfile: string) => string): Promise; export interface ProjectValidationResult { dockerfilePath: string; registrySecrets: MultiBuild.RegistrySecrets; } export declare function validateProjectDirectory(sdk: BalenaSDK, opts: { dockerfilePath?: string; noParentCheck: boolean; projectPath: string; registrySecretsPath?: string; }): Promise; export declare function deployProject(docker: Dockerode, sdk: BalenaSDK, logger: Logger, composition: Composition, images: BuiltImage[], appId: number, skipLogUpload: boolean, projectPath: string, isDraft: boolean, imgDescriptors: ImageDescriptor[]): Promise; export declare function createSpinner(): () => string; export declare function createRunLoop(tick: (...args: any[]) => void): { onEnd(): void; end(): void; }; export declare const composeCliFlags: { emulated: import("@oclif/core/lib/interfaces").BooleanFlag; dockerfile: import("@oclif/core/lib/interfaces").OptionFlag; nologs: import("@oclif/core/lib/interfaces").BooleanFlag; 'multi-dockerignore': import("@oclif/core/lib/interfaces").BooleanFlag; 'noparent-check': import("@oclif/core/lib/interfaces").BooleanFlag; 'registry-secrets': import("@oclif/core/lib/interfaces").OptionFlag; 'noconvert-eol': import("@oclif/core/lib/interfaces").BooleanFlag; projectName: import("@oclif/core/lib/interfaces").OptionFlag; };