@@ -7,6 +7,7 @@ use serde::{Deserialize, Deserializer, Serialize};
7
7
use serde_hex:: { SerHex , StrictPfx } ;
8
8
9
9
use crate :: big_num:: BigNum ;
10
+ use crate :: sentry:: Event ;
10
11
use crate :: { AdUnit , EventSubmission , TargetingTag , ValidatorDesc , ValidatorId } ;
11
12
use hex:: { FromHex , FromHexError } ;
12
13
use std:: ops:: Deref ;
@@ -145,6 +146,26 @@ pub struct ChannelSpec {
145
146
/// An array of AdUnit (optional)
146
147
#[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
147
148
pub ad_units : Vec < AdUnit > ,
149
+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
150
+ pub price_multiplication_rules : Vec < PriceMultiplicationRules > ,
151
+ pub price_dynamic_adjustment : bool ,
152
+ }
153
+
154
+ #[ derive( Serialize , Deserialize , Debug , Clone ) ]
155
+ #[ serde( rename_all = "camelCase" ) ]
156
+ pub struct PriceMultiplicationRules {
157
+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
158
+ multiplier : Option < f64 > ,
159
+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
160
+ amount : Option < BigNum > ,
161
+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
162
+ ev_type : Vec < Event > ,
163
+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
164
+ publisher : Vec < ValidatorId > ,
165
+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
166
+ os_type : Vec < String > ,
167
+ #[ serde( default , skip_serializing_if = "Vec::is_empty" ) ]
168
+ country : Vec < String > ,
148
169
}
149
170
150
171
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
@@ -362,3 +383,5 @@ pub mod postgres {
362
383
to_sql_checked ! ( ) ;
363
384
}
364
385
}
386
+
387
+ pub fn match_price ( ) { }
0 commit comments