@the-situation/indexer 0.11.8 → 0.12.1
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.
- package/dist/api/app.d.ts +47 -5
- package/dist/api/app.d.ts.map +1 -1
- package/dist/api/routes/admin-subscriptions.d.ts +34 -4
- package/dist/api/routes/admin-subscriptions.d.ts.map +1 -1
- package/dist/api/routes/admin-subscriptions.js +30 -9
- package/dist/api/routes/admin-subscriptions.js.map +1 -1
- package/dist/api/routes/spice-faucet.d.ts +13 -1
- package/dist/api/routes/spice-faucet.d.ts.map +1 -1
- package/dist/api/routes/spice-faucet.js +6 -5
- package/dist/api/routes/spice-faucet.js.map +1 -1
- package/dist/etl/event-indexer.d.ts +1 -1
- package/dist/etl/lp-position-refresher.d.ts.map +1 -1
- package/dist/etl/lp-position-refresher.js +6 -2
- package/dist/etl/lp-position-refresher.js.map +1 -1
- package/dist/etl/position-refresher.js +2 -2
- package/dist/etl/position-refresher.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -100
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api/app.d.ts
CHANGED
|
@@ -374,7 +374,10 @@ export declare function createApp(config: AppConfig): Elysia<"", {
|
|
|
374
374
|
api: {
|
|
375
375
|
faucet: {
|
|
376
376
|
post: {
|
|
377
|
-
body:
|
|
377
|
+
body: {
|
|
378
|
+
amount?: number;
|
|
379
|
+
recipient: string;
|
|
380
|
+
};
|
|
378
381
|
params: {};
|
|
379
382
|
query: unknown;
|
|
380
383
|
headers: unknown;
|
|
@@ -404,6 +407,15 @@ export declare function createApp(config: AppConfig): Elysia<"", {
|
|
|
404
407
|
alreadyMinted?: never;
|
|
405
408
|
transactionHash?: never;
|
|
406
409
|
};
|
|
410
|
+
422: {
|
|
411
|
+
type: "validation";
|
|
412
|
+
on: string;
|
|
413
|
+
summary?: string;
|
|
414
|
+
message?: string;
|
|
415
|
+
found?: unknown;
|
|
416
|
+
property?: string;
|
|
417
|
+
expected?: string;
|
|
418
|
+
};
|
|
407
419
|
};
|
|
408
420
|
};
|
|
409
421
|
};
|
|
@@ -510,15 +522,33 @@ export declare function createApp(config: AppConfig): Elysia<"", {
|
|
|
510
522
|
admin: {
|
|
511
523
|
subscriptions: {
|
|
512
524
|
post: {
|
|
513
|
-
body:
|
|
525
|
+
body: {
|
|
526
|
+
secret?: string;
|
|
527
|
+
name: string;
|
|
528
|
+
webhook_url: string;
|
|
529
|
+
filters: {
|
|
530
|
+
traders?: string[];
|
|
531
|
+
eventTypes?: ("trade_move" | "settlement" | "market_created")[];
|
|
532
|
+
marketTypes?: string[];
|
|
533
|
+
marketAddresses?: string[];
|
|
534
|
+
minCollateral?: number;
|
|
535
|
+
};
|
|
536
|
+
};
|
|
514
537
|
params: {};
|
|
515
538
|
query: unknown;
|
|
516
539
|
headers: unknown;
|
|
517
540
|
response: {
|
|
518
541
|
200: {
|
|
519
542
|
error: string;
|
|
520
|
-
} | import("../types").SubscriptionResponse
|
|
521
|
-
|
|
543
|
+
} | import("../types").SubscriptionResponse;
|
|
544
|
+
422: {
|
|
545
|
+
type: "validation";
|
|
546
|
+
on: string;
|
|
547
|
+
summary?: string;
|
|
548
|
+
message?: string;
|
|
549
|
+
found?: unknown;
|
|
550
|
+
property?: string;
|
|
551
|
+
expected?: string;
|
|
522
552
|
};
|
|
523
553
|
};
|
|
524
554
|
};
|
|
@@ -576,7 +606,19 @@ export declare function createApp(config: AppConfig): Elysia<"", {
|
|
|
576
606
|
subscriptions: {
|
|
577
607
|
":id": {
|
|
578
608
|
put: {
|
|
579
|
-
body:
|
|
609
|
+
body: {
|
|
610
|
+
name?: string;
|
|
611
|
+
webhook_url?: string;
|
|
612
|
+
secret?: string;
|
|
613
|
+
filters?: {
|
|
614
|
+
traders?: string[];
|
|
615
|
+
eventTypes?: ("trade_move" | "settlement" | "market_created")[];
|
|
616
|
+
marketTypes?: string[];
|
|
617
|
+
marketAddresses?: string[];
|
|
618
|
+
minCollateral?: number;
|
|
619
|
+
};
|
|
620
|
+
is_active?: boolean;
|
|
621
|
+
};
|
|
580
622
|
params: {
|
|
581
623
|
id: string;
|
|
582
624
|
} & {};
|
package/dist/api/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/api/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAqB1E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/api/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAqB1E,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;CAC3C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoB1C"}
|
|
@@ -23,15 +23,33 @@ export declare const adminSubscriptionRoutes: (db: DatabaseService, adminApiKey:
|
|
|
23
23
|
admin: {
|
|
24
24
|
subscriptions: {
|
|
25
25
|
post: {
|
|
26
|
-
body:
|
|
26
|
+
body: {
|
|
27
|
+
secret?: string;
|
|
28
|
+
name: string;
|
|
29
|
+
webhook_url: string;
|
|
30
|
+
filters: {
|
|
31
|
+
traders?: string[];
|
|
32
|
+
eventTypes?: ("trade_move" | "settlement" | "market_created")[];
|
|
33
|
+
marketTypes?: string[];
|
|
34
|
+
marketAddresses?: string[];
|
|
35
|
+
minCollateral?: number;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
27
38
|
params: {};
|
|
28
39
|
query: unknown;
|
|
29
40
|
headers: unknown;
|
|
30
41
|
response: {
|
|
31
42
|
200: {
|
|
32
43
|
error: string;
|
|
33
|
-
} | SubscriptionResponse
|
|
34
|
-
|
|
44
|
+
} | SubscriptionResponse;
|
|
45
|
+
422: {
|
|
46
|
+
type: "validation";
|
|
47
|
+
on: string;
|
|
48
|
+
summary?: string;
|
|
49
|
+
message?: string;
|
|
50
|
+
found?: unknown;
|
|
51
|
+
property?: string;
|
|
52
|
+
expected?: string;
|
|
35
53
|
};
|
|
36
54
|
};
|
|
37
55
|
};
|
|
@@ -89,7 +107,19 @@ export declare const adminSubscriptionRoutes: (db: DatabaseService, adminApiKey:
|
|
|
89
107
|
subscriptions: {
|
|
90
108
|
":id": {
|
|
91
109
|
put: {
|
|
92
|
-
body:
|
|
110
|
+
body: {
|
|
111
|
+
name?: string;
|
|
112
|
+
webhook_url?: string;
|
|
113
|
+
secret?: string;
|
|
114
|
+
filters?: {
|
|
115
|
+
traders?: string[];
|
|
116
|
+
eventTypes?: ("trade_move" | "settlement" | "market_created")[];
|
|
117
|
+
marketTypes?: string[];
|
|
118
|
+
marketAddresses?: string[];
|
|
119
|
+
minCollateral?: number;
|
|
120
|
+
};
|
|
121
|
+
is_active?: boolean;
|
|
122
|
+
};
|
|
93
123
|
params: {
|
|
94
124
|
id: string;
|
|
95
125
|
} & {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-subscriptions.d.ts","sourceRoot":"","sources":["../../../src/api/routes/admin-subscriptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"admin-subscriptions.d.ts","sourceRoot":"","sources":["../../../src/api/routes/admin-subscriptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAK,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAEV,oBAAoB,EAErB,MAAM,sBAAsB,CAAC;AAoC9B,eAAO,MAAM,uBAAuB,GAAI,IAAI,eAAe,EAAE,aAAa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD1E,CAAC"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin CRUD routes for webhook subscriptions.
|
|
3
3
|
*/
|
|
4
|
-
import { Elysia } from 'elysia';
|
|
4
|
+
import { Elysia, t } from 'elysia';
|
|
5
5
|
import { adminAuth } from '../middleware/admin-auth';
|
|
6
|
+
const ActivityEventTypeSchema = t.Union([
|
|
7
|
+
t.Literal('trade_move'),
|
|
8
|
+
t.Literal('settlement'),
|
|
9
|
+
t.Literal('market_created'),
|
|
10
|
+
]);
|
|
11
|
+
const SubscriptionFiltersSchema = t.Object({
|
|
12
|
+
eventTypes: t.Optional(t.Array(ActivityEventTypeSchema)),
|
|
13
|
+
marketTypes: t.Optional(t.Array(t.String())),
|
|
14
|
+
marketAddresses: t.Optional(t.Array(t.String())),
|
|
15
|
+
traders: t.Optional(t.Array(t.String())),
|
|
16
|
+
minCollateral: t.Optional(t.Number()),
|
|
17
|
+
});
|
|
6
18
|
function toResponse(row) {
|
|
7
19
|
let filters = {};
|
|
8
20
|
try {
|
|
@@ -26,14 +38,16 @@ function toResponse(row) {
|
|
|
26
38
|
export const adminSubscriptionRoutes = (db, adminApiKey) => new Elysia()
|
|
27
39
|
.use(adminAuth(adminApiKey))
|
|
28
40
|
.post('/admin/subscriptions', ({ body, set }) => {
|
|
29
|
-
const
|
|
30
|
-
if (!input.name || !input.webhook_url) {
|
|
31
|
-
set.status = 400;
|
|
32
|
-
return { error: 'name and webhook_url are required' };
|
|
33
|
-
}
|
|
34
|
-
const row = db.subscriptions.create(input);
|
|
41
|
+
const row = db.subscriptions.create(body);
|
|
35
42
|
set.status = 201;
|
|
36
43
|
return toResponse(row);
|
|
44
|
+
}, {
|
|
45
|
+
body: t.Object({
|
|
46
|
+
name: t.String(),
|
|
47
|
+
webhook_url: t.String(),
|
|
48
|
+
secret: t.Optional(t.String()),
|
|
49
|
+
filters: SubscriptionFiltersSchema,
|
|
50
|
+
}),
|
|
37
51
|
})
|
|
38
52
|
.get('/admin/subscriptions', () => {
|
|
39
53
|
return db.subscriptions.findAll().map(toResponse);
|
|
@@ -49,13 +63,20 @@ export const adminSubscriptionRoutes = (db, adminApiKey) => new Elysia()
|
|
|
49
63
|
})
|
|
50
64
|
.put('/admin/subscriptions/:id', ({ params, body, set }) => {
|
|
51
65
|
const id = parseInt(params.id, 10);
|
|
52
|
-
const
|
|
53
|
-
const row = db.subscriptions.update(id, input);
|
|
66
|
+
const row = db.subscriptions.update(id, body);
|
|
54
67
|
if (!row) {
|
|
55
68
|
set.status = 404;
|
|
56
69
|
return { error: 'Subscription not found' };
|
|
57
70
|
}
|
|
58
71
|
return toResponse(row);
|
|
72
|
+
}, {
|
|
73
|
+
body: t.Object({
|
|
74
|
+
name: t.Optional(t.String()),
|
|
75
|
+
webhook_url: t.Optional(t.String()),
|
|
76
|
+
secret: t.Optional(t.String()),
|
|
77
|
+
filters: t.Optional(SubscriptionFiltersSchema),
|
|
78
|
+
is_active: t.Optional(t.Boolean()),
|
|
79
|
+
}),
|
|
59
80
|
})
|
|
60
81
|
.delete('/admin/subscriptions/:id', ({ params, set }) => {
|
|
61
82
|
const id = parseInt(params.id, 10);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-subscriptions.js","sourceRoot":"","sources":["../../../src/api/routes/admin-subscriptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-subscriptions.js","sourceRoot":"","sources":["../../../src/api/routes/admin-subscriptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,10 @@ export declare const spiceFaucetRoutes: (db: DatabaseService) => Elysia<"", {
|
|
|
26
26
|
api: {
|
|
27
27
|
faucet: {
|
|
28
28
|
post: {
|
|
29
|
-
body:
|
|
29
|
+
body: {
|
|
30
|
+
amount?: number;
|
|
31
|
+
recipient: string;
|
|
32
|
+
};
|
|
30
33
|
params: {};
|
|
31
34
|
query: unknown;
|
|
32
35
|
headers: unknown;
|
|
@@ -56,6 +59,15 @@ export declare const spiceFaucetRoutes: (db: DatabaseService) => Elysia<"", {
|
|
|
56
59
|
alreadyMinted?: never;
|
|
57
60
|
transactionHash?: never;
|
|
58
61
|
};
|
|
62
|
+
422: {
|
|
63
|
+
type: "validation";
|
|
64
|
+
on: string;
|
|
65
|
+
summary?: string;
|
|
66
|
+
message?: string;
|
|
67
|
+
found?: unknown;
|
|
68
|
+
property?: string;
|
|
69
|
+
expected?: string;
|
|
70
|
+
};
|
|
59
71
|
};
|
|
60
72
|
};
|
|
61
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spice-faucet.d.ts","sourceRoot":"","sources":["../../../src/api/routes/spice-faucet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"spice-faucet.d.ts","sourceRoot":"","sources":["../../../src/api/routes/spice-faucet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAK,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAe/D,eAAO,MAAM,iBAAiB,GAAI,IAAI,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2EjD,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* one mint per address. Requires SPICE_OWNER_KEY and SPICE_OWNER_ADDRESS
|
|
6
6
|
* env vars on the indexer.
|
|
7
7
|
*/
|
|
8
|
-
import { Elysia } from 'elysia';
|
|
8
|
+
import { Elysia, t } from 'elysia';
|
|
9
9
|
import { Account, CallData, RpcProvider } from 'starknet';
|
|
10
10
|
import { log } from '../../logger';
|
|
11
11
|
const SPICE_TOKEN_ADDRESS = '0x4583395a85181cd495b8563d277bdadfbca15fc65d2945db6c5c11f7d0e786e';
|
|
@@ -24,10 +24,6 @@ export const spiceFaucetRoutes = (db) => new Elysia().post('/api/faucet', async
|
|
|
24
24
|
return { error: 'Faucet not configured' };
|
|
25
25
|
}
|
|
26
26
|
const { recipient, amount: customAmount } = body;
|
|
27
|
-
if (!recipient || typeof recipient !== 'string') {
|
|
28
|
-
set.status = 400;
|
|
29
|
-
return { error: 'Missing recipient address' };
|
|
30
|
-
}
|
|
31
27
|
const normalized = recipient.toLowerCase();
|
|
32
28
|
const hasCustomAmount = customAmount != null && Number.isFinite(customAmount) && customAmount > 0;
|
|
33
29
|
// Default faucet (no custom amount) is one-time per address
|
|
@@ -80,5 +76,10 @@ export const spiceFaucetRoutes = (db) => new Elysia().post('/api/faucet', async
|
|
|
80
76
|
set.status = 500;
|
|
81
77
|
return { error: 'Mint failed', detail: msg };
|
|
82
78
|
}
|
|
79
|
+
}, {
|
|
80
|
+
body: t.Object({
|
|
81
|
+
recipient: t.String(),
|
|
82
|
+
amount: t.Optional(t.Number()),
|
|
83
|
+
}),
|
|
83
84
|
});
|
|
84
85
|
//# sourceMappingURL=spice-faucet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spice-faucet.js","sourceRoot":"","sources":["../../../src/api/routes/spice-faucet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"spice-faucet.js","sourceRoot":"","sources":["../../../src/api/routes/spice-faucet.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,5 @@ import { VoyagerClientTag } from '../services/VoyagerClient';
|
|
|
8
8
|
import type { MarketType } from '../types';
|
|
9
9
|
import type { IndexerCycleResult } from './types';
|
|
10
10
|
export declare const indexMarketEvents: (marketAddress: string, marketType?: MarketType) => Effect.Effect<IndexerCycleResult, never, DatabaseTag | VoyagerClientTag | EventBusTag>;
|
|
11
|
-
export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, DatabaseTag |
|
|
11
|
+
export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, DatabaseTag | EventBusTag | VoyagerClientTag>;
|
|
12
12
|
//# sourceMappingURL=event-indexer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAgFjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAuBlC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAqBhC,CAAC"}
|
|
@@ -27,10 +27,14 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
|
|
|
27
27
|
totalShares = Number(marketState.total_shares) / TWO_128;
|
|
28
28
|
totalBacking = Number(marketState.total_backing) / TWO_128;
|
|
29
29
|
if (totalShares > 0) {
|
|
30
|
-
// Subtract net trader PnL from pool backing — trader profits come from LPs
|
|
30
|
+
// Subtract net trader PnL from pool backing — trader profits come from LPs.
|
|
31
|
+
// IMPORTANT: the contract drains LP backing by amplifier × position_value
|
|
32
|
+
// for each trader claim. Without the amplifier, this estimate is too high
|
|
33
|
+
// on markets with payoutAmplifier > 1.
|
|
31
34
|
const traderPositions = db.positions.findByMarket(marketAddress);
|
|
32
35
|
const netTraderPnl = traderPositions.reduce((sum, p) => sum + (p.unrealized_pnl ?? 0), 0);
|
|
33
|
-
const
|
|
36
|
+
const payoutAmplifier = marketState.payout_amplifier ?? 1;
|
|
37
|
+
const adjustedBacking = totalBacking - (payoutAmplifier * netTraderPnl);
|
|
34
38
|
currentValue = (sharesNumber / totalShares) * adjustedBacking;
|
|
35
39
|
}
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;AASnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAAqB,EACrB,QAAgB,EAChB,aAAyB,QAAQ,EACoC,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IAEpC,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QACjC,yDAAyD;QACzD,oCAAoC;QACpC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACvC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAgD,CAAC,CAC9F,CAAC;IAEF,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAEpD,oCAAoC;IACpC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/D,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,YAAY,GAAG,CAAC,IAAI,WAAW,EAAE,YAAY,IAAI,WAAW,EAAE,aAAa,EAAE,CAAC;QAChF,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC;QACzD,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC;QAC3D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,
|
|
1
|
+
{"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
|
|
|
50
50
|
const isClosed = isPositionClosed(pos.settlementState, pos.claimed, marketIsSettled);
|
|
51
51
|
// Compute EV if we have the distribution data (works for both active and closed)
|
|
52
52
|
let computedPnl = null;
|
|
53
|
-
const canComputeMultinoulliEV = pos.exists && pos.effectiveProbs.length > 0 && mState && mState.k != null;
|
|
53
|
+
const canComputeMultinoulliEV = pos.exists && pos.effectiveProbs != null && pos.effectiveProbs.length > 0 && mState && mState.k != null;
|
|
54
54
|
if (canComputeMultinoulliEV) {
|
|
55
55
|
const marketProbs = JSON.parse(mState.probs_json);
|
|
56
56
|
const collateral = pos.collateralLockedNumber;
|
|
@@ -97,7 +97,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
|
|
|
97
97
|
outcome_count: pos.outcomeCount,
|
|
98
98
|
original_probs_json: JSON.stringify(pos.originalProbs),
|
|
99
99
|
collateral_locked_raw: pos.totalCollateralLocked,
|
|
100
|
-
effective_probs_json: pos.effectiveProbs.length > 0 ? JSON.stringify(pos.effectiveProbs) : null,
|
|
100
|
+
effective_probs_json: pos.effectiveProbs != null && pos.effectiveProbs.length > 0 ? JSON.stringify(pos.effectiveProbs) : null,
|
|
101
101
|
expected_value: expectedValue,
|
|
102
102
|
unrealized_pnl: unrealizedPnl,
|
|
103
103
|
realized_pnl: realizedPnl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position-refresher.js","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,aAAqB,EACrB,OAAgB,EAChB,eAAwB;IAExB,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,aAAa,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1C,mFAAmF;IACnF,IAAI,eAAe,IAAI,CAAC,aAAa,KAAK,eAAe,IAAI,aAAa,KAAK,eAAe,CAAC,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAAqB,EACrB,MAAc,EACd,aAAyB,QAAQ,EACwD,EAAE,CAC3F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAE/B,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QAE7F,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO;gBACL,aAAa;gBACb,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO;aAC9B,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;QAE5B,mDAAmD;QACnD,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,MAAM,MAAM,GAAG,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,MAAM,EAAE,UAAU,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAErF,iFAAiF;QACjF,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,MAAM,uBAAuB,GAC3B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"position-refresher.js","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Indexer entry point — boots DB, ETL scheduler, and Elysia server.
|
|
3
|
+
*
|
|
4
|
+
* Service construction is delegated to the existing Layer factories
|
|
5
|
+
* (DatabaseLive, EventBusLive, VoyagerClientLive, ChainReaderLive).
|
|
6
|
+
* Plain service instances are extracted from the layers via Effect.runSync
|
|
7
|
+
* for imperative consumers (createApp, createWebhookDispatcher, startScheduler).
|
|
3
8
|
*/
|
|
4
9
|
export {};
|
|
5
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
package/dist/index.js
CHANGED
|
@@ -1,120 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Indexer entry point — boots DB, ETL scheduler, and Elysia server.
|
|
3
|
+
*
|
|
4
|
+
* Service construction is delegated to the existing Layer factories
|
|
5
|
+
* (DatabaseLive, EventBusLive, VoyagerClientLive, ChainReaderLive).
|
|
6
|
+
* Plain service instances are extracted from the layers via Effect.runSync
|
|
7
|
+
* for imperative consumers (createApp, createWebhookDispatcher, startScheduler).
|
|
3
8
|
*/
|
|
4
|
-
import {
|
|
9
|
+
import { Effect, Layer } from 'effect';
|
|
5
10
|
import { createApp } from './api/app';
|
|
6
11
|
import { loadConfig } from './config';
|
|
7
12
|
import { createDatabase } from './db/connection';
|
|
8
|
-
import { ActivityFeedRepository, CursorRepository, EventRepository, LPPositionRepository, MarketRepository, MarketStateRepository, MultinoulliMarketStateRepository, PositionRepository, RankingRepository, SubscriptionRepository, } from './db/repositories';
|
|
9
|
-
import { MultinoulliSnapshotsRepository } from './db/repositories/multinoulli-snapshots';
|
|
10
13
|
import { initializeSchema } from './db/schema';
|
|
11
14
|
import { startScheduler } from './etl/scheduler';
|
|
15
|
+
import { ChainReaderLive } from './layers/ChainReaderLive';
|
|
16
|
+
import { DatabaseLive } from './layers/DatabaseLive';
|
|
17
|
+
import { EventBusLive } from './layers/EventBusLive';
|
|
18
|
+
import { VoyagerClientLive } from './layers/VoyagerClientLive';
|
|
19
|
+
import { ChainReaderTag } from './services/ChainReader';
|
|
20
|
+
import { DatabaseTag } from './services/Database';
|
|
21
|
+
import { EventBusTag } from './services/EventBus';
|
|
22
|
+
import { VoyagerClientTag } from './services/VoyagerClient';
|
|
12
23
|
import { createWebhookDispatcher } from './services/WebhookDispatcher';
|
|
13
|
-
import { createChainReaderService } from './layers/ChainReaderLive';
|
|
14
|
-
import { isRetryableVoyagerError, VoyagerApiError } from './services/VoyagerClient';
|
|
15
24
|
import { VoyagerRateLimitState } from './services/VoyagerRateLimit';
|
|
16
25
|
import { log } from './logger';
|
|
17
26
|
const config = loadConfig();
|
|
18
27
|
log.info('indexer starting', { dbPath: config.dbPath, rpcUrl: config.starknetRpcUrl });
|
|
28
|
+
// ── Database setup (open + migrate) ────────────────────────────────────────
|
|
19
29
|
const db = createDatabase(config.dbPath);
|
|
20
30
|
initializeSchema(db);
|
|
21
31
|
log.info('database initialized');
|
|
22
|
-
|
|
23
|
-
db,
|
|
24
|
-
markets: new MarketRepository(db),
|
|
25
|
-
events: new EventRepository(db),
|
|
26
|
-
marketState: new MarketStateRepository(db),
|
|
27
|
-
multinoulliMarketState: new MultinoulliMarketStateRepository(db),
|
|
28
|
-
multinoulliSnapshots: new MultinoulliSnapshotsRepository(db),
|
|
29
|
-
positions: new PositionRepository(db),
|
|
30
|
-
lpPositions: new LPPositionRepository(db),
|
|
31
|
-
cursors: new CursorRepository(db),
|
|
32
|
-
rankings: new RankingRepository(db),
|
|
33
|
-
activityFeed: new ActivityFeedRepository(db),
|
|
34
|
-
subscriptions: new SubscriptionRepository(db),
|
|
35
|
-
};
|
|
36
|
-
// ── Voyager rate-limit state (shared, observable) ───────────────────────────
|
|
32
|
+
// ── Build service layers ──────────────────────────────────────────────────
|
|
37
33
|
const voyagerRateLimit = new VoyagerRateLimitState(config.voyagerMinRequestIntervalMs);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
throw new VoyagerApiError(`Rate limited — ${status.message}`, 429);
|
|
48
|
-
}
|
|
49
|
-
await voyagerRateLimit.throttle();
|
|
50
|
-
const url = new URL(`${VOYAGER_BASE_URL}/events`);
|
|
51
|
-
url.searchParams.set('contract', contractAddress);
|
|
52
|
-
url.searchParams.set('p', page.toString());
|
|
53
|
-
url.searchParams.set('ps', pageSize.toString());
|
|
54
|
-
const response = await fetch(url.toString(), {
|
|
55
|
-
headers: {
|
|
56
|
-
'Content-Type': 'application/json',
|
|
57
|
-
'x-api-key': config.voyagerApiKey,
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
if (!response.ok) {
|
|
61
|
-
const retryAfter = response.headers.get('Retry-After');
|
|
62
|
-
const retryAfterMs = retryAfter && Number.isFinite(Number(retryAfter)) && Number(retryAfter) > 0
|
|
63
|
-
? Number(retryAfter) * 1000
|
|
64
|
-
: undefined;
|
|
65
|
-
if (response.status === 429 || response.status === 503) {
|
|
66
|
-
voyagerRateLimit.recordRateLimit();
|
|
67
|
-
}
|
|
68
|
-
throw new VoyagerApiError(`Voyager API ${response.status}: ${response.statusText}`, response.status, retryAfterMs);
|
|
69
|
-
}
|
|
70
|
-
voyagerRateLimit.recordSuccess();
|
|
71
|
-
const data = (await response.json());
|
|
72
|
-
return { events: data.items, lastPage: data.lastPage };
|
|
73
|
-
},
|
|
74
|
-
catch: (e) => {
|
|
75
|
-
if (e instanceof VoyagerApiError) {
|
|
76
|
-
return e;
|
|
77
|
-
}
|
|
78
|
-
return new VoyagerApiError(e instanceof Error ? e.message : 'Unknown Voyager API error');
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
return fetchOnce.pipe(Effect.retry({
|
|
82
|
-
schedule: voyagerRetrySchedule,
|
|
83
|
-
while: (error) => {
|
|
84
|
-
if (voyagerRateLimit.isLimited()) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
const shouldRetry = isRetryableVoyagerError(error);
|
|
88
|
-
if (shouldRetry) {
|
|
89
|
-
// Retry continues according to configured schedule.
|
|
90
|
-
}
|
|
91
|
-
return shouldRetry;
|
|
92
|
-
},
|
|
93
|
-
}));
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
// ── Chain reader ────────────────────────────────────────────────────────────
|
|
97
|
-
const chainReaderService = createChainReaderService(config.starknetRpcUrl);
|
|
98
|
-
// ── Event bus ───────────────────────────────────────────────────────────────
|
|
99
|
-
const busHandlers = new Set();
|
|
100
|
-
const eventBusService = {
|
|
101
|
-
broadcast: (event) => {
|
|
102
|
-
for (const handler of busHandlers) {
|
|
103
|
-
try {
|
|
104
|
-
handler(event);
|
|
105
|
-
}
|
|
106
|
-
catch (_err) {
|
|
107
|
-
busHandlers.delete(handler);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
subscribe: (handler) => {
|
|
112
|
-
busHandlers.add(handler);
|
|
113
|
-
return () => {
|
|
114
|
-
busHandlers.delete(handler);
|
|
115
|
-
};
|
|
116
|
-
},
|
|
117
|
-
};
|
|
34
|
+
const appLayer = Layer.mergeAll(DatabaseLive(db), EventBusLive(), VoyagerClientLive(config.voyagerApiKey, voyagerRateLimit, {
|
|
35
|
+
maxRetries: config.voyagerMaxRetries,
|
|
36
|
+
baseDelayMs: config.voyagerBaseDelayMs,
|
|
37
|
+
}), ChainReaderLive(config.starknetRpcUrl));
|
|
38
|
+
// ── Extract plain service instances for imperative consumers ──────────────
|
|
39
|
+
const databaseService = Effect.runSync(Effect.provide(DatabaseTag, appLayer));
|
|
40
|
+
const eventBusService = Effect.runSync(Effect.provide(EventBusTag, appLayer));
|
|
41
|
+
const voyagerClientService = Effect.runSync(Effect.provide(VoyagerClientTag, appLayer));
|
|
42
|
+
const chainReaderService = Effect.runSync(Effect.provide(ChainReaderTag, appLayer));
|
|
118
43
|
// ── Start webhook dispatcher ──────────────────────────────────────────────
|
|
119
44
|
const webhookDispatcher = createWebhookDispatcher(databaseService, eventBusService);
|
|
120
45
|
webhookDispatcher.start();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|