import { DTOElementPropertyValuesEditActionInput } from "@supernova-studio/client";
import { BootstrapData } from "../../model/base/SDKBootstrapData";
import { Component } from "../../model/components/SDKComponent";
import { ElementProperty } from "../../model/elements/SDKElementProperty";
import { TokenGroup } from "../../model/groups/SDKTokenGroup";
import { ImportJob } from "../../model/jobs/SDKImportJob";
import { TokenThemeOverrideTranserObject } from "../../model/themes/SDKTokenThemeOverride";
import { AnyToken } from "../../model/tokens/SDKTokenValue";
import { DataCore } from "../data/SDKDataCore";
import { RemoteVersionIdentifier } from "./SDKRemoteIdentifiers";
export type TokenUpdateTransactionData = {
    token: AnyToken;
    tokenParent: TokenGroup;
    tokenMode: "create" | "update";
    propertyValuesToCreateOrUpdate?: Array<{
        property: ElementProperty;
        value: string | boolean | number;
    }>;
    propertyValuesToDelete?: Array<string>;
    themeValuesToCreate?: Array<{
        themeId: string;
        themeOverrideTransferObject: TokenThemeOverrideTranserObject;
    }>;
    themeValuesToUpdate?: Array<{
        themeId: string;
        themeOverrideTransferObject: TokenThemeOverrideTranserObject;
    }>;
    themeValuesToDelete?: Array<string>;
};
export type ComponentUpdateTransactionData = {
    component: Component;
    componentMode: "create" | "update";
    propertyValuesToCreateOrUpdate?: Array<{
        property: ElementProperty;
        value: string | boolean | number;
    }>;
    propertyValuesToDelete?: Array<string>;
};
export declare class AreaBulkOperations {
    /** Internal: Engine */
    private dataCore;
    constructor(dataCore: DataCore);
    /** Import tokens in bulk using new import routine
     *
     * @param designSystemId - Remote design system to write to
     * @param brandId - Remote brand to write to
     * @param sourceName - Name of the source, such as Figma file name
     * @param sourceId - Unique ID of the source, such as Figma file id
     * @param sourceType - Source from which import originates. Currently only "FigmaVariablesPlugin" is supported
     * @param payload - Payload to import. Types to come
     * @param isTokenTypeSplitEnabled - should we split tokens by type into separate collections.
     * @param version - should we use new import routine with extended collections support. Should be set to "2" in production.
     * @returns Nothing
     */
    importTokens(designSystemId: string, brandId: string, sourceId: string, sourceName: string, sourceType: "FigmaVariablesPlugin", payload: any, isTokenTypeSplitEnabled?: boolean, version?: "1" | "2"): Promise<ImportJob>;
    /** Batch updates, creates or deletes token data from Supernova at once. Use this method to perform multiple operations at once instead of chaining single update operations. Batch routine runs everything in a single transaction, so either all operations succeed or all fail.
     *
     * WARNING: This method is not yet complete and only supports limited set of operations. Also, doesn't work as transation just yet.
     * @param to - Remote version to write to
     * @param data - Update information. All keys except token and its parent are optional and any combination of optional properties is allowed.
     * @returns Nothing
     */
    updateTokenData(to: RemoteVersionIdentifier, data: TokenUpdateTransactionData): Promise<void>;
    /** Batch updates element properties into Supernova at once. Use this method to perform bulk change instead of chaining single update operations. Batch routine runs everything in a single transaction, so either all updates succeed or all fail.
     *
     * @param to - Remote version to write to
     * @param data - Update information. All keys except component and its parent are optional and any combination of optional properties is allowed.
     * @returns Nothing
     */
    /** Bulk update properties */
    updateElementProperties(to: RemoteVersionIdentifier, data: DTOElementPropertyValuesEditActionInput["values"]): Promise<any>;
    /** Batch updates, creates or deletes component data from Supernova at once. Use this method to perform multiple operations at once instead of chaining single update operations. Batch routine runs everything in a single transaction, so either all operations succeed or all fail.
     *
     * WARNING: This method is not yet complete and only supports limited set of operations. Also, doesn't work as transation just yet.
     * @param to - Remote version to write to
     * @param data - Update information. All keys except component and its parent are optional and any combination of optional properties is allowed.
     * @returns Nothing
     */
    updateComponentData(to: RemoteVersionIdentifier, data: ComponentUpdateTransactionData): Promise<void>;
    /** Fetches a chain of workspace, design system, version and brand, available to the current user.
     * @param preferredWorkspaceId - Preferred workspace ID to fetch
     * @param preferredDesignSystemId - Preferred design system ID to fetch
     * @param preferredVersionId - Preferred version ID to fetch
     * @param preferredBrandId - Preferred brand ID to fetch
     */
    bootstrapData(preferredWorkspaceId?: string, preferredDesignSystemId?: string, preferredVersionId?: string, preferredBrandId?: string): Promise<BootstrapData>;
}
