import type { Infer, Struct } from "@metamask/superstruct";
import { NodeType } from "../nodes.mjs";
/**
 * @internal
 */
export declare const ParentStruct: Struct<{
    type: string;
    children: ({
        value: string;
        type: NodeType.Copyable;
        sensitive?: boolean | undefined;
    } | {
        type: NodeType.Divider;
    } | {
        value: string;
        type: NodeType.Heading;
    } | {
        value: string;
        type: NodeType.Image;
    } | Panel | {
        type: NodeType.Spinner;
    } | {
        value: string;
        type: NodeType.Text;
        markdown?: boolean | undefined;
    } | {
        value: `0x${string}`;
        type: NodeType.Address;
    } | {
        value: {
            value: string;
            type: NodeType.Image;
        } | {
            value: string;
            type: NodeType.Text;
            markdown?: boolean | undefined;
        } | {
            value: `0x${string}`;
            type: NodeType.Address;
        };
        type: NodeType.Row;
        label: string;
        variant?: "default" | "critical" | "warning" | undefined;
    } | {
        type: NodeType.Input;
        name: string;
        value?: string | undefined;
        label?: string | undefined;
        inputType?: "number" | "text" | "password" | undefined;
        placeholder?: string | undefined;
        error?: string | undefined;
    } | {
        value: string;
        type: NodeType.Button;
        variant?: "primary" | "secondary" | undefined;
        name?: string | undefined;
        buttonType?: "button" | "submit" | undefined;
    } | {
        type: NodeType.Form;
        name: string;
        children: ({
            type: NodeType.Input;
            name: string;
            value?: string | undefined;
            label?: string | undefined;
            inputType?: "number" | "text" | "password" | undefined;
            placeholder?: string | undefined;
            error?: string | undefined;
        } | {
            value: string;
            type: NodeType.Button;
            variant?: "primary" | "secondary" | undefined;
            name?: string | undefined;
            buttonType?: "button" | "submit" | undefined;
        })[];
    })[];
}, {
    children: Struct<({
        value: string;
        type: NodeType.Copyable;
        sensitive?: boolean | undefined;
    } | {
        type: NodeType.Divider;
    } | {
        value: string;
        type: NodeType.Heading;
    } | {
        value: string;
        type: NodeType.Image;
    } | Panel | {
        type: NodeType.Spinner;
    } | {
        value: string;
        type: NodeType.Text;
        markdown?: boolean | undefined;
    } | {
        value: `0x${string}`;
        type: NodeType.Address;
    } | {
        value: {
            value: string;
            type: NodeType.Image;
        } | {
            value: string;
            type: NodeType.Text;
            markdown?: boolean | undefined;
        } | {
            value: `0x${string}`;
            type: NodeType.Address;
        };
        type: NodeType.Row;
        label: string;
        variant?: "default" | "critical" | "warning" | undefined;
    } | {
        type: NodeType.Input;
        name: string;
        value?: string | undefined;
        label?: string | undefined;
        inputType?: "number" | "text" | "password" | undefined;
        placeholder?: string | undefined;
        error?: string | undefined;
    } | {
        value: string;
        type: NodeType.Button;
        variant?: "primary" | "secondary" | undefined;
        name?: string | undefined;
        buttonType?: "button" | "submit" | undefined;
    } | {
        type: NodeType.Form;
        name: string;
        children: ({
            type: NodeType.Input;
            name: string;
            value?: string | undefined;
            label?: string | undefined;
            inputType?: "number" | "text" | "password" | undefined;
            placeholder?: string | undefined;
            error?: string | undefined;
        } | {
            value: string;
            type: NodeType.Button;
            variant?: "primary" | "secondary" | undefined;
            name?: string | undefined;
            buttonType?: "button" | "submit" | undefined;
        })[];
    })[], Struct<{
        value: string;
        type: NodeType.Copyable;
        sensitive?: boolean | undefined;
    } | {
        type: NodeType.Divider;
    } | {
        value: string;
        type: NodeType.Heading;
    } | {
        value: string;
        type: NodeType.Image;
    } | Panel | {
        type: NodeType.Spinner;
    } | {
        value: string;
        type: NodeType.Text;
        markdown?: boolean | undefined;
    } | {
        value: `0x${string}`;
        type: NodeType.Address;
    } | {
        value: {
            value: string;
            type: NodeType.Image;
        } | {
            value: string;
            type: NodeType.Text;
            markdown?: boolean | undefined;
        } | {
            value: `0x${string}`;
            type: NodeType.Address;
        };
        type: NodeType.Row;
        label: string;
        variant?: "default" | "critical" | "warning" | undefined;
    } | {
        type: NodeType.Input;
        name: string;
        value?: string | undefined;
        label?: string | undefined;
        inputType?: "number" | "text" | "password" | undefined;
        placeholder?: string | undefined;
        error?: string | undefined;
    } | {
        value: string;
        type: NodeType.Button;
        variant?: "primary" | "secondary" | undefined;
        name?: string | undefined;
        buttonType?: "button" | "submit" | undefined;
    } | {
        type: NodeType.Form;
        name: string;
        children: ({
            type: NodeType.Input;
            name: string;
            value?: string | undefined;
            label?: string | undefined;
            inputType?: "number" | "text" | "password" | undefined;
            placeholder?: string | undefined;
            error?: string | undefined;
        } | {
            value: string;
            type: NodeType.Button;
            variant?: "primary" | "secondary" | undefined;
            name?: string | undefined;
            buttonType?: "button" | "submit" | undefined;
        })[];
    }, null>>;
    type: Struct<string, null>;
}>;
/**
 * @internal
 */
export declare const PanelStruct: Struct<Panel>;
export type Panel = {
    type: NodeType.Panel;
    children: Component[];
};
export declare const ComponentStruct: Struct<{
    value: string;
    type: NodeType.Copyable;
    sensitive?: boolean | undefined;
} | {
    type: NodeType.Divider;
} | {
    value: string;
    type: NodeType.Heading;
} | {
    value: string;
    type: NodeType.Image;
} | Panel | {
    type: NodeType.Spinner;
} | {
    value: string;
    type: NodeType.Text;
    markdown?: boolean | undefined;
} | {
    value: `0x${string}`;
    type: NodeType.Address;
} | {
    value: {
        value: string;
        type: NodeType.Image;
    } | {
        value: string;
        type: NodeType.Text;
        markdown?: boolean | undefined;
    } | {
        value: `0x${string}`;
        type: NodeType.Address;
    };
    type: NodeType.Row;
    label: string;
    variant?: "default" | "critical" | "warning" | undefined;
} | {
    type: NodeType.Input;
    name: string;
    value?: string | undefined;
    label?: string | undefined;
    inputType?: "number" | "text" | "password" | undefined;
    placeholder?: string | undefined;
    error?: string | undefined;
} | {
    value: string;
    type: NodeType.Button;
    variant?: "primary" | "secondary" | undefined;
    name?: string | undefined;
    buttonType?: "button" | "submit" | undefined;
} | {
    type: NodeType.Form;
    name: string;
    children: ({
        type: NodeType.Input;
        name: string;
        value?: string | undefined;
        label?: string | undefined;
        inputType?: "number" | "text" | "password" | undefined;
        placeholder?: string | undefined;
        error?: string | undefined;
    } | {
        value: string;
        type: NodeType.Button;
        variant?: "primary" | "secondary" | undefined;
        name?: string | undefined;
        buttonType?: "button" | "submit" | undefined;
    })[];
}, null>;
/**
 * All supported component types.
 */
export type Component = Infer<typeof ComponentStruct>;
//# sourceMappingURL=panel.d.mts.map