@silvana-one/orderbook 1.1.8 → 1.1.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.
- package/dist/node/index.cjs +350 -5
- package/dist/node/index.d.ts +3 -1
- package/dist/node/index.js +3 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/news.d.ts +48 -0
- package/dist/node/news.js +63 -0
- package/dist/node/news.js.map +1 -0
- package/dist/node/{grpc.d.ts → orderbook.d.ts} +48 -1
- package/dist/{web/grpc.js → node/orderbook.js} +50 -2
- package/dist/node/orderbook.js.map +1 -0
- package/dist/node/pricing.d.ts +81 -0
- package/dist/node/pricing.js +115 -0
- package/dist/node/pricing.js.map +1 -0
- package/dist/node/proto/silvana/news/v1/news_pb.d.ts +245 -0
- package/dist/node/proto/silvana/news/v1/news_pb.js +44 -0
- package/dist/node/proto/silvana/news/v1/news_pb.js.map +1 -0
- package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.d.ts +398 -0
- package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.js +47 -2
- package/dist/node/proto/silvana/orderbook/v1/orderbook_pb.js.map +1 -1
- package/dist/node/proto/silvana/pricing/v1/pricing_pb.d.ts +794 -0
- package/dist/node/proto/silvana/pricing/v1/pricing_pb.js +119 -0
- package/dist/node/proto/silvana/pricing/v1/pricing_pb.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/index.d.ts +3 -1
- package/dist/web/index.js +3 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/news.d.ts +48 -0
- package/dist/web/news.js +63 -0
- package/dist/web/news.js.map +1 -0
- package/dist/web/{grpc.d.ts → orderbook.d.ts} +48 -1
- package/dist/{node/grpc.js → web/orderbook.js} +50 -2
- package/dist/web/orderbook.js.map +1 -0
- package/dist/web/pricing.d.ts +81 -0
- package/dist/web/pricing.js +115 -0
- package/dist/web/pricing.js.map +1 -0
- package/dist/web/proto/silvana/news/v1/news_pb.d.ts +245 -0
- package/dist/web/proto/silvana/news/v1/news_pb.js +44 -0
- package/dist/web/proto/silvana/news/v1/news_pb.js.map +1 -0
- package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.d.ts +398 -0
- package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.js +47 -2
- package/dist/web/proto/silvana/orderbook/v1/orderbook_pb.js.map +1 -1
- package/dist/web/proto/silvana/pricing/v1/pricing_pb.d.ts +794 -0
- package/dist/web/proto/silvana/pricing/v1/pricing_pb.js +119 -0
- package/dist/web/proto/silvana/pricing/v1/pricing_pb.js.map +1 -0
- package/package.json +5 -2
- package/src/index.ts +3 -1
- package/src/news.ts +105 -0
- package/src/{grpc.ts → orderbook.ts} +91 -0
- package/src/pricing.ts +187 -0
- package/src/proto/silvana/news/v1/news_pb.ts +295 -0
- package/src/proto/silvana/orderbook/v1/orderbook_pb.ts +475 -2
- package/src/proto/silvana/pricing/v1/pricing_pb.ts +950 -0
- package/dist/node/grpc.js.map +0 -1
- package/dist/web/grpc.js.map +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.10.1 with parameter "target=ts,js_import_style=module"
|
|
2
|
+
// @generated from file proto/silvana/pricing/v1/pricing.proto (package silvana.pricing.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
6
|
+
/**
|
|
7
|
+
* Describes the file proto/silvana/pricing/v1/pricing.proto.
|
|
8
|
+
*/
|
|
9
|
+
export const file_proto_silvana_pricing_v1_pricing = /*@__PURE__*/ fileDesc("CiZwcm90by9zaWx2YW5hL3ByaWNpbmcvdjEvcHJpY2luZy5wcm90bxISc2lsdmFuYS5wcmljaW5nLnYxIkQKD0dldFByaWNlUmVxdWVzdBIRCgltYXJrZXRfaWQYASABKAkSEwoGc291cmNlGAIgASgJSACIAQFCCQoHX3NvdXJjZSLMAgoQR2V0UHJpY2VSZXNwb25zZRIRCgltYXJrZXRfaWQYASABKAkSEAoDYmlkGAIgASgBSACIAQESEAoDYXNrGAMgASgBSAGIAQESDAoEbGFzdBgEIAEoARIXCgp2b2x1bWVfMjRoGAUgASgBSAKIAQESHwoSY2hhbmdlXzI0aF9wZXJjZW50GAYgASgBSAOIAQESFQoIaGlnaF8yNGgYByABKAFIBIgBARIUCgdsb3dfMjRoGAggASgBSAWIAQESDgoGc291cmNlGAkgASgJEi0KCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBgoEX2JpZEIGCgRfYXNrQg0KC192b2x1bWVfMjRoQhUKE19jaGFuZ2VfMjRoX3BlcmNlbnRCCwoJX2hpZ2hfMjRoQgoKCF9sb3dfMjRoIkYKEEdldFByaWNlc1JlcXVlc3QSEgoKbWFya2V0X2lkcxgBIAMoCRITCgZzb3VyY2UYAiABKAlIAIgBAUIJCgdfc291cmNlIj4KEUdldFByaWNlc1Jlc3BvbnNlEikKBnByaWNlcxgBIAMoCzIZLnNpbHZhbmEucHJpY2luZy52MS5QcmljZSLBAgoFUHJpY2USEQoJbWFya2V0X2lkGAEgASgJEhAKA2JpZBgCIAEoAUgAiAEBEhAKA2FzaxgDIAEoAUgBiAEBEgwKBGxhc3QYBCABKAESFwoKdm9sdW1lXzI0aBgFIAEoAUgCiAEBEh8KEmNoYW5nZV8yNGhfcGVyY2VudBgGIAEoAUgDiAEBEhUKCGhpZ2hfMjRoGAcgASgBSASIAQESFAoHbG93XzI0aBgIIAEoAUgFiAEBEg4KBnNvdXJjZRgJIAEoCRItCgl0aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgYKBF9iaWRCBgoEX2Fza0INCgtfdm9sdW1lXzI0aEIVChNfY2hhbmdlXzI0aF9wZXJjZW50QgsKCV9oaWdoXzI0aEIKCghfbG93XzI0aCL5AQoQR2V0S2xpbmVzUmVxdWVzdBIRCgltYXJrZXRfaWQYASABKAkSEAoIaW50ZXJ2YWwYAiABKAkSEgoFbGltaXQYAyABKAVIAIgBARIzCgpzdGFydF90aW1lGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjEKCGVuZF90aW1lGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhMKBnNvdXJjZRgGIAEoCUgDiAEBQggKBl9saW1pdEINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWVCCQoHX3NvdXJjZSJzChFHZXRLbGluZXNSZXNwb25zZRIRCgltYXJrZXRfaWQYASABKAkSEAoIaW50ZXJ2YWwYAiABKAkSKQoGa2xpbmVzGAMgAygLMhkuc2lsdmFuYS5wcmljaW5nLnYxLktsaW5lEg4KBnNvdXJjZRgEIAEoCSLUAQoFS2xpbmUSLQoJb3Blbl90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRvcGVuGAIgASgBEgwKBGhpZ2gYAyABKAESCwoDbG93GAQgASgBEg0KBWNsb3NlGAUgASgBEg4KBnZvbHVtZRgGIAEoARIuCgpjbG9zZV90aW1lGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxxdW90ZV92b2x1bWUYCCABKAESDgoGdHJhZGVzGAkgASgFImYKE0dldE9yZGVyQm9va1JlcXVlc3QSEQoJbWFya2V0X2lkGAEgASgJEhIKBWRlcHRoGAIgASgFSACIAQESEwoGc291cmNlGAMgASgJSAGIAQFCCAoGX2RlcHRoQgkKB19zb3VyY2UizAEKFEdldE9yZGVyQm9va1Jlc3BvbnNlEhEKCW1hcmtldF9pZBgBIAEoCRIwCgRiaWRzGAIgAygLMiIuc2lsdmFuYS5wcmljaW5nLnYxLk9yZGVyQm9va0xldmVsEjAKBGFza3MYAyADKAsyIi5zaWx2YW5hLnByaWNpbmcudjEuT3JkZXJCb29rTGV2ZWwSLQoJdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIOCgZzb3VyY2UYBSABKAkiMQoOT3JkZXJCb29rTGV2ZWwSDQoFcHJpY2UYASABKAESEAoIcXVhbnRpdHkYAiABKAEijwEKE1N0cmVhbVByaWNlc1JlcXVlc3QSEgoKbWFya2V0X2lkcxgBIAMoCRIeChFpbmNsdWRlX29yZGVyYm9vaxgCIAEoCEgAiAEBEhsKDmluY2x1ZGVfdHJhZGVzGAMgASgISAGIAQFCFAoSX2luY2x1ZGVfb3JkZXJib29rQhEKD19pbmNsdWRlX3RyYWRlcyLMAgoLUHJpY2VVcGRhdGUSEQoJbWFya2V0X2lkGAEgASgJEg0KBXByaWNlGAIgASgBEhAKA2JpZBgDIAEoAUgAiAEBEhAKA2FzaxgEIAEoAUgBiAEBEhMKBnZvbHVtZRgFIAEoAUgCiAEBEg4KBnNvdXJjZRgGIAEoCRItCgl0aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjsKCW9yZGVyYm9vaxgIIAEoCzIjLnNpbHZhbmEucHJpY2luZy52MS5PcmRlckJvb2tVcGRhdGVIA4gBARIzCgV0cmFkZRgJIAEoCzIfLnNpbHZhbmEucHJpY2luZy52MS5UcmFkZVVwZGF0ZUgEiAEBQgYKBF9iaWRCBgoEX2Fza0IJCgdfdm9sdW1lQgwKCl9vcmRlcmJvb2tCCAoGX3RyYWRlInUKD09yZGVyQm9va1VwZGF0ZRIwCgRiaWRzGAEgAygLMiIuc2lsdmFuYS5wcmljaW5nLnYxLk9yZGVyQm9va0xldmVsEjAKBGFza3MYAiADKAsyIi5zaWx2YW5hLnByaWNpbmcudjEuT3JkZXJCb29rTGV2ZWwidQoLVHJhZGVVcGRhdGUSDQoFcHJpY2UYASABKAESEAoIcXVhbnRpdHkYAiABKAESFgoOaXNfYnV5ZXJfbWFrZXIYAyABKAgSLQoJdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJdChVHZXRQaXZvdFBvaW50c1JlcXVlc3QSEQoJbWFya2V0X2lkGAEgASgJEhEKCXRpbWVmcmFtZRgCIAEoCRITCgZzb3VyY2UYAyABKAlIAIgBAUIJCgdfc291cmNlIqADChZHZXRQaXZvdFBvaW50c1Jlc3BvbnNlEhEKCW1hcmtldF9pZBgBIAEoCRIwCgdjbGFzc2ljGAIgASgLMh8uc2lsdmFuYS5wcmljaW5nLnYxLlBpdm90UG9pbnRzEjcKCWZpYm9uYWNjaRgDIAEoCzIfLnNpbHZhbmEucHJpY2luZy52MS5QaXZvdFBvaW50c0gAiAEBEjcKCWNhbWFyaWxsYRgEIAEoCzIfLnNpbHZhbmEucHJpY2luZy52MS5QaXZvdFBvaW50c0gBiAEBEjQKBndvb2RpZRgFIAEoCzIfLnNpbHZhbmEucHJpY2luZy52MS5QaXZvdFBvaW50c0gCiAEBEjQKBmRlbWFyaxgGIAEoCzIfLnNpbHZhbmEucHJpY2luZy52MS5QaXZvdFBvaW50c0gDiAEBEjEKDWNhbGN1bGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9maWJvbmFjY2lCDAoKX2NhbWFyaWxsYUIJCgdfd29vZGllQgkKB19kZW1hcmsilAEKC1Bpdm90UG9pbnRzEg0KBXBpdm90GAEgASgBEgoKAnIxGAIgASgBEgoKAnIyGAMgASgBEgoKAnIzGAQgASgBEgoKAnMxGAUgASgBEgoKAnMyGAYgASgBEgoKAnMzGAcgASgBEg8KAnI0GAggASgBSACIAQESDwoCczQYCSABKAFIAYgBAUIFCgNfcjRCBQoDX3M0ItQDCg9QcmljZUZlZWRDb25maWcSPgoGZGlyZWN0GAEgAygLMi4uc2lsdmFuYS5wcmljaW5nLnYxLlByaWNlRmVlZENvbmZpZy5EaXJlY3RGZWVkEkkKCXN5bnRoZXRpYxgCIAEoCzIxLnNpbHZhbmEucHJpY2luZy52MS5QcmljZUZlZWRDb25maWcuU3ludGhldGljRmVlZEgAiAEBGowBCgpEaXJlY3RGZWVkEg4KBnNvdXJjZRgBIAEoCRIOCgZzeW1ib2wYAiABKAkSDwoHZW5hYmxlZBgDIAEoCBIQCghwcmlvcml0eRgEIAEoBRIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUILCglfbWV0YWRhdGEamAEKDVN5bnRoZXRpY0ZlZWQSDAoEdHlwZRgBIAEoCRITCgtiYXNlX21hcmtldBgCIAEoCRIUCgxxdW90ZV9tYXJrZXQYAyABKAkSEQoJb3BlcmF0aW9uGAQgASgJEi4KCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgsKCV9tZXRhZGF0YUIMCgpfc3ludGhldGljMsMECg5QcmljaW5nU2VydmljZRJVCghHZXRQcmljZRIjLnNpbHZhbmEucHJpY2luZy52MS5HZXRQcmljZVJlcXVlc3QaJC5zaWx2YW5hLnByaWNpbmcudjEuR2V0UHJpY2VSZXNwb25zZRJYCglHZXRQcmljZXMSJC5zaWx2YW5hLnByaWNpbmcudjEuR2V0UHJpY2VzUmVxdWVzdBolLnNpbHZhbmEucHJpY2luZy52MS5HZXRQcmljZXNSZXNwb25zZRJYCglHZXRLbGluZXMSJC5zaWx2YW5hLnByaWNpbmcudjEuR2V0S2xpbmVzUmVxdWVzdBolLnNpbHZhbmEucHJpY2luZy52MS5HZXRLbGluZXNSZXNwb25zZRJhCgxHZXRPcmRlckJvb2sSJy5zaWx2YW5hLnByaWNpbmcudjEuR2V0T3JkZXJCb29rUmVxdWVzdBooLnNpbHZhbmEucHJpY2luZy52MS5HZXRPcmRlckJvb2tSZXNwb25zZRJaCgxTdHJlYW1QcmljZXMSJy5zaWx2YW5hLnByaWNpbmcudjEuU3RyZWFtUHJpY2VzUmVxdWVzdBofLnNpbHZhbmEucHJpY2luZy52MS5QcmljZVVwZGF0ZTABEmcKDkdldFBpdm90UG9pbnRzEikuc2lsdmFuYS5wcmljaW5nLnYxLkdldFBpdm90UG9pbnRzUmVxdWVzdBoqLnNpbHZhbmEucHJpY2luZy52MS5HZXRQaXZvdFBvaW50c1Jlc3BvbnNlQjJaMGdpdGh1Yi5jb20vU2lsdmFuYU9uZS9jYW50b24tYWdlbnQvcHJvdG87cHJpY2luZ2IGcHJvdG8z", [file_google_protobuf_timestamp, file_google_protobuf_struct]);
|
|
10
|
+
/**
|
|
11
|
+
* Describes the message silvana.pricing.v1.GetPriceRequest.
|
|
12
|
+
* Use `create(GetPriceRequestSchema)` to create a new message.
|
|
13
|
+
*/
|
|
14
|
+
export const GetPriceRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 0);
|
|
15
|
+
/**
|
|
16
|
+
* Describes the message silvana.pricing.v1.GetPriceResponse.
|
|
17
|
+
* Use `create(GetPriceResponseSchema)` to create a new message.
|
|
18
|
+
*/
|
|
19
|
+
export const GetPriceResponseSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 1);
|
|
20
|
+
/**
|
|
21
|
+
* Describes the message silvana.pricing.v1.GetPricesRequest.
|
|
22
|
+
* Use `create(GetPricesRequestSchema)` to create a new message.
|
|
23
|
+
*/
|
|
24
|
+
export const GetPricesRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 2);
|
|
25
|
+
/**
|
|
26
|
+
* Describes the message silvana.pricing.v1.GetPricesResponse.
|
|
27
|
+
* Use `create(GetPricesResponseSchema)` to create a new message.
|
|
28
|
+
*/
|
|
29
|
+
export const GetPricesResponseSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 3);
|
|
30
|
+
/**
|
|
31
|
+
* Describes the message silvana.pricing.v1.Price.
|
|
32
|
+
* Use `create(PriceSchema)` to create a new message.
|
|
33
|
+
*/
|
|
34
|
+
export const PriceSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 4);
|
|
35
|
+
/**
|
|
36
|
+
* Describes the message silvana.pricing.v1.GetKlinesRequest.
|
|
37
|
+
* Use `create(GetKlinesRequestSchema)` to create a new message.
|
|
38
|
+
*/
|
|
39
|
+
export const GetKlinesRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 5);
|
|
40
|
+
/**
|
|
41
|
+
* Describes the message silvana.pricing.v1.GetKlinesResponse.
|
|
42
|
+
* Use `create(GetKlinesResponseSchema)` to create a new message.
|
|
43
|
+
*/
|
|
44
|
+
export const GetKlinesResponseSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 6);
|
|
45
|
+
/**
|
|
46
|
+
* Describes the message silvana.pricing.v1.Kline.
|
|
47
|
+
* Use `create(KlineSchema)` to create a new message.
|
|
48
|
+
*/
|
|
49
|
+
export const KlineSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 7);
|
|
50
|
+
/**
|
|
51
|
+
* Describes the message silvana.pricing.v1.GetOrderBookRequest.
|
|
52
|
+
* Use `create(GetOrderBookRequestSchema)` to create a new message.
|
|
53
|
+
*/
|
|
54
|
+
export const GetOrderBookRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 8);
|
|
55
|
+
/**
|
|
56
|
+
* Describes the message silvana.pricing.v1.GetOrderBookResponse.
|
|
57
|
+
* Use `create(GetOrderBookResponseSchema)` to create a new message.
|
|
58
|
+
*/
|
|
59
|
+
export const GetOrderBookResponseSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 9);
|
|
60
|
+
/**
|
|
61
|
+
* Describes the message silvana.pricing.v1.OrderBookLevel.
|
|
62
|
+
* Use `create(OrderBookLevelSchema)` to create a new message.
|
|
63
|
+
*/
|
|
64
|
+
export const OrderBookLevelSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 10);
|
|
65
|
+
/**
|
|
66
|
+
* Describes the message silvana.pricing.v1.StreamPricesRequest.
|
|
67
|
+
* Use `create(StreamPricesRequestSchema)` to create a new message.
|
|
68
|
+
*/
|
|
69
|
+
export const StreamPricesRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 11);
|
|
70
|
+
/**
|
|
71
|
+
* Describes the message silvana.pricing.v1.PriceUpdate.
|
|
72
|
+
* Use `create(PriceUpdateSchema)` to create a new message.
|
|
73
|
+
*/
|
|
74
|
+
export const PriceUpdateSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 12);
|
|
75
|
+
/**
|
|
76
|
+
* Describes the message silvana.pricing.v1.OrderBookUpdate.
|
|
77
|
+
* Use `create(OrderBookUpdateSchema)` to create a new message.
|
|
78
|
+
*/
|
|
79
|
+
export const OrderBookUpdateSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 13);
|
|
80
|
+
/**
|
|
81
|
+
* Describes the message silvana.pricing.v1.TradeUpdate.
|
|
82
|
+
* Use `create(TradeUpdateSchema)` to create a new message.
|
|
83
|
+
*/
|
|
84
|
+
export const TradeUpdateSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 14);
|
|
85
|
+
/**
|
|
86
|
+
* Describes the message silvana.pricing.v1.GetPivotPointsRequest.
|
|
87
|
+
* Use `create(GetPivotPointsRequestSchema)` to create a new message.
|
|
88
|
+
*/
|
|
89
|
+
export const GetPivotPointsRequestSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 15);
|
|
90
|
+
/**
|
|
91
|
+
* Describes the message silvana.pricing.v1.GetPivotPointsResponse.
|
|
92
|
+
* Use `create(GetPivotPointsResponseSchema)` to create a new message.
|
|
93
|
+
*/
|
|
94
|
+
export const GetPivotPointsResponseSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 16);
|
|
95
|
+
/**
|
|
96
|
+
* Describes the message silvana.pricing.v1.PivotPoints.
|
|
97
|
+
* Use `create(PivotPointsSchema)` to create a new message.
|
|
98
|
+
*/
|
|
99
|
+
export const PivotPointsSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 17);
|
|
100
|
+
/**
|
|
101
|
+
* Describes the message silvana.pricing.v1.PriceFeedConfig.
|
|
102
|
+
* Use `create(PriceFeedConfigSchema)` to create a new message.
|
|
103
|
+
*/
|
|
104
|
+
export const PriceFeedConfigSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 18);
|
|
105
|
+
/**
|
|
106
|
+
* Describes the message silvana.pricing.v1.PriceFeedConfig.DirectFeed.
|
|
107
|
+
* Use `create(PriceFeedConfig_DirectFeedSchema)` to create a new message.
|
|
108
|
+
*/
|
|
109
|
+
export const PriceFeedConfig_DirectFeedSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 18, 0);
|
|
110
|
+
/**
|
|
111
|
+
* Describes the message silvana.pricing.v1.PriceFeedConfig.SyntheticFeed.
|
|
112
|
+
* Use `create(PriceFeedConfig_SyntheticFeedSchema)` to create a new message.
|
|
113
|
+
*/
|
|
114
|
+
export const PriceFeedConfig_SyntheticFeedSchema = /*@__PURE__*/ messageDesc(file_proto_silvana_pricing_v1_pricing, 18, 1);
|
|
115
|
+
/**
|
|
116
|
+
* @generated from service silvana.pricing.v1.PricingService
|
|
117
|
+
*/
|
|
118
|
+
export const PricingService = /*@__PURE__*/ serviceDesc(file_proto_silvana_pricing_v1_pricing, 0);
|
|
119
|
+
//# sourceMappingURL=pricing_pb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing_pb.js","sourceRoot":"","sources":["../../../../../../src/proto/silvana/pricing/v1/pricing_pb.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silvana-one/orderbook",
|
|
3
3
|
"description": "Silvana Orderbook Client",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.10",
|
|
5
5
|
"author": "DFST",
|
|
6
6
|
"bugs": "https://github.com/SilvanaOne/silvana-lib/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -49,7 +49,10 @@
|
|
|
49
49
|
},
|
|
50
50
|
"repository": "SilvanaOne/silvana-lib.git",
|
|
51
51
|
"scripts": {
|
|
52
|
-
"proto": "rm -rf src/proto && cp -R ../../../canton-agent/proto/silvana/orderbook proto/silvana && buf generate --template buf.gen.orderbook.yaml",
|
|
52
|
+
"proto:orderbook": "rm -rf src/proto/silvana/orderbook && mkdir -p proto/silvana && cp -R ../../../canton-agent/proto/silvana/orderbook proto/silvana && buf generate --template buf.gen.orderbook.yaml",
|
|
53
|
+
"proto:pricing": "rm -rf src/proto/silvana/pricing && mkdir -p proto/silvana && cp -R ../../../canton-agent/proto/silvana/pricing proto/silvana && buf generate --template buf.gen.pricing.yaml",
|
|
54
|
+
"proto:news": "rm -rf src/proto/silvana/news && mkdir -p proto/silvana && cp -R ../../../canton-agent/proto/silvana/news proto/silvana && buf generate --template buf.gen.news.yaml",
|
|
55
|
+
"proto": "npm run proto:orderbook && npm run proto:pricing && npm run proto:news",
|
|
53
56
|
"build": "rm -rf dist && tsc && tsc --build tsconfig.web.json && node build-cjs.js",
|
|
54
57
|
"release": "npm publish --access public",
|
|
55
58
|
"test": "NODE_NO_WARNINGS=1 node --loader=ts-node/esm --enable-source-maps -r dotenv/config --require dotenv/config --env-file=.env --test"
|
package/src/index.ts
CHANGED
package/src/news.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createGrpcTransport } from "@connectrpc/connect-node";
|
|
2
|
+
import { createClient, ConnectError } from "@connectrpc/connect";
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
|
|
5
|
+
// Export all types and schemas from the generated protobuf file
|
|
6
|
+
export * from "./proto/silvana/news/v1/news_pb.js";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
NewsService,
|
|
10
|
+
type GetNewsResponse,
|
|
11
|
+
GetNewsRequestSchema,
|
|
12
|
+
StreamNewsRequestSchema,
|
|
13
|
+
} from "./proto/silvana/news/v1/news_pb.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Custom error class for News client errors
|
|
17
|
+
*/
|
|
18
|
+
export class NewsError extends Error {
|
|
19
|
+
constructor(
|
|
20
|
+
message: string,
|
|
21
|
+
public code?: string,
|
|
22
|
+
public details?: any
|
|
23
|
+
) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = 'NewsError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* News client configuration
|
|
31
|
+
*/
|
|
32
|
+
export interface NewsClientConfig {
|
|
33
|
+
/** Base URL of the news service (e.g., "http://localhost:50054") */
|
|
34
|
+
baseUrl: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* News client for interacting with the Silvana News Service
|
|
39
|
+
*/
|
|
40
|
+
export class NewsClient {
|
|
41
|
+
private client: ReturnType<typeof createClient<typeof NewsService>>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new NewsClient instance
|
|
45
|
+
* @param config Client configuration
|
|
46
|
+
*/
|
|
47
|
+
constructor(config: NewsClientConfig) {
|
|
48
|
+
const transport = createGrpcTransport({
|
|
49
|
+
baseUrl: config.baseUrl,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
this.client = createClient(NewsService, transport);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Wraps async calls with error handling
|
|
57
|
+
*/
|
|
58
|
+
private async wrapCall<T>(
|
|
59
|
+
operation: () => Promise<T>,
|
|
60
|
+
operationName: string
|
|
61
|
+
): Promise<T> {
|
|
62
|
+
try {
|
|
63
|
+
return await operation();
|
|
64
|
+
} catch (error) {
|
|
65
|
+
if (error instanceof ConnectError) {
|
|
66
|
+
throw new NewsError(
|
|
67
|
+
`${operationName} failed: ${error.message}`,
|
|
68
|
+
String(error.code),
|
|
69
|
+
error.metadata
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
throw new NewsError(
|
|
73
|
+
`${operationName} failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
74
|
+
'UNKNOWN',
|
|
75
|
+
error
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Get news articles for specific cryptocurrencies
|
|
82
|
+
*/
|
|
83
|
+
async getNews(params?: {
|
|
84
|
+
tokens?: string[];
|
|
85
|
+
limit?: number;
|
|
86
|
+
language?: string;
|
|
87
|
+
hours?: number;
|
|
88
|
+
}): Promise<GetNewsResponse> {
|
|
89
|
+
return await this.wrapCall(async () => {
|
|
90
|
+
const request = create(GetNewsRequestSchema, params || {});
|
|
91
|
+
return await this.client.getNews(request);
|
|
92
|
+
}, 'getNews');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Stream real-time news updates
|
|
97
|
+
*/
|
|
98
|
+
streamNews(params?: {
|
|
99
|
+
tokens?: string[];
|
|
100
|
+
updateInterval?: number;
|
|
101
|
+
}) {
|
|
102
|
+
const request = create(StreamNewsRequestSchema, params || {});
|
|
103
|
+
return this.client.streamNews(request);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -18,6 +18,10 @@ import {
|
|
|
18
18
|
type GetSettlementsResponse,
|
|
19
19
|
type SubmitOrderResponse,
|
|
20
20
|
type CancelOrderResponse,
|
|
21
|
+
type CreatePartyResponse,
|
|
22
|
+
type CreateInstrumentResponse,
|
|
23
|
+
type CreateMarketResponse,
|
|
24
|
+
type UpdateMarketPriceFeedsResponse,
|
|
21
25
|
GetOrdersRequestSchema,
|
|
22
26
|
GetOrderbookDepthRequestSchema,
|
|
23
27
|
GetSettlementProposalsRequestSchema,
|
|
@@ -28,6 +32,10 @@ import {
|
|
|
28
32
|
GetSettlementsRequestSchema,
|
|
29
33
|
SubmitOrderRequestSchema,
|
|
30
34
|
CancelOrderRequestSchema,
|
|
35
|
+
CreatePartyRequestSchema,
|
|
36
|
+
CreateInstrumentRequestSchema,
|
|
37
|
+
CreateMarketRequestSchema,
|
|
38
|
+
UpdateMarketPriceFeedsRequestSchema,
|
|
31
39
|
SubscribeOrderbookRequestSchema,
|
|
32
40
|
SubscribeOrdersRequestSchema,
|
|
33
41
|
SubscribeSettlementsRequestSchema,
|
|
@@ -353,4 +361,87 @@ export class OrderbookClient {
|
|
|
353
361
|
});
|
|
354
362
|
return this.client.subscribeSettlements(request);
|
|
355
363
|
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Create a new party (admin operation)
|
|
367
|
+
*/
|
|
368
|
+
async createParty(params: {
|
|
369
|
+
partyId: string;
|
|
370
|
+
partyName: string;
|
|
371
|
+
partyType: string;
|
|
372
|
+
userServiceCid?: string;
|
|
373
|
+
operatorConfigCid?: string;
|
|
374
|
+
metadata?: any;
|
|
375
|
+
}): Promise<CreatePartyResponse> {
|
|
376
|
+
return await this.wrapCall(async () => {
|
|
377
|
+
const request = create(CreatePartyRequestSchema, {
|
|
378
|
+
auth: this.createAuth(),
|
|
379
|
+
...params,
|
|
380
|
+
});
|
|
381
|
+
return await this.client.createParty(request);
|
|
382
|
+
}, 'createParty');
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Create a new instrument (admin operation)
|
|
387
|
+
*/
|
|
388
|
+
async createInstrument(params: {
|
|
389
|
+
instrumentId: string;
|
|
390
|
+
instrumentType: string;
|
|
391
|
+
name: string;
|
|
392
|
+
symbol: string;
|
|
393
|
+
description?: string;
|
|
394
|
+
issuer?: string;
|
|
395
|
+
registry?: string;
|
|
396
|
+
metadata?: any;
|
|
397
|
+
}): Promise<CreateInstrumentResponse> {
|
|
398
|
+
return await this.wrapCall(async () => {
|
|
399
|
+
const request = create(CreateInstrumentRequestSchema, {
|
|
400
|
+
auth: this.createAuth(),
|
|
401
|
+
...params,
|
|
402
|
+
});
|
|
403
|
+
return await this.client.createInstrument(request);
|
|
404
|
+
}, 'createInstrument');
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Create a new market (admin operation)
|
|
409
|
+
*/
|
|
410
|
+
async createMarket(params: {
|
|
411
|
+
marketId: string;
|
|
412
|
+
marketType: MarketType;
|
|
413
|
+
baseInstrument?: string;
|
|
414
|
+
quoteInstrument?: string;
|
|
415
|
+
minOrderSize: string;
|
|
416
|
+
maxOrderSize?: string;
|
|
417
|
+
tickSize: string;
|
|
418
|
+
makerFee: string;
|
|
419
|
+
takerFee: string;
|
|
420
|
+
metadata?: any;
|
|
421
|
+
priceFeeds?: any;
|
|
422
|
+
}): Promise<CreateMarketResponse> {
|
|
423
|
+
return await this.wrapCall(async () => {
|
|
424
|
+
const request = create(CreateMarketRequestSchema, {
|
|
425
|
+
auth: this.createAuth(),
|
|
426
|
+
...params,
|
|
427
|
+
});
|
|
428
|
+
return await this.client.createMarket(request);
|
|
429
|
+
}, 'createMarket');
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Update market price feeds (admin operation)
|
|
434
|
+
*/
|
|
435
|
+
async updateMarketPriceFeeds(params: {
|
|
436
|
+
marketId: string;
|
|
437
|
+
priceFeeds: any;
|
|
438
|
+
}): Promise<UpdateMarketPriceFeedsResponse> {
|
|
439
|
+
return await this.wrapCall(async () => {
|
|
440
|
+
const request = create(UpdateMarketPriceFeedsRequestSchema, {
|
|
441
|
+
auth: this.createAuth(),
|
|
442
|
+
...params,
|
|
443
|
+
});
|
|
444
|
+
return await this.client.updateMarketPriceFeeds(request);
|
|
445
|
+
}, 'updateMarketPriceFeeds');
|
|
446
|
+
}
|
|
356
447
|
}
|
package/src/pricing.ts
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { createGrpcTransport } from "@connectrpc/connect-node";
|
|
2
|
+
import { createClient, ConnectError } from "@connectrpc/connect";
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import { TimestampSchema } from "@bufbuild/protobuf/wkt";
|
|
5
|
+
|
|
6
|
+
// Export all types and schemas from the generated protobuf file
|
|
7
|
+
export * from "./proto/silvana/pricing/v1/pricing_pb.js";
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
PricingService,
|
|
11
|
+
type GetPriceResponse,
|
|
12
|
+
type GetPricesResponse,
|
|
13
|
+
type GetKlinesResponse,
|
|
14
|
+
type GetOrderBookResponse,
|
|
15
|
+
type GetPivotPointsResponse,
|
|
16
|
+
GetPriceRequestSchema,
|
|
17
|
+
GetPricesRequestSchema,
|
|
18
|
+
GetKlinesRequestSchema,
|
|
19
|
+
GetOrderBookRequestSchema,
|
|
20
|
+
StreamPricesRequestSchema,
|
|
21
|
+
GetPivotPointsRequestSchema,
|
|
22
|
+
} from "./proto/silvana/pricing/v1/pricing_pb.js";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Converts a Date to a Timestamp message
|
|
26
|
+
*/
|
|
27
|
+
function dateToTimestamp(date: Date) {
|
|
28
|
+
const seconds = BigInt(Math.floor(date.getTime() / 1000));
|
|
29
|
+
const nanos = (date.getTime() % 1000) * 1000000;
|
|
30
|
+
return create(TimestampSchema, { seconds, nanos });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Custom error class for Pricing client errors
|
|
35
|
+
*/
|
|
36
|
+
export class PricingError extends Error {
|
|
37
|
+
constructor(
|
|
38
|
+
message: string,
|
|
39
|
+
public code?: string,
|
|
40
|
+
public details?: any
|
|
41
|
+
) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.name = 'PricingError';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Pricing client configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface PricingClientConfig {
|
|
51
|
+
/** Base URL of the pricing service (e.g., "http://localhost:50053") */
|
|
52
|
+
baseUrl: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Pricing client for interacting with the Silvana Pricing Service
|
|
57
|
+
*/
|
|
58
|
+
export class PricingClient {
|
|
59
|
+
private client: ReturnType<typeof createClient<typeof PricingService>>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Creates a new PricingClient instance
|
|
63
|
+
* @param config Client configuration
|
|
64
|
+
*/
|
|
65
|
+
constructor(config: PricingClientConfig) {
|
|
66
|
+
const transport = createGrpcTransport({
|
|
67
|
+
baseUrl: config.baseUrl,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
this.client = createClient(PricingService, transport);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Wraps async calls with error handling
|
|
75
|
+
*/
|
|
76
|
+
private async wrapCall<T>(
|
|
77
|
+
operation: () => Promise<T>,
|
|
78
|
+
operationName: string
|
|
79
|
+
): Promise<T> {
|
|
80
|
+
try {
|
|
81
|
+
return await operation();
|
|
82
|
+
} catch (error) {
|
|
83
|
+
if (error instanceof ConnectError) {
|
|
84
|
+
throw new PricingError(
|
|
85
|
+
`${operationName} failed: ${error.message}`,
|
|
86
|
+
String(error.code),
|
|
87
|
+
error.metadata
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
throw new PricingError(
|
|
91
|
+
`${operationName} failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
92
|
+
'UNKNOWN',
|
|
93
|
+
error
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Get current price for a market
|
|
100
|
+
*/
|
|
101
|
+
async getPrice(params: {
|
|
102
|
+
marketId: string;
|
|
103
|
+
source?: string;
|
|
104
|
+
}): Promise<GetPriceResponse> {
|
|
105
|
+
return await this.wrapCall(async () => {
|
|
106
|
+
const request = create(GetPriceRequestSchema, params);
|
|
107
|
+
return await this.client.getPrice(request);
|
|
108
|
+
}, 'getPrice');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get multiple market prices
|
|
113
|
+
*/
|
|
114
|
+
async getPrices(params: {
|
|
115
|
+
marketIds: string[];
|
|
116
|
+
source?: string;
|
|
117
|
+
}): Promise<GetPricesResponse> {
|
|
118
|
+
return await this.wrapCall(async () => {
|
|
119
|
+
const request = create(GetPricesRequestSchema, params);
|
|
120
|
+
return await this.client.getPrices(request);
|
|
121
|
+
}, 'getPrices');
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Get kline/candle data
|
|
126
|
+
*/
|
|
127
|
+
async getKlines(params: {
|
|
128
|
+
marketId: string;
|
|
129
|
+
interval: string;
|
|
130
|
+
limit?: number;
|
|
131
|
+
startTime?: Date;
|
|
132
|
+
endTime?: Date;
|
|
133
|
+
source?: string;
|
|
134
|
+
}): Promise<GetKlinesResponse> {
|
|
135
|
+
return await this.wrapCall(async () => {
|
|
136
|
+
const request = create(GetKlinesRequestSchema, {
|
|
137
|
+
marketId: params.marketId,
|
|
138
|
+
interval: params.interval,
|
|
139
|
+
limit: params.limit,
|
|
140
|
+
startTime: params.startTime ? dateToTimestamp(params.startTime) : undefined,
|
|
141
|
+
endTime: params.endTime ? dateToTimestamp(params.endTime) : undefined,
|
|
142
|
+
source: params.source,
|
|
143
|
+
});
|
|
144
|
+
return await this.client.getKlines(request);
|
|
145
|
+
}, 'getKlines');
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Get order book snapshot
|
|
150
|
+
*/
|
|
151
|
+
async getOrderBook(params: {
|
|
152
|
+
marketId: string;
|
|
153
|
+
depth?: number;
|
|
154
|
+
source?: string;
|
|
155
|
+
}): Promise<GetOrderBookResponse> {
|
|
156
|
+
return await this.wrapCall(async () => {
|
|
157
|
+
const request = create(GetOrderBookRequestSchema, params);
|
|
158
|
+
return await this.client.getOrderBook(request);
|
|
159
|
+
}, 'getOrderBook');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Stream real-time price updates
|
|
164
|
+
*/
|
|
165
|
+
streamPrices(params: {
|
|
166
|
+
marketIds: string[];
|
|
167
|
+
includeOrderbook?: boolean;
|
|
168
|
+
includeTrades?: boolean;
|
|
169
|
+
}) {
|
|
170
|
+
const request = create(StreamPricesRequestSchema, params);
|
|
171
|
+
return this.client.streamPrices(request);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get calculated pivot points
|
|
176
|
+
*/
|
|
177
|
+
async getPivotPoints(params: {
|
|
178
|
+
marketId: string;
|
|
179
|
+
timeframe: string;
|
|
180
|
+
source?: string;
|
|
181
|
+
}): Promise<GetPivotPointsResponse> {
|
|
182
|
+
return await this.wrapCall(async () => {
|
|
183
|
+
const request = create(GetPivotPointsRequestSchema, params);
|
|
184
|
+
return await this.client.getPivotPoints(request);
|
|
185
|
+
}, 'getPivotPoints');
|
|
186
|
+
}
|
|
187
|
+
}
|