import { Command } from '@oclif/core';
import type { Interfaces } from '@oclif/core';
import type { BalenaSDK } from 'balena-sdk';
import type { RegistrySecrets } from '@balena/compose/dist/multibuild';
declare enum BuildTarget {
    Cloud = 0,
    Device = 1
}
type FlagsDef = Interfaces.InferredFlags<typeof PushCmd.flags>;
export default class PushCmd extends Command {
    static description: string;
    static examples: string[];
    static args: {
        fleetOrDevice: Interfaces.Arg<string, Record<string, unknown>>;
    };
    static flags: {
        source: Interfaces.OptionFlag<string, Interfaces.CustomOptions>;
        emulated: Interfaces.BooleanFlag<boolean>;
        dockerfile: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
        nocache: Interfaces.BooleanFlag<boolean>;
        pull: Interfaces.BooleanFlag<boolean>;
        'noparent-check': Interfaces.BooleanFlag<boolean>;
        'registry-secrets': Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
        nolive: Interfaces.BooleanFlag<boolean>;
        detached: Interfaces.BooleanFlag<boolean>;
        service: Interfaces.OptionFlag<string[] | undefined, Interfaces.CustomOptions>;
        system: Interfaces.BooleanFlag<boolean>;
        env: Interfaces.OptionFlag<string[] | undefined, Interfaces.CustomOptions>;
        'noconvert-eol': Interfaces.BooleanFlag<boolean>;
        'multi-dockerignore': Interfaces.BooleanFlag<boolean>;
        'release-tag': Interfaces.OptionFlag<string[] | undefined, Interfaces.CustomOptions>;
        draft: Interfaces.BooleanFlag<boolean>;
        note: Interfaces.OptionFlag<string | undefined, Interfaces.CustomOptions>;
    };
    static primary: boolean;
    run(): Promise<void>;
    protected pushToCloud(appNameOrSlug: string, options: FlagsDef, sdk: BalenaSDK, dockerfilePath: string, registrySecrets: RegistrySecrets): Promise<void>;
    protected pushToDevice(localDeviceAddress: string, options: FlagsDef, dockerfilePath: string, registrySecrets: RegistrySecrets): Promise<void>;
    protected getBuildTarget(appOrDevice: string): Promise<BuildTarget>;
    protected checkInvalidOptions(invalidOptions: Array<keyof FlagsDef>, options: FlagsDef, errorMessage: string): void;
}
export {};
