import { DTOFigmaComponent, DTOFigmaComponentBooleanProperty, DTOFigmaComponentInstanceSwapProperty, DTOFigmaComponentTextProperty, DTOFigmaComponentVariantProperty } from "@supernova-studio/client";
export declare enum DesignComponentPropertyType {
    Boolean = "Boolean",
    InstanceSwap = "InstanceSwap",
    Text = "Text",
    Variant = "Variant"
}
type DesignComponentPropertyDefinitionRemoteType = NonNullable<DTOFigmaComponent["componentPropertyDefinitions"]>[string];
export declare abstract class DesignComponentPropertyDefinition {
    id: string;
    abstract type: DesignComponentPropertyType;
    abstract defaultValue: string | boolean;
    name: string;
    options: string[] | null;
    constructor(model: DesignComponentPropertyDefinitionRemoteType);
}
export declare class DesignComponentPropertyBoolean extends DesignComponentPropertyDefinition {
    type: DesignComponentPropertyType.Boolean;
    defaultValue: boolean;
    constructor(model: DTOFigmaComponentBooleanProperty);
}
export declare class DesignComponentPropertyText extends DesignComponentPropertyDefinition {
    type: DesignComponentPropertyType.Text;
    defaultValue: string;
    constructor(model: DTOFigmaComponentTextProperty);
}
type InstanceSwapDefaultValuePreview = {
    componentName: string;
    componentSetName: string | null;
    isRemote: boolean;
};
export declare class DesignComponentPropertyInstanceSwap extends DesignComponentPropertyDefinition {
    type: DesignComponentPropertyType.InstanceSwap;
    defaultValue: string;
    defaultValuePreview: InstanceSwapDefaultValuePreview | null;
    constructor(model: DTOFigmaComponentInstanceSwapProperty);
}
export declare class DesignComponentPropertyVariant extends DesignComponentPropertyDefinition {
    type: DesignComponentPropertyType.Variant;
    defaultValue: string;
    options: string[];
    constructor(model: DTOFigmaComponentVariantProperty);
}
export declare function resolveComponentPropertyDefinition(model?: DTOFigmaComponent["componentPropertyDefinitions"]): DesignComponentPropertyDefinition[];
export {};
