import { ShowpadAppManifestSchemaV2 } from '../../schemas/manifest';
import { ShowpadClient } from '../../showpad-client';
import { components } from '../../schemas/apps-api';
import { ShowpadCommand } from '../../showpad-commands';
interface UploadStatusResult {
    status: components['schemas']['UploadStatus'];
    attempts: number;
}
export default class Upload extends ShowpadCommand<typeof Upload> {
    static description: string;
    static examples: string[];
    static args: {
        filePath: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
    };
    static flags: {
        'skip-validation': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
    };
    /**
     * Reads the app manifest file from the specified path and returns its contents.
     *
     * @param appPath The path to the app bundle
     * @returns The parsed app manifest object
     */
    readManifest(appPath: string): Promise<ShowpadAppManifestSchemaV2>;
    /**
     * Uploads the app bundle to Showpad and returns the upload ID.
     *
     * @param showpadClient The Showpad client instance
     * @param appId The optional ID of the existing app (if any)
     * @param version The app version
     * @param appPath The path to the app bundle
     * @param appSize The size of the app bundle in bytes
     * @returns The upload ID
     */
    uploadApp(showpadClient: ShowpadClient, appId: string | undefined, version: string, appPath: string, appSize: number): Promise<string>;
    private getUploadByIdIgnoreRequestErrors;
    /**
     * Checks the status of the upload with the specified ID and returns a status object.
     *
     * @param showpadClient The Showpad client instance
     * @param uploadId The upload ID
     * @returns The upload status object
     */
    validateUpload(showpadClient: ShowpadClient, uploadId: string): Promise<UploadStatusResult>;
    run(): Promise<void>;
}
export {};
