[**@s4ai/core Documentation v0.3.23**](../../../README.md)

***

[@s4ai/core Documentation](../../../modules.md) / [infrastructure/distributed-federation](../README.md) / FederatedBrain

# Class: FederatedBrain

Defined in: infrastructure/distributed-federation.js:7

## Extends

- [`Revenue`](../../../@s4ai/core/business/variables/Revenue.md)

## Constructors

### Constructor

> **new FederatedBrain**(`brainId`, `config?`): `FederatedBrain`

Defined in: infrastructure/distributed-federation.js:8

#### Parameters

##### brainId

`any`

##### config?

#### Returns

`FederatedBrain`

#### Overrides

`EventEmitter.constructor`

## Properties

### consensusThreshold

> **consensusThreshold**: `any`

Defined in: infrastructure/distributed-federation.js:16

***

### federationStatus

> **federationStatus**: `string`

Defined in: infrastructure/distributed-federation.js:13

***

### id

> **id**: `any`

Defined in: infrastructure/distributed-federation.js:10

***

### lastHeartbeat

> **lastHeartbeat**: `number`

Defined in: infrastructure/distributed-federation.js:17

***

### localKnowledge

> **localKnowledge**: `any`

Defined in: infrastructure/distributed-federation.js:15

***

### messageQueue

> **messageQueue**: `any`[]

Defined in: infrastructure/distributed-federation.js:18

***

### nodeType

> **nodeType**: `any`

Defined in: infrastructure/distributed-federation.js:11

***

### peers

> **peers**: `Map`\<`any`, `any`\>

Defined in: infrastructure/distributed-federation.js:12

***

### protocol

> **protocol**: `string`

Defined in: infrastructure/distributed-federation.js:19

***

### sharedKnowledge

> **sharedKnowledge**: `object`

Defined in: infrastructure/distributed-federation.js:14

## Methods

### aggregateVotes()

> **aggregateVotes**(`votes`): `object`

Defined in: infrastructure/distributed-federation.js:151

#### Parameters

##### votes

`any`

#### Returns

`object`

##### approvalRate

> **approvalRate**: `string`

##### approvals

> **approvals**: `any`

##### approved

> **approved**: `boolean`

##### avgConfidence

> **avgConfidence**: `string`

##### totalVotes

> **totalVotes**: `any` = `votes.length`

***

### broadcastMessage()

> **broadcastMessage**(`message`): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:91

#### Parameters

##### message

`any`

#### Returns

`Promise`\<`void`\>

***

### electNewLeader()

> **electNewLeader**(): `Promise`\<`any`\>

Defined in: infrastructure/distributed-federation.js:211

#### Returns

`Promise`\<`any`\>

***

### getFederationMetrics()

> **getFederationMetrics**(): `object`

Defined in: infrastructure/distributed-federation.js:234

#### Returns

`object`

##### avgTrustScore

> **avgTrustScore**: `number`

##### federationId

> **federationId**: `string`

##### federationStatus

> **federationStatus**: `string`

##### healthyPeers

> **healthyPeers**: `number`

##### localKnowledgeSize

> **localKnowledgeSize**: `number`

##### messageQueue

> **messageQueue**: `number`

##### myNodeType

> **myNodeType**: `any`

##### sharedKnowledgeSize

> **sharedKnowledgeSize**: `number`

##### totalPeers

> **totalPeers**: `number`

***

### joinFederation()

> **joinFederation**(`peers`): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:22

#### Parameters

##### peers

`any`

#### Returns

`Promise`\<`void`\>

***

### mergeFederations()

> **mergeFederations**(`otherFederation`): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:252

#### Parameters

##### otherFederation

`any`

#### Returns

`Promise`\<`void`\>

***

### receiveKnowledge()

> **receiveKnowledge**(`message`): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:66

#### Parameters

##### message

`any`

#### Returns

`Promise`\<`void`\>

***

### requestDistributedDecision()

> **requestDistributedDecision**(`proposal`): `Promise`\<\{ `approvalRate`: `string`; `approvals`: `any`; `approved`: `boolean`; `avgConfidence`: `string`; `totalVotes`: `any`; \}\>

Defined in: infrastructure/distributed-federation.js:117

#### Parameters

##### proposal

`any`

#### Returns

`Promise`\<\{ `approvalRate`: `string`; `approvals`: `any`; `approved`: `boolean`; `avgConfidence`: `string`; `totalVotes`: `any`; \}\>

***

### sendMessage()

> **sendMessage**(`peerId`, `message`): `Promise`\<`any`\>

Defined in: infrastructure/distributed-federation.js:107

#### Parameters

##### peerId

`any`

##### message

`any`

#### Returns

`Promise`\<`any`\>

***

### shareKnowledge()

> **shareKnowledge**(`key`, `value`): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:42

#### Parameters

##### key

`any`

##### value

`any`

#### Returns

`Promise`\<`void`\>

***

### simulateVote()

> **simulateVote**(`proposal`): `Promise`\<`any`\>

Defined in: infrastructure/distributed-federation.js:140

#### Parameters

##### proposal

`any`

#### Returns

`Promise`\<`any`\>

***

### startHeartbeat()

> **startHeartbeat**(`interval?`): `void`

Defined in: infrastructure/distributed-federation.js:186

#### Parameters

##### interval?

`number` = `30000`

#### Returns

`void`

***

### syncKnowledge()

> **syncKnowledge**(): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:165

#### Returns

`Promise`\<`void`\>

***

### terminate()

> **terminate**(): `Promise`\<`void`\>

Defined in: infrastructure/distributed-federation.js:275

#### Returns

`Promise`\<`void`\>
