Skip to content

Commit e9df73c

Browse files
committed
Data Engine v11
1 parent 8e7e4b7 commit e9df73c

File tree

14 files changed

+160
-17
lines changed

14 files changed

+160
-17
lines changed

.changeset/hungry-walls-admire.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@chainlink/data-engine-adapter': minor
3+
---
4+
5+
Add v11 schema

.pnp.cjs

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/sources/data-engine/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"typescript": "5.8.3"
3737
},
3838
"dependencies": {
39-
"@chainlink/data-streams-sdk": "^1.0.4",
39+
"@chainlink/data-streams-sdk": "1.2.0",
4040
"@chainlink/external-adapter-framework": "2.8.0",
4141
"tslib": "2.4.1"
4242
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { AdapterEndpoint } from '@chainlink/external-adapter-framework/adapter'
2+
import { InputParameters } from '@chainlink/external-adapter-framework/validation'
3+
import { config } from '../config'
4+
import { deutscheBoerseV11Transport } from '../transport/deutscheBoerseV11'
5+
6+
export const inputParameters = new InputParameters(
7+
{
8+
feedId: {
9+
required: true,
10+
type: 'string',
11+
description: 'The feedId for Deutsche Boerse feed with v11 schema',
12+
},
13+
},
14+
[
15+
{
16+
feedId: '0x0008707410e2c111fb0e80cab2fa004b215eea2d95b106e700243f9ebcc8fbd9',
17+
},
18+
],
19+
)
20+
21+
export type BaseEndpointTypes = {
22+
Parameters: typeof inputParameters.definition
23+
Response: {
24+
Result: null
25+
Data: {
26+
mid: string
27+
lastSeenTimestampNs: string
28+
bid: string
29+
bidVolume: number
30+
ask: string
31+
askVolume: number
32+
lastTradedPrice: string
33+
marketStatus: number
34+
decimals: number
35+
}
36+
}
37+
Settings: typeof config.settings
38+
}
39+
40+
export const endpoint = new AdapterEndpoint({
41+
name: 'deutscheBoerse-v11',
42+
aliases: [],
43+
transport: deutscheBoerseV11Transport,
44+
inputParameters,
45+
})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export { endpoint as cryptoV3 } from './cryptoV3'
2+
export { endpoint as deutscheBoerseV11 } from './deutscheBoerseV11'
23
export { endpoint as rwaV8 } from './rwaV8'

packages/sources/data-engine/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { expose, ServerInstance } from '@chainlink/external-adapter-framework'
22
import { Adapter } from '@chainlink/external-adapter-framework/adapter'
33
import { config } from './config'
4-
import { cryptoV3, rwaV8 } from './endpoint'
4+
import { cryptoV3, deutscheBoerseV11, rwaV8 } from './endpoint'
55

66
export const adapter = new Adapter({
77
defaultEndpoint: cryptoV3.name,
88
name: 'DATA_ENGINE',
99
config,
10-
endpoints: [cryptoV3, rwaV8],
10+
endpoints: [cryptoV3, rwaV8, deutscheBoerseV11],
1111
})
1212

1313
export const server = (): Promise<ServerInstance | undefined> => expose(adapter)

packages/sources/data-engine/src/lib.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Requester } from '@chainlink/external-adapter-framework/util/requester'
33
import { AdapterError } from '@chainlink/external-adapter-framework/validation/error'
44

55
import { BaseEndpointTypes as CryptoV3Types } from './endpoint/cryptoV3'
6+
import { BaseEndpointTypes as DeutscheBoerseV11Types } from './endpoint/deutscheBoerseV11'
67
import { BaseEndpointTypes as RwaV8Types } from './endpoint/rwaV8'
78

89
export const getCryptoPrice = async (feedId: string, url: string, requester: Requester) =>
@@ -11,6 +12,9 @@ export const getCryptoPrice = async (feedId: string, url: string, requester: Req
1112
export const getRwaPrice = async (feedId: string, url: string, requester: Requester) =>
1213
callEA<RwaV8Types['Response']['Data']>(feedId, 'rwa-v8', url, requester)
1314

15+
export const getDeutscheBoersePrice = async (feedId: string, url: string, requester: Requester) =>
16+
callEA<DeutscheBoerseV11Types['Response']['Data']>(feedId, 'deutscheBoerse-v11', url, requester)
17+
1418
const callEA = async <T>(feedId: string, endpoint: string, url: string, requester: Requester) => {
1519
const requestConfig = {
1620
baseURL: url,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { DecodedV11Report } from '@chainlink/data-streams-sdk'
2+
import { BaseEndpointTypes } from '../endpoint/deutscheBoerseV11'
3+
import { createDataEngineTransport, DECIMALS } from './wsTransportBase'
4+
5+
export const deutscheBoerseV11Transport = createDataEngineTransport<
6+
BaseEndpointTypes,
7+
DecodedV11Report
8+
>({
9+
schemaVersion: 'V11',
10+
loggerName: 'deutscheBoerseV11Transport',
11+
extractData: (decoded) => {
12+
return {
13+
mid: decoded.mid.toString(),
14+
lastSeenTimestampNs: decoded.lastSeenTimestampNs.toString(),
15+
bid: decoded.bid.toString(),
16+
bidVolume: decoded.bidVolume,
17+
ask: decoded.ask.toString(),
18+
askVolume: decoded.askVolume,
19+
lastTradedPrice: decoded.lastTradedPrice.toString(),
20+
marketStatus: decoded.marketStatus,
21+
decimals: DECIMALS,
22+
}
23+
},
24+
})

packages/sources/data-engine/test/integration/__snapshots__/adapter.test.ts.snap

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,28 @@ exports[`execute crypto-v3 endpoint should return success 1`] = `
1717
}
1818
`;
1919

20+
exports[`execute deutscheBoerse-v11 endpoint should return success 1`] = `
21+
{
22+
"data": {
23+
"ask": "225350000000000000000",
24+
"askVolume": 2426047410323587000,
25+
"bid": "225300000000000000000",
26+
"bidVolume": 2426047410323587000,
27+
"decimals": 18,
28+
"lastSeenTimestampNs": "1763378650248000000",
29+
"lastTradedPrice": "221900000000000000000",
30+
"marketStatus": 0,
31+
"mid": "225325000000000000000",
32+
},
33+
"result": null,
34+
"statusCode": 200,
35+
"timestamps": {
36+
"providerDataReceivedUnixMs": 3134,
37+
"providerDataStreamEstablishedUnixMs": 3030,
38+
},
39+
}
40+
`;
41+
2042
exports[`execute rwa-v8 endpoint should return success 1`] = `
2143
{
2244
"data": {

0 commit comments

Comments
 (0)