import { DTOFigmaNode, DTOFigmaNodeV2, DTOFileFinalizeBulkPayload, DTOFileUploadBulkPayload, DTOFileUploadPayload, DTOForgeFigmaNodeCreateRequest, DTOForgeProjectFileUploadPayload } from "@supernova-studio/client";
import { DocsImageRef, ResourceAsset, ResourceFont } from "../../exports";
import { DataCore } from "../data/SDKDataCore";
import { RemoteVersionIdentifier } from "./SDKRemoteIdentifiers";
export declare class AreaResources {
    /** Internal: Engine */
    private dataCore;
    constructor(dataCore: DataCore);
    /** Fetches all remote asset resources in the version
     * @param from - Remote version to fetch from
     * @returns All image resources in the specified version
     */
    getAssetResources(from: RemoteVersionIdentifier): Promise<Array<ResourceAsset>>;
    /** Fetches all remote font resources in the version
     * @param from - Remote version to fetch from
     * @returns All font resources in the specified version
     */
    getFontResources(from: RemoteVersionIdentifier): Promise<Array<ResourceFont>>;
    /** Fetches all Figma frames that were rendered font resources in the version
     * @param from - Remote version to fetch from
     * @returns All font resources in the specified version
     */
    getFigmaFrames(from: RemoteVersionIdentifier): Promise<Array<DTOFigmaNode>>;
    /** Fetches all Figma frames that were rendered font resources in the version (V2 of the API)
     * @param from - Remote version to fetch from
     * @returns All font resources in the specified version
     */
    getFigmaFramesV2(from: RemoteVersionIdentifier): Promise<Array<DTOFigmaNodeV2>>;
    /**
     * @param from - Remote version to fetch from
     * @param frameReferenceId  - Unique stable identifier of the Figma frame (Supernova id, not Figma id)
     * @returns URL of the hosted image of the Figma frame that is stable across updates
     */
    getFigmaFrameHostedUrl(from: RemoteVersionIdentifier, frameReferenceId: string): string;
    /** Retrieves stable URL
     * @param from - Remote version to fetch from
     * @param frameReferenceId  - Unique stable identifier of the Figma frame (Supernova id, not Figma id)
     * @returns URL of the hosted image resource, either uploaded file or Figma frame
     */
    getImageRefHostedUrl(from: RemoteVersionIdentifier, imageRef: DocsImageRef | undefined): string | undefined;
    /** Fetches all files in the version or a subset of them based on the persistentIds
     * @param from - Remote version to fetch from
     * @param persistentIds - Optional array of persistentIds to filter the files by
     * @returns All files in the specified version or a subset of them based on the persistentIds
     */
    getFiles(from: RemoteVersionIdentifier): Promise<import("../../exports").RemoteFile[]>;
    getProjectFiles(workspaceId: string, projectId: string): Promise<import("../../exports").RemoteFile[]>;
    /** Uploads new asset resource */
    uploadAssetResource(from: RemoteVersionIdentifier, asset: File): Promise<ResourceAsset>;
    /** Uploads new font resource */
    uploadFontResource(from: RemoteVersionIdentifier, font: File): Promise<ResourceFont | null>;
    /** Uploads new font resources */
    uploadFontResources(from: RemoteVersionIdentifier, fonts: FileList): Promise<ResourceFont[]>;
    initializeFileUpload(from: RemoteVersionIdentifier, fileUploadItems: DTOFileUploadPayload["files"]): Promise<{
        files?: {
            name?: string;
            pendingUpload?: boolean;
            url?: string;
            size?: number;
            fileId?: string;
            referencePersistentId?: string;
            checksum?: string;
        }[];
        uploadUrls?: {
            fileId?: string;
            uploadUrl?: string;
        }[];
    }>;
    initializeProjectFileUpload(workspaceId: string, projectId: string, fileUploadItems: DTOForgeProjectFileUploadPayload["files"]): Promise<{
        files?: {
            id?: string;
            name?: string;
            pendingUpload?: boolean;
            url?: string;
            size?: number;
            checksum?: string;
        }[];
        uploadUrls?: {
            fileId?: string;
            uploadUrl?: string;
        }[];
    }>;
    initializeBulkFileUpload(input: DTOFileUploadBulkPayload): Promise<{
        files?: {
            id?: string;
            name?: string;
            source?: {
                type?: "UserUpload";
                userId?: string;
            } | {
                type?: "Figma";
                renderMode?: "Image" | "HTML" | "JSON";
            };
            deduplicationKey?: string;
            pendingUpload?: boolean;
            storagePath?: string;
            url?: string;
            size?: number;
        }[];
        uploadUrls?: {
            fileId?: string;
            uploadUrl?: string;
        }[];
    }>;
    finalizeFileUpload(from: RemoteVersionIdentifier, fileIds: Array<string>): Promise<any>;
    finalizeProjectFileUpload(workspaceId: string, projectId: string, fileIds: Array<string>): Promise<any>;
    finalizeBulkFileUpload(input: DTOFileFinalizeBulkPayload): Promise<{
        files?: {
            id?: string;
            name?: string;
            source?: {
                type?: "UserUpload";
                userId?: string;
            } | {
                type?: "Figma";
                renderMode?: "Image" | "HTML" | "JSON";
            };
            deduplicationKey?: string;
            pendingUpload?: boolean;
            storagePath?: string;
            url?: string;
            size?: number;
        }[];
    }>;
    validateFigmaNodeAccess(input: DTOForgeFigmaNodeCreateRequest): Promise<boolean>;
    exportFigmaNode(input: DTOForgeFigmaNodeCreateRequest): Promise<{
        figmaNode?: {
            id?: string;
            code?: {
                id?: string;
                name?: string;
                source?: {
                    type?: "UserUpload";
                    userId?: string;
                } | {
                    type?: "Figma";
                    renderMode?: "Image" | "HTML" | "JSON";
                };
                url?: string;
            };
            state?: "Success" | "Failed" | "Optimizing";
            origin?: {
                nodeId?: string;
                fileId?: string;
                fileName?: string;
                fileLastEditedAt?: string;
                nodeName?: string;
            };
            thumbnail?: {
                id?: string;
                name?: string;
                source?: {
                    type?: "UserUpload";
                    userId?: string;
                } | {
                    type?: "Figma";
                    renderMode?: "Image" | "HTML" | "JSON";
                };
                url?: string;
            };
            json?: {
                id?: string;
                name?: string;
                source?: {
                    type?: "UserUpload";
                    userId?: string;
                } | {
                    type?: "Figma";
                    renderMode?: "Image" | "HTML" | "JSON";
                };
                url?: string;
            };
            html?: {
                id?: string;
                name?: string;
                source?: {
                    type?: "UserUpload";
                    userId?: string;
                } | {
                    type?: "Figma";
                    renderMode?: "Image" | "HTML" | "JSON";
                };
                url?: string;
            };
        };
    }>;
    /** Deletes single resource of any type */
    deleteResource(from: RemoteVersionIdentifier, resourceId: string): Promise<void>;
    /** Deletes multiple resource of any type */
    deleteResources(from: RemoteVersionIdentifier, resourceIds: string[]): Promise<void>;
}
