[**@sebasoft/neuron-js**](../../README.md)

***

Defined in: [abstracts/AbstractElement.ts:3](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L3)

Represents the base interface for all elements within the rules engine.
Elements are the building blocks of scripts, pulses, actions, conditions, and parameters.

## Extended by

- [`AbstractAction`](AbstractAction.md)
- [`AbstractCondition`](AbstractCondition.md)
- [`AbstractParameter`](AbstractParameter.md)
- [`AbstractRule`](AbstractRule.md)

## Type Parameters

### TOptions

`TOptions` = `any`

The type of configuration options for this element.

## Implements

- [`ElementInterface`](../../interfaces/Element/interfaces/ElementInterface.md)\<`TOptions`\>

## Constructors

### Constructor

> **new AbstractElement**\<`TOptions`\>(`id`, `type`, `options`): `AbstractElement`\<`TOptions`\>

Defined in: [abstracts/AbstractElement.ts:6](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L6)

#### Parameters

##### id

`string`

##### type

`string`

##### options

`TOptions`

#### Returns

`AbstractElement`\<`TOptions`\>

## Properties

### id

> `readonly` **id**: `string`

Defined in: [abstracts/AbstractElement.ts:7](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L7)

Unique identifier for the element instance.

#### Implementation of

[`ElementInterface`](../../interfaces/Element/interfaces/ElementInterface.md).[`id`](../../interfaces/Element/interfaces/ElementInterface.md#id)

***

### options

> `readonly` **options**: `TOptions`

Defined in: [abstracts/AbstractElement.ts:9](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L9)

Configuration options specific to this element instance.

#### Implementation of

[`ElementInterface`](../../interfaces/Element/interfaces/ElementInterface.md).[`options`](../../interfaces/Element/interfaces/ElementInterface.md#options)

***

### type

> `readonly` **type**: `string`

Defined in: [abstracts/AbstractElement.ts:8](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L8)

The registered type name of the element.
This type is used by the Registry (Neuron) to look up the correct implementation.

#### Implementation of

[`ElementInterface`](../../interfaces/Element/interfaces/ElementInterface.md).[`type`](../../interfaces/Element/interfaces/ElementInterface.md#type)

## Methods

### toJSON()

> `abstract` **toJSON**(): `object`

Defined in: [abstracts/AbstractElement.ts:12](https://github.com/SebaSOFT/neuron-js/blob/aff482a5bc89c6f9dff62f832acdd1bd10d3a175/src/abstracts/AbstractElement.ts#L12)

#### Returns

`object`
