// Create a zustand store to manage notifications

import { registeredNodeTypes, nodeCategories } from '@/components/core/designer/nodes/index';

import { create } from 'zustand';

interface Node {
    type: string;
    configuration: any;
    category: string;
    rules: any;
}

interface NodesStore {
    nodes: any
    nodeCategories: any
    registerNode: (node: Node) => void;
    getNodeConfiguration: (type: string) => any;
}

export const useNodesStore = create<NodesStore>((set) => ({
    nodes: registeredNodeTypes ? [...registeredNodeTypes] : [],
    nodeCategories: nodeCategories ? [...nodeCategories] : [],
    registerNode: (node: Node) => set((state) => ({ nodes: [...state.nodes, node] })),
    getNodeConfiguration: (type: string) => {
        return registeredNodeTypes?.find((node) => node.type === type)?.configuration;
    },
}));