export declare enum MediaType {
    Album = "Album",
    Audio = "Audio",
    Image = "Image",
    Multimedia = "Multimedia",
    ProjectDocument = "ProjectDocument",
    Story = "Story",
    Video = "Video",
    Widget = "Widget"
}
export type Asset = {
    docSubType: string;
    docType: MediaType | '';
    extension: string;
    height?: string;
    id: string;
    identifier: string;
    imageUrl: string;
    name: string;
    originalUrl: string;
    recordId: string;
    size: string;
    tags: string;
    width?: string;
};
export type Facet = {
    facetDetails: {
        displayName: string;
        facetFieldName: string;
        facetIndexedFieldName?: string;
    };
    values: Array<{
        count: number;
        displayValue: string;
        value: string;
    }>;
};
export type GetAssetsInFolderRequest = {
    countPerPage: number;
    extraFields?: string[];
    getPermanentAssetsPaths?: boolean;
    limitedDocTypes: string[];
    pageNumber: number;
    parentFolderIdentifier: string;
    searchTerm: string;
    sortOrder: string;
    token?: string;
};
export type GetAssetsInFolderResponse = {
    facets: Facet[];
    items: Array<Asset & Record<string, string>>;
    totalCount: number;
};
export type GetTransformAssetLinkRequest = {
    SourceAssetFormat?: string;
    SourceAssetRecordID: string;
    TargetExtension?: string;
    Token?: string;
    Transformations?: string;
    UseSession?: string;
};
export type GetTransformAssetLinkResponse = {
    height: number;
    relativePath: string;
    width: number;
};
export type GetAssetsRequest = {
    extraFields?: string[];
    getPermanentAssetsPaths?: boolean;
    recordIds: string[];
    token?: string;
};
export type GetAssetsResponse = {
    facets: Facet[];
    items: Array<Pick<Asset, 'recordId' | 'originalUrl' | 'name'> & Record<string, string>>;
    totalCount: number;
};
export type GetCropZoneSuggestionRequest = {
    autoCropMode: string;
    cropHeight?: number;
    cropWidth?: number;
    imageUrl: string;
    useSession?: string;
};
export type GetCropZoneSuggestionRawResponse = {
    cropHeight: number;
    cropWidth: number;
    cropX: number;
    cropY: number;
};
export type GetCropZoneSuggestionResponse = {
    height: number;
    width: number;
    x: number;
    y: number;
};
export type GetAvailableProxiesRequest = {
    assetRecordId: string;
    siteUrl?: string;
    token?: string;
    useSession?: string;
};
export type AvailableProxy = {
    cdnName: string | null;
    extension: string | null;
    formatHeight: number;
    formatWidth: number;
    height: number;
    permanentLink: string | null;
    proxyLabel: string;
    proxyName: string;
    width: number;
};
export type GetAvailableProxiesRawResponse = {
    proxies: Array<{
        cdnName: string | null;
        extension: string | null;
        formatHeight: number;
        formatWidth: number;
        height: number;
        permanentLink: string | null;
        proxyLabel: string;
        proxyName: string;
        width: number;
    }>;
};
export type GetAvailableProxiesResponse = AvailableProxy[];
export type FormatsByDocType = {
    Audio: Record<string, string>;
    Image: Record<string, string>;
    Multimedia: Record<string, string>;
    Video: Record<string, string>;
};
export type GetAllFormatCodesRawResponse = {
    formatsByDocType: FormatsByDocType;
};
export type GetAllFormatCodesResponse = {
    formatsByDocType: FormatsByDocType;
};
export type SearchDateOperator = ':' | '>' | '>:' | '<' | '<:';
export type SearchDateCriterion = {
    operator: SearchDateOperator;
    value: string;
};
export declare enum SearchOrientation {
    Landscape = "Landscape",
    Portrait = "Portrait",
    Square = "Square"
}
export type SearchCriteria = {
    artist?: string;
    color?: boolean;
    createDate?: SearchDateCriterion | [SearchDateCriterion, SearchDateCriterion];
    custom?: Record<string, string | string[]>;
    docSubType?: string | string[];
    docType?: MediaType | MediaType[];
    editDate?: SearchDateCriterion | [SearchDateCriterion, SearchDateCriterion];
    fileExtension?: string | string[];
    keyword?: string | string[];
    mediaDate?: SearchDateCriterion | [SearchDateCriterion, SearchDateCriterion];
    mediaNumber?: string;
    nativeKeyword?: string | string[];
    orientation?: SearchOrientation;
    parentFolderIdentifier?: string;
    path?: string;
    photographer?: string;
    purpose?: string;
    recordId?: string | string[];
    systemIdentifier?: string;
    text?: string;
    title?: string;
};
export type SearchQueryNode = {
    and: SearchQueryNode[];
} | {
    or: SearchQueryNode[];
} | {
    not: SearchQueryNode;
} | SearchCriteria;
export type SearchAssetsParams = {
    countPerPage?: number;
    fields?: string[];
    getPermanentAssetsPaths?: boolean;
    pageNumber?: number;
    query: SearchQueryNode;
    siteUrl?: string;
    sort?: string;
    token?: string;
    useSession?: string;
};
export type SearchAssetsMediaField = {
    Height?: number;
    URI: string;
    Width?: number;
};
export type SearchAssetsItemFieldValue = string | number | boolean | SearchAssetsMediaField;
export type SearchAssetsItem = Record<string, SearchAssetsItemFieldValue>;
export type SearchAssetsRawResponse = {
    APIRequestInfo?: {
        APIVersion: string;
        IsLoggedIn: boolean;
        Module: string;
        ProviderID: string;
        ProviderVersion: string;
        Status: string;
        TimeoutPeriodMinutes: number;
        UserLogin: string;
    };
    APIResponse: {
        GlobalInfo: {
            QueryDurationMilliseconds: number;
            Sort: string;
            TotalCount: number;
        };
        Items: SearchAssetsItem[];
    };
};
export type SearchAssetsResponse = {
    items: SearchAssetsItem[];
    sort: string;
    totalCount: number;
};
/** Raw JSON from `ASSET_API_ENDPOINT.UPLOAD_RESPONSE` (UploadNewMedia v3). */
export type UploadNewMediaV3Response = {
    APIResponse?: {
        SystemIdentifier?: string;
    };
};
/** Parsed asset link payload (raw API may expose either field). */
export type GetAssetLinkDownloadRawResponse = {
    downloadLink?: string;
    imageUrl?: string;
};
