import type { ODataOptionsWithoutCount, OptionsToResponse } from 'pinejs-client-core';
import type { InjectedDependenciesParam, InjectedOptionsParam, Release, ReleaseAsset } from '..';
import type { ReleaseRawVersionApplicationPair } from './release';
type WriteReleaseAssetParams = Omit<ReleaseAsset['Write'], 'asset'> & {
    asset: File | string;
};
type UploadProgressInfo = {
    total: number;
    uploaded: number;
};
type UploadParams = {
    chunkSize?: number | undefined;
    parallelUploads?: number | undefined;
    overwrite?: boolean | undefined;
    onUploadProgress?: (progress: UploadProgressInfo) => void | Promise<void>;
};
type ReleaseAssetId = ReleaseAsset['Read']['id'] | {
    asset_key: ReleaseAsset['Read']['asset_key'];
    release: string | number | ReleaseRawVersionApplicationPair;
};
declare const getReleaseAssetModel: (deps: InjectedDependenciesParam, opts: InjectedOptionsParam, getRelease: <T extends ODataOptionsWithoutCount<Release["Read"]>>(commitOrIdOrRawVersion: string | number | ReleaseRawVersionApplicationPair, options?: T) => Promise<OptionsToResponse<Release["Read"], T, undefined>[number]>) => {
    getAllByRelease<T extends ODataOptionsWithoutCount<ReleaseAsset["Read"]>>(commitOrIdOrRawVersion: string | number | ReleaseRawVersionApplicationPair, options?: T): Promise<OptionsToResponse<ReleaseAsset["Read"], T, undefined>>;
    get<T extends ODataOptionsWithoutCount<ReleaseAsset["Read"]>>(id: ReleaseAssetId, options?: T): Promise<OptionsToResponse<ReleaseAsset["Read"], T, undefined>[number]>;
    download(id: ReleaseAssetId): Promise<import("balena-request").BalenaRequestStreamResult>;
    upload(uploadParams: WriteReleaseAssetParams, { chunkSize, parallelUploads, overwrite, onUploadProgress, }?: UploadParams): Promise<import("pinejs-client-core/node_modules/@balena/abstract-sql-to-typescript", { with: { "resolution-mode": "import" } }).PickDeferred<{
        release: {
            __id: Release["Read"]["id"];
        } | [Release["Read"]];
        asset_key: import("@balena/sbvr-types").Types["Short Text"]["Read"];
        id: import("@balena/sbvr-types").Types["Integer"]["Read"];
        asset: import("@balena/sbvr-types").Types["WebResource"]["Read"] | null;
    }, "release" | "id" | "asset_key" | "asset">>;
    remove(id: ReleaseAssetId): Promise<void>;
};
export default getReleaseAssetModel;
