1- import { Convert , PriceFeed as JsonPriceFeed } from "./schemas/PriceFeed" ;
1+ import {
2+ Convert ,
3+ PriceFeed as JsonPriceFeed ,
4+ PriceFeedMetadata as JsonPriceFeedMetadata ,
5+ } from "./schemas/PriceFeed" ;
26
37export type UnixTimestamp = number ;
48export type DurationInSeconds = number ;
@@ -62,24 +66,46 @@ export class PriceFeedMetadata {
6266 /**
6367 * Attestation time of the price
6468 */
65- attestation_time : number ;
69+ attestationTime : number ;
6670 /**
6771 * Chain of the emitter
6872 */
69- emitter_chain : number ;
73+ emitterChain : number ;
7074 /**
7175 * Sequence number of the price
7276 */
73- sequence_number : number ;
77+ sequenceNumber : number ;
7478
7579 constructor ( metadata : {
76- attestation_time : number ;
77- emitter_chain : number ;
78- sequence_number : number ;
80+ attestationTime : number ;
81+ emitterChain : number ;
82+ sequenceNumber : number ;
7983 } ) {
80- this . attestation_time = metadata . attestation_time ;
81- this . emitter_chain = metadata . emitter_chain ;
82- this . sequence_number = metadata . sequence_number ;
84+ this . attestationTime = metadata . attestationTime ;
85+ this . emitterChain = metadata . emitterChain ;
86+ this . sequenceNumber = metadata . sequenceNumber ;
87+ }
88+
89+ static fromJson ( json : any ) : PriceFeedMetadata | undefined {
90+ if ( json === undefined ) {
91+ return undefined ;
92+ }
93+ const jsonFeed : JsonPriceFeedMetadata = Convert . toPriceFeedMetadata ( json ) ;
94+ return new PriceFeedMetadata ( {
95+ attestationTime : jsonFeed . attestation_time ,
96+ emitterChain : jsonFeed . emitter_chain ,
97+ sequenceNumber : jsonFeed . sequence_number ,
98+ } ) ;
99+ }
100+
101+ toJson ( ) : any {
102+ const jsonFeed : JsonPriceFeedMetadata = {
103+ attestation_time : this . attestationTime ,
104+ emitter_chain : this . emitterChain ,
105+ sequence_number : this . sequenceNumber ,
106+ } ;
107+ // this is done to avoid sending undefined values to the server
108+ return Convert . priceFeedMetadataToJson ( jsonFeed ) ;
83109 }
84110}
85111
@@ -194,7 +220,7 @@ export class PriceFeed {
194220 expo : jsonFeed . expo ,
195221 id : jsonFeed . id ,
196222 maxNumPublishers : jsonFeed . max_num_publishers ,
197- metadata : jsonFeed . metadata ,
223+ metadata : PriceFeedMetadata . fromJson ( jsonFeed . metadata ) ,
198224 numPublishers : jsonFeed . num_publishers ,
199225 prevConf : jsonFeed . prev_conf ,
200226 prevPrice : jsonFeed . prev_price ,
@@ -214,7 +240,7 @@ export class PriceFeed {
214240 expo : this . expo ,
215241 id : this . id ,
216242 max_num_publishers : this . maxNumPublishers ,
217- metadata : this . metadata ,
243+ metadata : this . metadata ?. toJson ( ) ,
218244 num_publishers : this . numPublishers ,
219245 prev_conf : this . prevConf ,
220246 prev_price : this . prevPrice ,
@@ -224,7 +250,6 @@ export class PriceFeed {
224250 publish_time : this . publishTime ,
225251 status : this . status ,
226252 } ;
227- // this is done to avoid sending undefined values to the server
228253 return Convert . priceFeedToJson ( jsonFeed ) ;
229254 }
230255
@@ -318,13 +343,10 @@ export class PriceFeed {
318343 /**
319344 * Get the price feed metadata.
320345 *
321- * @returns a struct containing the attestation time, emitter chain, and the sequence number.
346+ * @returns a struct containing the attestation time, emitter chain, and the sequence number.
322347 * Returns `undefined` if metadata is currently unavailable.
323348 */
324349 getMetadata ( ) : PriceFeedMetadata | undefined {
325- if ( this . metadata === undefined ) {
326- return undefined ;
327- }
328- return new PriceFeedMetadata ( this . metadata ) ;
350+ return this . metadata ;
329351 }
330352}
0 commit comments