@elizaos/core 1.5.3-beta.3 → 1.5.5-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/actions.d.ts +23 -0
  2. package/dist/actions.d.ts.map +1 -0
  3. package/dist/browser/index.browser.js +172 -179
  4. package/dist/browser/index.browser.js.map +6 -197
  5. package/dist/browser/index.d.ts +2 -2
  6. package/dist/database.d.ts +481 -0
  7. package/dist/database.d.ts.map +1 -0
  8. package/dist/entities.d.ts +49 -0
  9. package/dist/entities.d.ts.map +1 -0
  10. package/{src/index.browser.ts → dist/index.browser.d.ts} +9 -21
  11. package/dist/index.browser.d.ts.map +1 -0
  12. package/dist/index.d.ts +27 -3
  13. package/dist/index.d.ts.map +1 -0
  14. package/{src/index.node.ts → dist/index.node.d.ts} +3 -16
  15. package/dist/index.node.d.ts.map +1 -0
  16. package/dist/logger.d.ts +47 -0
  17. package/dist/logger.d.ts.map +1 -0
  18. package/dist/node/index.d.ts +2 -2
  19. package/dist/node/index.node.js +15514 -439
  20. package/dist/node/index.node.js.map +139 -8
  21. package/dist/prompts.d.ts +8 -0
  22. package/dist/prompts.d.ts.map +1 -0
  23. package/dist/roles.d.ts +30 -0
  24. package/dist/roles.d.ts.map +1 -0
  25. package/dist/runtime.d.ts +328 -0
  26. package/dist/runtime.d.ts.map +1 -0
  27. package/dist/schemas/character.d.ts +228 -0
  28. package/dist/schemas/character.d.ts.map +1 -0
  29. package/dist/search.d.ts +317 -0
  30. package/dist/search.d.ts.map +1 -0
  31. package/dist/sentry/instrument.browser.d.ts +12 -0
  32. package/dist/sentry/instrument.browser.d.ts.map +1 -0
  33. package/dist/sentry/instrument.d.ts +12 -0
  34. package/dist/sentry/instrument.d.ts.map +1 -0
  35. package/dist/sentry/instrument.node.d.ts +11 -0
  36. package/dist/sentry/instrument.node.d.ts.map +1 -0
  37. package/dist/services.d.ts +49 -0
  38. package/dist/services.d.ts.map +1 -0
  39. package/dist/settings.d.ts +87 -0
  40. package/dist/settings.d.ts.map +1 -0
  41. package/{src/types/agent.ts → dist/types/agent.d.ts} +60 -74
  42. package/dist/types/agent.d.ts.map +1 -0
  43. package/dist/types/browser.d.ts +127 -0
  44. package/dist/types/browser.d.ts.map +1 -0
  45. package/dist/types/components.d.ts +135 -0
  46. package/dist/types/components.d.ts.map +1 -0
  47. package/dist/types/database.d.ts +278 -0
  48. package/dist/types/database.d.ts.map +1 -0
  49. package/dist/types/email.d.ts +143 -0
  50. package/dist/types/email.d.ts.map +1 -0
  51. package/dist/types/environment.d.ts +109 -0
  52. package/dist/types/environment.d.ts.map +1 -0
  53. package/dist/types/events.d.ts +207 -0
  54. package/dist/types/events.d.ts.map +1 -0
  55. package/{src/types/index.ts → dist/types/index.d.ts} +1 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/{src/types/knowledge.ts → dist/types/knowledge.d.ts} +18 -23
  58. package/dist/types/knowledge.d.ts.map +1 -0
  59. package/dist/types/lp.d.ts +115 -0
  60. package/dist/types/lp.d.ts.map +1 -0
  61. package/{src/types/memory.ts → dist/types/memory.d.ts} +69 -132
  62. package/dist/types/memory.d.ts.map +1 -0
  63. package/dist/types/message.d.ts +202 -0
  64. package/dist/types/message.d.ts.map +1 -0
  65. package/dist/types/messaging.d.ts +45 -0
  66. package/dist/types/messaging.d.ts.map +1 -0
  67. package/dist/types/model.d.ts +319 -0
  68. package/dist/types/model.d.ts.map +1 -0
  69. package/dist/types/pdf.d.ts +68 -0
  70. package/dist/types/pdf.d.ts.map +1 -0
  71. package/dist/types/plugin.d.ts +64 -0
  72. package/dist/types/plugin.d.ts.map +1 -0
  73. package/dist/types/post.d.ts +242 -0
  74. package/dist/types/post.d.ts.map +1 -0
  75. package/dist/types/primitives.d.ts +72 -0
  76. package/dist/types/primitives.d.ts.map +1 -0
  77. package/dist/types/runtime.d.ts +106 -0
  78. package/dist/types/runtime.d.ts.map +1 -0
  79. package/{src/types/service.ts → dist/types/service.d.ts} +69 -120
  80. package/dist/types/service.d.ts.map +1 -0
  81. package/dist/types/settings.d.ts +30 -0
  82. package/dist/types/settings.d.ts.map +1 -0
  83. package/{src/types/state.ts → dist/types/state.d.ts} +18 -19
  84. package/dist/types/state.d.ts.map +1 -0
  85. package/dist/types/task.d.ts +68 -0
  86. package/dist/types/task.d.ts.map +1 -0
  87. package/dist/types/tee.d.ts +97 -0
  88. package/dist/types/tee.d.ts.map +1 -0
  89. package/dist/types/testing.d.ts +29 -0
  90. package/dist/types/testing.d.ts.map +1 -0
  91. package/dist/types/token.d.ts +73 -0
  92. package/dist/types/token.d.ts.map +1 -0
  93. package/dist/types/transcription.d.ts +108 -0
  94. package/dist/types/transcription.d.ts.map +1 -0
  95. package/dist/types/video.d.ts +93 -0
  96. package/dist/types/video.d.ts.map +1 -0
  97. package/dist/types/wallet.d.ts +49 -0
  98. package/dist/types/wallet.d.ts.map +1 -0
  99. package/dist/types/web-search.d.ts +112 -0
  100. package/dist/types/web-search.d.ts.map +1 -0
  101. package/dist/utils/buffer.d.ts +105 -0
  102. package/dist/utils/buffer.d.ts.map +1 -0
  103. package/dist/utils/environment.d.ts +106 -0
  104. package/dist/utils/environment.d.ts.map +1 -0
  105. package/dist/utils/server-health.d.ts +23 -0
  106. package/dist/utils/server-health.d.ts.map +1 -0
  107. package/dist/utils.d.ts +177 -0
  108. package/dist/utils.d.ts.map +1 -0
  109. package/package.json +5 -5
  110. package/src/__tests__/action-chaining-simple.test.ts +0 -203
  111. package/src/__tests__/actions.test.ts +0 -218
  112. package/src/__tests__/buffer.test.ts +0 -337
  113. package/src/__tests__/character-validation.test.ts +0 -309
  114. package/src/__tests__/database.test.ts +0 -750
  115. package/src/__tests__/entities.test.ts +0 -727
  116. package/src/__tests__/env.test.ts +0 -23
  117. package/src/__tests__/environment.test.ts +0 -285
  118. package/src/__tests__/logger-browser-node.test.ts +0 -716
  119. package/src/__tests__/logger.test.ts +0 -403
  120. package/src/__tests__/messages.test.ts +0 -196
  121. package/src/__tests__/mockCharacter.ts +0 -544
  122. package/src/__tests__/parsing.test.ts +0 -58
  123. package/src/__tests__/prompts.test.ts +0 -159
  124. package/src/__tests__/roles.test.ts +0 -331
  125. package/src/__tests__/runtime-embedding.test.ts +0 -343
  126. package/src/__tests__/runtime.test.ts +0 -978
  127. package/src/__tests__/search.test.ts +0 -15
  128. package/src/__tests__/services-by-type.test.ts +0 -204
  129. package/src/__tests__/services.test.ts +0 -136
  130. package/src/__tests__/settings.test.ts +0 -810
  131. package/src/__tests__/utils.test.ts +0 -1105
  132. package/src/__tests__/uuid.test.ts +0 -94
  133. package/src/actions.ts +0 -122
  134. package/src/database.ts +0 -579
  135. package/src/entities.ts +0 -406
  136. package/src/index.ts +0 -50
  137. package/src/logger.ts +0 -527
  138. package/src/prompts.ts +0 -243
  139. package/src/roles.ts +0 -85
  140. package/src/runtime.ts +0 -2514
  141. package/src/schemas/character.ts +0 -149
  142. package/src/search.ts +0 -1543
  143. package/src/sentry/instrument.browser.ts +0 -65
  144. package/src/sentry/instrument.node.ts +0 -57
  145. package/src/sentry/instrument.ts +0 -82
  146. package/src/services.ts +0 -105
  147. package/src/settings.ts +0 -409
  148. package/src/test_resources/constants.ts +0 -12
  149. package/src/test_resources/testSetup.ts +0 -21
  150. package/src/test_resources/types.ts +0 -22
  151. package/src/types/browser.ts +0 -145
  152. package/src/types/components.ts +0 -184
  153. package/src/types/database.ts +0 -348
  154. package/src/types/email.ts +0 -162
  155. package/src/types/environment.ts +0 -129
  156. package/src/types/events.ts +0 -249
  157. package/src/types/lp.ts +0 -124
  158. package/src/types/message.ts +0 -233
  159. package/src/types/messaging.ts +0 -57
  160. package/src/types/model.ts +0 -359
  161. package/src/types/pdf.ts +0 -77
  162. package/src/types/plugin.ts +0 -78
  163. package/src/types/post.ts +0 -271
  164. package/src/types/primitives.ts +0 -97
  165. package/src/types/runtime.ts +0 -190
  166. package/src/types/settings.ts +0 -30
  167. package/src/types/task.ts +0 -72
  168. package/src/types/tee.ts +0 -107
  169. package/src/types/testing.ts +0 -30
  170. package/src/types/token.ts +0 -96
  171. package/src/types/transcription.ts +0 -133
  172. package/src/types/video.ts +0 -108
  173. package/src/types/wallet.ts +0 -56
  174. package/src/types/web-search.ts +0 -146
  175. package/src/utils/__tests__/buffer.test.ts +0 -80
  176. package/src/utils/__tests__/environment.test.ts +0 -58
  177. package/src/utils/__tests__/stringToUuid.test.ts +0 -88
  178. package/src/utils/buffer.ts +0 -312
  179. package/src/utils/environment.ts +0 -316
  180. package/src/utils/server-health.ts +0 -117
  181. package/src/utils.ts +0 -1076
