import type { AssetBrowseKind, AssetCategoriesResponse, AssetCategory, AssetDetailResponse, AssetListResponse, AssetSpecAssetsListResponse, AssetSpecAppsListResponse, AssetSpecDetailResponse, AssetSpecListResponse, AssetSpecVersionResponseEnvelope, AssetSpecVersionsListResponse, AssetSourceBundleResponse, AssetVersionsListResponse, ContentRemixRelationsResponse, CreateAssetSpecVersionResponse, CreateAssetVersionResponse, DeleteAssetSpecResponse, DeleteAssetSpecVersionResponse, DeleteAssetResponse, DeleteAssetVersionResponse, DeleteOwnedCustomAssetResponse, ListOwnedCustomAssetsResponse, LoadOwnedCustomAssetResponse, MutateOwnedCustomAssetRequest, MutateOwnedCustomAssetResponse, UpdateAssetRequest, UpdateAssetSpecVersionResponse, UpdateAssetResponse, UpdateAssetVersionRequest, UpdateAssetVersionResponse } from '@playdrop/types';
import type { UploadAssetSpecVersionOptions, UploadAssetVersionOptions } from '../client.js';
type ApiResponseLike<T> = {
    status: number;
    body: T;
    headers: Headers;
};
type RequestExecutor = <T>(input: {
    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
    path: string;
    body?: unknown;
    headers?: Record<string, string>;
    signal?: AbortSignal;
}) => Promise<ApiResponseLike<T>>;
type ErrorHandler = (response: ApiResponseLike<unknown>, defaultMessage: string) => never;
type ParseResponseBody = <T>(response: Response) => Promise<T>;
export declare function buildAssetsApiClientMethods(input: {
    request: RequestExecutor;
    handleApiError: ErrorHandler;
    fetchImpl: typeof fetch;
    includeBrowserCredentials: boolean;
    resolveBaseUrl: () => string;
    resolveUrl: (base: string, path: string) => string;
    parseResponseBody: ParseResponseBody;
    resolveToken: () => Promise<string | null>;
    getClientHeaders: () => Record<string, string>;
    buildCreatorAssetMutationPath: (creatorUsername: string, assetName?: string, suffix?: string) => string;
    normalizeCreatorItemSlug: (value: string, field: 'creator' | 'name') => string;
    normalizeAssetRevisionInput: (revision: string | number) => string;
    parseContentDispositionFilename: (headerValue: string | null) => string | null;
}): {
    createAssetVersion(creatorUsername: string, name: string, options: UploadAssetVersionOptions): Promise<CreateAssetVersionResponse>;
    listOwnedCustomAssets(appId: number, options: {
        assetSpecRef: string;
        limit?: number;
        offset?: number;
    }): Promise<ListOwnedCustomAssetsResponse>;
    loadOwnedCustomAsset(appId: number, assetName: string, revision: string | number, options: {
        assetSpecRef: string;
    }): Promise<LoadOwnedCustomAssetResponse>;
    saveOwnedCustomAsset(appId: number, requestBody: MutateOwnedCustomAssetRequest): Promise<MutateOwnedCustomAssetResponse>;
    deleteOwnedCustomAsset(appId: number, assetName: string, options: {
        assetSpecRef: string;
        revision?: string | number;
    }): Promise<DeleteOwnedCustomAssetResponse>;
    createAssetSpecVersion(creatorUsername: string, name: string, options: UploadAssetSpecVersionOptions): Promise<CreateAssetSpecVersionResponse>;
    fetchAssetRelated(creatorUsername: string, assetName: string): Promise<ContentRemixRelationsResponse>;
    listAssetCategories(): Promise<AssetCategoriesResponse>;
    listAssets(options?: {
        limit?: number;
        offset?: number;
        category?: AssetCategory;
        subcategory?: string;
        kind?: AssetBrowseKind;
        assetSpec?: string;
        assetSpecOwner?: string;
        assetSpecName?: string;
        sort?: string;
        tags?: string[];
    }): Promise<AssetListResponse>;
    listAssetsForCreator(creatorUsername: string, options?: {
        limit?: number;
        offset?: number;
        category?: AssetCategory;
        subcategory?: string;
        kind?: AssetBrowseKind;
        assetSpec?: string;
        assetSpecOwner?: string;
        assetSpecName?: string;
        sort?: string;
        tags?: string[];
    }): Promise<AssetListResponse>;
    listAssetSpecs(options?: {
        limit?: number;
        offset?: number;
        sort?: string;
    }): Promise<AssetSpecListResponse>;
    listAssetSpecsForCreator(creatorUsername: string, options?: {
        limit?: number;
        offset?: number;
        sort?: string;
    }): Promise<AssetSpecListResponse>;
    fetchAssetSpecBySlug(creatorUsername: string, name: string): Promise<AssetSpecDetailResponse>;
    listAssetSpecVersions(creatorUsername: string, name: string, options?: {
        limit?: number;
        offset?: number;
    }): Promise<AssetSpecVersionsListResponse>;
    fetchAssetSpecVersion(creatorUsername: string, name: string, version: string): Promise<AssetSpecVersionResponseEnvelope>;
    listAssetsByAssetSpec(creatorUsername: string, name: string, options?: {
        limit?: number;
        offset?: number;
        sort?: string;
    }): Promise<AssetSpecAssetsListResponse>;
    listAppsByAssetSpec(creatorUsername: string, name: string, options?: {
        limit?: number;
        offset?: number;
    }): Promise<AssetSpecAppsListResponse>;
    fetchAssetBySlug(creatorUsername: string, assetName: string): Promise<AssetDetailResponse>;
    listAssetVersions(creatorUsername: string, assetName: string, options?: {
        limit?: number;
        offset?: number;
    }): Promise<AssetVersionsListResponse>;
    updateAsset(creatorUsername: string, name: string, requestBody: UpdateAssetRequest): Promise<UpdateAssetResponse>;
    updateAssetVersion(creatorUsername: string, name: string, revision: string | number, requestBody: UpdateAssetVersionRequest): Promise<UpdateAssetVersionResponse>;
    deleteAssetVersion(creatorUsername: string, name: string, revision: string | number): Promise<DeleteAssetVersionResponse>;
    deleteAsset(creatorUsername: string, name: string): Promise<DeleteAssetResponse>;
    updateAssetSpecVersion(creatorUsername: string, name: string, version: string, requestBody: {
        visibility?: "PUBLIC" | "PRIVATE";
        status?: "ACTIVE" | "DEPRECATED" | "RETRACTED";
        successorVersion?: string | null;
    }): Promise<UpdateAssetSpecVersionResponse>;
    deleteAssetSpecVersion(creatorUsername: string, name: string, version: string): Promise<DeleteAssetSpecVersionResponse>;
    deleteAssetSpec(creatorUsername: string, name: string): Promise<DeleteAssetSpecResponse>;
    downloadAssetFile(creatorUsername: string, assetName: string, revision: string | number, options?: {
        role?: string;
    }): Promise<Blob>;
    downloadAssetSource(creatorUsername: string, assetName: string, revision: string | number): Promise<{
        blob: Blob;
        metadata: AssetSourceBundleResponse;
    }>;
};
export {};
//# sourceMappingURL=assets.d.ts.map