@@ -1,129 +0,0 @@
1
- import type { Metadata, UUID } from './primitives';
2
-
3
- export interface Component {
4
- id: UUID;
5
- entityId: UUID;
6
- agentId: UUID;
7
- roomId: UUID;
8
- worldId: UUID;
9
- sourceEntityId: UUID;
10
- type: string;
11
- createdAt: number;
12
- data: Metadata;
13
- }
14
-
15
- /**
16
- * Represents a user account
17
- */
18
- export interface Entity {
19
- /** Unique identifier, optional on creation */
20
- id?: UUID;
21
-
22
- /** Names of the entity */
23
- names: string[];
24
-
25
- /** Additional metadata */
26
- metadata: Metadata;
27
-
28
- /** Agent ID this account is related to, for agents should be themselves */
29
- agentId: UUID;
30
-
31
- /** Optional array of components */
32
- components?: Component[];
33
- }
34
-
35
- /**
36
- * Defines roles within a system, typically for access control or permissions, often within a `World`.
37
- * - `OWNER`: Represents the highest level of control, typically the creator or primary administrator.
38
- * - `ADMIN`: Represents administrative privileges, usually a subset of owner capabilities.
39
- * - `NONE`: Indicates no specific role or default, minimal permissions.
40
- * These roles are often used in `World.metadata.roles` to assign roles to entities.
41
- */
42
- export enum Role {
43
- OWNER = 'OWNER',
44
- ADMIN = 'ADMIN',
45
- NONE = 'NONE',
46
- }
47
-
48
- export type World = {
49
- id: UUID;
50
- name?: string;
51
- agentId: UUID;
52
- serverId: string;
53
- metadata?: {
54
- ownership?: {
55
- ownerId: string;
56
- };
57
- roles?: {
58
- [entityId: UUID]: Role;
59
- };
60
- [key: string]: unknown;
61
- };
62
- };
63
-
64
- export enum ChannelType {
65
- SELF = 'SELF', // Messages to self
66
- DM = 'DM', // Direct messages between two participants
67
- GROUP = 'GROUP', // Group messages with multiple participants
68
- VOICE_DM = 'VOICE_DM', // Voice direct messages
69
- VOICE_GROUP = 'VOICE_GROUP', // Voice channels with multiple participants
70
- FEED = 'FEED', // Social media feed
71
- THREAD = 'THREAD', // Threaded conversation
72
- WORLD = 'WORLD', // World channel
73
- FORUM = 'FORUM', // Forum discussion
74
- // Legacy types - kept for backward compatibility but should be replaced
75
- API = 'API', // @deprecated - Use DM or GROUP instead
76
- }
77
-
78
- export type Room = {
79
- id: UUID;
80
- name?: string;
81
- agentId?: UUID;
82
- source: string;
83
- type: ChannelType;
84
- channelId?: string;
85
- serverId?: string;
86
- worldId?: UUID;
87
- metadata?: Metadata;
88
- };
89
-
90
- export type RoomMetadata = {
91
- [key: string]: unknown;
92
- };
93
-
94
- /**
95
- * Room participant with account details
96
- */
97
- export interface Participant {
98
- /** Unique identifier */
99
- id: UUID;
100
-
101
- /** Associated account */
102
- entity: Entity;
103
- }
104
-
105
- /**
106
- * Represents a relationship between users
107
- */
108
- export interface Relationship {
109
- /** Unique identifier */
110
- id: UUID;
111
-
112
- /** First user ID */
113
- sourceEntityId: UUID;
114
-
115
- /** Second user ID */
116
- targetEntityId: UUID;
117
-
118
- /** Agent ID */
119
- agentId: UUID;
120
-
121
- /** Tags for filtering/categorizing relationships */
122
- tags: string[];
123
-
124
- /** Additional metadata about the relationship */
125
- metadata: Metadata;
126
-
127
- /** Optional creation timestamp */
128
- createdAt?: string;
129
- }
@@ -1,249 +0,0 @@
1
- import type { HandlerCallback } from './components';
2
- import type { Entity, Room, World } from './environment';
3
- import type { Memory } from './memory';
4
- import type { ModelTypeName } from './model';
5
- import type { Metadata, UUID } from './primitives';
6
- import type { IAgentRuntime } from './runtime';
7
-
8
- /**
9
- * Standard event types across all platforms
10
- */
11
- export enum EventType {
12
- // World events
13
- WORLD_JOINED = 'WORLD_JOINED',
14
- WORLD_CONNECTED = 'WORLD_CONNECTED',
15
- WORLD_LEFT = 'WORLD_LEFT',
16
-
17
- // Entity events
18
- ENTITY_JOINED = 'ENTITY_JOINED',
19
- ENTITY_LEFT = 'ENTITY_LEFT',
20
- ENTITY_UPDATED = 'ENTITY_UPDATED',
21
-
22
- // Room events
23
- ROOM_JOINED = 'ROOM_JOINED',
24
- ROOM_LEFT = 'ROOM_LEFT',
25
-
26
- // Message events
27
- MESSAGE_RECEIVED = 'MESSAGE_RECEIVED',
28
- MESSAGE_SENT = 'MESSAGE_SENT',
29
- MESSAGE_DELETED = 'MESSAGE_DELETED',
30
-
31
- // Channel events
32
- CHANNEL_CLEARED = 'CHANNEL_CLEARED',
33
-
34
- // Voice events
35
- VOICE_MESSAGE_RECEIVED = 'VOICE_MESSAGE_RECEIVED',
36
- VOICE_MESSAGE_SENT = 'VOICE_MESSAGE_SENT',
37
-
38
- // Interaction events
39
- REACTION_RECEIVED = 'REACTION_RECEIVED',
40
- POST_GENERATED = 'POST_GENERATED',
41
- INTERACTION_RECEIVED = 'INTERACTION_RECEIVED',
42
-
43
- // Run events
44
- RUN_STARTED = 'RUN_STARTED',
45
- RUN_ENDED = 'RUN_ENDED',
46
- RUN_TIMEOUT = 'RUN_TIMEOUT',
47
-
48
- // Action events
49
- ACTION_STARTED = 'ACTION_STARTED',
50
- ACTION_COMPLETED = 'ACTION_COMPLETED',
51
-
52
- // Evaluator events
53
- EVALUATOR_STARTED = 'EVALUATOR_STARTED',
54
- EVALUATOR_COMPLETED = 'EVALUATOR_COMPLETED',
55
-
56
- // Model events
57
- MODEL_USED = 'MODEL_USED',
58
-
59
- // Embedding events
60
- EMBEDDING_GENERATION_REQUESTED = 'EMBEDDING_GENERATION_REQUESTED',
61
- EMBEDDING_GENERATION_COMPLETED = 'EMBEDDING_GENERATION_COMPLETED',
62
- EMBEDDING_GENERATION_FAILED = 'EMBEDDING_GENERATION_FAILED',
63
- }
64
-
65
- /**
66
- * Platform-specific event type prefix
67
- */
68
- export enum PlatformPrefix {
69
- DISCORD = 'DISCORD',
70
- TELEGRAM = 'TELEGRAM',
71
- TWITTER = 'TWITTER',
72
- }
73
-
74
- /**
75
- * Base payload interface for all events
76
- */
77
- export interface EventPayload {
78
- runtime: IAgentRuntime;
79
- source: string;
80
- onComplete?: () => void;
81
- }
82
-
83
- /**
84
- * Payload for world-related events
85
- */
86
- export interface WorldPayload extends EventPayload {
87
- world: World;
88
- rooms: Room[];
89
- entities: Entity[];
90
- }
91
-
92
- /**
93
- * Payload for entity-related events
94
- */
95
- export interface EntityPayload extends EventPayload {
96
- entityId: UUID;
97
- worldId?: UUID;
98
- roomId?: UUID;
99
- metadata?: {
100
- orginalId: string;
101
- username: string;
102
- displayName?: string;
103
- [key: string]: any;
104
- };
105
- }
106
-
107
- /**
108
- * Payload for reaction-related events
109
- */
110
- export interface MessagePayload extends EventPayload {
111
- message: Memory;
112
- callback?: HandlerCallback;
113
- onComplete?: () => void;
114
- }
115
-
116
- /**
117
- * Payload for channel cleared events
118
- */
119
- export interface ChannelClearedPayload extends EventPayload {
120
- roomId: UUID;
121
- channelId: string;
122
- memoryCount: number;
123
- }
124
-
125
- /**
126
- * Payload for events that are invoked without a message
127
- */
128
- export interface InvokePayload extends EventPayload {
129
- worldId: UUID;
130
- userId: string;
131
- roomId: UUID;
132
- callback?: HandlerCallback;
133
- source: string;
134
- }
135
-
136
- /**
137
- * Run event payload type
138
- */
139
- export interface RunEventPayload extends EventPayload {
140
- runId: UUID;
141
- messageId: UUID;
142
- roomId: UUID;
143
- entityId: UUID;
144
- startTime: number;
145
- status: 'started' | 'completed' | 'timeout';
146
- endTime?: number;
147
- duration?: number;
148
- error?: string;
149
- }
150
-
151
- /**
152
- * Action event payload type
153
- */
154
- export interface ActionEventPayload extends EventPayload {
155
- actionId: UUID;
156
- actionName: string;
157
- startTime?: number;
158
- completed?: boolean;
159
- error?: Error;
160
- }
161
-
162
- /**
163
- * Evaluator event payload type
164
- */
165
- export interface EvaluatorEventPayload extends EventPayload {
166
- evaluatorId: UUID;
167
- evaluatorName: string;
168
- startTime?: number;
169
- completed?: boolean;
170
- error?: Error;
171
- }
172
-
173
- /**
174
- * Model event payload type
175
- */
176
- export interface ModelEventPayload extends EventPayload {
177
- provider: string;
178
- type: ModelTypeName;
179
- prompt: string;
180
- tokens?: {
181
- prompt: number;
182
- completion: number;
183
- total: number;
184
- };
185
- }
186
-
187
- /**
188
- * Payload for embedding generation events
189
- */
190
- export interface EmbeddingGenerationPayload extends EventPayload {
191
- memory: Memory;
192
- priority?: 'high' | 'normal' | 'low';
193
- retryCount?: number;
194
- maxRetries?: number;
195
- embedding?: number[];
196
- error?: any;
197
- }
198
-
199
- export type MessageReceivedHandlerParams = {
200
- runtime: IAgentRuntime;
201
- message: Memory;
202
- callback: HandlerCallback;
203
- onComplete?: () => void;
204
- };
205
-
206
- /**
207
- * Maps event types to their corresponding payload types
208
- */
209
- export interface EventPayloadMap {
210
- [EventType.WORLD_JOINED]: WorldPayload;
211
- [EventType.WORLD_CONNECTED]: WorldPayload;
212
- [EventType.WORLD_LEFT]: WorldPayload;
213
- [EventType.ENTITY_JOINED]: EntityPayload;
214
- [EventType.ENTITY_LEFT]: EntityPayload;
215
- [EventType.ENTITY_UPDATED]: EntityPayload;
216
- [EventType.MESSAGE_RECEIVED]: MessagePayload;
217
- [EventType.MESSAGE_SENT]: MessagePayload;
218
- [EventType.MESSAGE_DELETED]: MessagePayload;
219
- [EventType.CHANNEL_CLEARED]: ChannelClearedPayload;
220
- [EventType.REACTION_RECEIVED]: MessagePayload;
221
- [EventType.POST_GENERATED]: InvokePayload;
222
- [EventType.INTERACTION_RECEIVED]: MessagePayload;
223
- [EventType.RUN_STARTED]: RunEventPayload;
224
- [EventType.RUN_ENDED]: RunEventPayload;
225
- [EventType.RUN_TIMEOUT]: RunEventPayload;
226
- [EventType.ACTION_STARTED]: ActionEventPayload;
227
- [EventType.ACTION_COMPLETED]: ActionEventPayload;
228
- [EventType.EVALUATOR_STARTED]: EvaluatorEventPayload;
229
- [EventType.EVALUATOR_COMPLETED]: EvaluatorEventPayload;
230
- [EventType.MODEL_USED]: ModelEventPayload;
231
- [EventType.EMBEDDING_GENERATION_REQUESTED]: EmbeddingGenerationPayload;
232
- [EventType.EMBEDDING_GENERATION_COMPLETED]: EmbeddingGenerationPayload;
233
- [EventType.EMBEDDING_GENERATION_FAILED]: EmbeddingGenerationPayload;
234
- }
235
-
236
- /**
237
- * Event handler function type
238
- */
239
- export type EventHandler<T extends keyof EventPayloadMap> = (
240
- payload: EventPayloadMap[T]
241
- ) => Promise<void>;
242
-
243
- /**
244
- * Defines a more specific type for event handlers, expecting an `Metadata`.
245
- * This aims to improve upon generic 'any' type handlers, providing a clearer contract
246
- * for functions that respond to events emitted within the agent runtime (see `emitEvent` in `AgentRuntime`).
247
- * Handlers can be synchronous or asynchronous.
248
- */
249
- export type TypedEventHandler = (data: Metadata) => Promise<void> | void;
package/src/types/lp.ts DELETED
@@ -1,124 +0,0 @@
1
- import type { Metadata } from './primitives';
2
- import { Service } from './service';
3
- import type { TokenBalance } from './token';
4
-
5
- /**
6
- * A standardized representation of a liquidity pool from any DEX.
7
- */
8
- export type PoolInfo = {
9
- id: string; // Unique identifier for the pool (e.g., LP token mint or a DEX-specific ID).
10
- displayName?: string; // User-friendly name for the pool.
11
- dex: string; // Identifier for the DEX (e.g., "orca", "raydium").
12
- tokenA: {
13
- mint: string;
14
- symbol?: string;
15
- reserve?: string;
16
- decimals?: number;
17
- };
18
- tokenB: {
19
- mint: string;
20
- symbol?: string;
21
- reserve?: string;
22
- decimals?: number;
23
- };
24
- lpTokenMint?: string;
25
- apr?: number; // Annual Percentage Rate.
26
- apy?: number; // Annual Percentage Yield.
27
- tvl?: number; // Total Value Locked in USD.
28
- fee?: number; // Trading fee percentage.
29
- metadata?: Metadata; // For DEX-specific extra data.
30
- };
31
-
32
- /**
33
- * A standardized representation of a user's position in a liquidity pool.
34
- */
35
- export type LpPositionDetails = {
36
- poolId: string;
37
- dex: string;
38
- lpTokenBalance: TokenBalance;
39
- underlyingTokens: TokenBalance[]; // Array of two token balances.
40
- valueUsd?: number;
41
- accruedFees?: TokenBalance[];
42
- rewards?: TokenBalance[];
43
- metadata?: Metadata; // For additional DEX-specific position data.
44
- };
45
-
46
- /**
47
- * A standardized result for blockchain transactions.
48
- */
49
- export type TransactionResult = {
50
- success: boolean;
51
- transactionId?: string;
52
- error?: string;
53
- data?: any;
54
- };
55
-
56
- /**
57
- * Abstract interface for a Liquidity Pool Service.
58
- * DEX-specific plugins (e.g., for Orca, Raydium) must implement this service
59
- * to allow the LP Manager to interact with them in a standardized way.
60
- */
61
- export abstract class ILpService extends Service {
62
- static override readonly serviceType = 'lp';
63
-
64
- public readonly capabilityDescription = 'Provides standardized access to DEX liquidity pools.';
65
-
66
- /**
67
- * Returns the name of the DEX this service interacts with.
68
- * @returns The name of the DEX (e.g., "Orca", "Raydium").
69
- */
70
- abstract getDexName(): string;
71
-
72
- /**
73
- * Fetches a list of available liquidity pools from the DEX.
74
- * @param tokenAMint - Optional: Filter pools by the mint address of the first token.
75
- * @param tokenBMint - Optional: Filter pools by the mint address of the second token.
76
- * @returns A promise that resolves to an array of standardized PoolInfo objects.
77
- */
78
- abstract getPools(tokenAMint?: string, tokenBMint?: string): Promise<PoolInfo[]>;
79
-
80
- /**
81
- * Adds liquidity to a specified pool.
82
- * @param params - The parameters for adding liquidity.
83
- * @returns A promise resolving to a transaction result, including the LP tokens received.
84
- */
85
- abstract addLiquidity(params: {
86
- userVault: any;
87
- poolId: string;
88
- tokenAAmountLamports: string;
89
- tokenBAmountLamports?: string;
90
- slippageBps: number;
91
- tickLowerIndex?: number; // For concentrated liquidity
92
- tickUpperIndex?: number; // For concentrated liquidity
93
- }): Promise<TransactionResult & { lpTokensReceived?: TokenBalance }>;
94
-
95
- /**
96
- * Removes liquidity from a specified pool.
97
- * @param params - The parameters for removing liquidity.
98
- * @returns A promise resolving to a transaction result, including the tokens received.
99
- */
100
- abstract removeLiquidity(params: {
101
- userVault: any;
102
- poolId: string;
103
- lpTokenAmountLamports: string;
104
- slippageBps: number;
105
- }): Promise<TransactionResult & { tokensReceived?: TokenBalance[] }>;
106
-
107
- /**
108
- * Fetches the details of a specific LP position for a user.
109
- * @param userAccountPublicKey - The user's wallet public key.
110
- * @param poolOrPositionIdentifier - The identifier for the pool or a specific position (e.g., position NFT mint).
111
- * @returns A promise resolving to the position details or null if not found.
112
- */
113
- abstract getLpPositionDetails(
114
- userAccountPublicKey: string,
115
- poolOrPositionIdentifier: string
116
- ): Promise<LpPositionDetails | null>;
117
-
118
- /**
119
- * Fetches the latest market data (e.g., APY, TVL) for a list of pools.
120
- * @param poolIds - An array of pool IDs to fetch data for.
121
- * @returns A promise resolving to a map of pool IDs to their partial market data.
122
- */
123
- abstract getMarketDataForPools(poolIds: string[]): Promise<Record<string, Partial<PoolInfo>>>;
124
- }