@@ -15,6 +15,18 @@ use tg_utils::Expiration;
15
15
const MAX_LIMIT : u32 = 100 ;
16
16
const DEFAULT_LIMIT : u32 = 30 ;
17
17
18
+ #[ derive( Clone , Debug , PartialEq , Eq ) ]
19
+ pub ( crate ) struct TokenReleaseInfo {
20
+ pub addr : Addr ,
21
+ pub amount : Uint128 ,
22
+ }
23
+
24
+ #[ derive( Clone , Debug , PartialEq , Eq ) ]
25
+ pub ( crate ) struct ReleaseData {
26
+ pub liquid_releases : Vec < TokenReleaseInfo > ,
27
+ pub vesting_releases : Vec < TokenReleaseInfo > ,
28
+ }
29
+
18
30
#[ derive( Serialize , Deserialize , Clone , Debug , PartialEq , Eq , JsonSchema ) ]
19
31
pub struct Claim {
20
32
/// Address owning the claim
@@ -154,14 +166,14 @@ impl<'a> Claims<'a> {
154
166
155
167
/// This iterates over all mature claims of any addresses, and removes them. Up to `limit`
156
168
/// claims would be processed, starting from the oldest. It removes the finished claims and
157
- /// returns vector of pairs: `(addr, amount)`, representing amount of tokens to be released to particular addresses
158
- # [ allow ( clippy :: type_complexity ) ]
159
- pub fn claim_expired (
169
+ /// returns a pair of vectors representing the amounts of liquid and vesting tokens
170
+ /// to be released to particular addresses.
171
+ pub ( crate ) fn claim_expired (
160
172
& self ,
161
173
storage : & mut dyn Storage ,
162
174
block : & BlockInfo ,
163
175
limit : impl Into < Option < u64 > > ,
164
- ) -> StdResult < ( Vec < ( Addr , Uint128 ) > , Vec < ( Addr , Uint128 ) > ) > {
176
+ ) -> StdResult < ReleaseData > {
165
177
let claims = self
166
178
. claims
167
179
. idx
@@ -183,7 +195,10 @@ impl<'a> Claims<'a> {
183
195
// is stabilized [https://github.com/rust-lang/rust/issues/80552]
184
196
. group_by ( |claim| & claim. addr )
185
197
. into_iter ( )
186
- . map ( |( addr, group) | ( addr. clone ( ) , group. map ( |claim| claim. amount ) . sum ( ) ) )
198
+ . map ( |( addr, group) | TokenReleaseInfo {
199
+ addr : addr. clone ( ) ,
200
+ amount : group. map ( |claim| claim. amount ) . sum ( ) ,
201
+ } )
187
202
. collect ( ) ;
188
203
189
204
let vesting_releases = claims
@@ -192,19 +207,22 @@ impl<'a> Claims<'a> {
192
207
// is stabilized [https://github.com/rust-lang/rust/issues/80552]
193
208
. group_by ( |claim| & claim. addr )
194
209
. into_iter ( )
195
- . map ( |( addr, group) | {
196
- (
197
- addr. clone ( ) ,
198
- group
199
- . map ( |claim| claim. vesting_amount . unwrap_or_default ( ) )
200
- . sum ( ) ,
201
- )
210
+ . map ( |( addr, group) | TokenReleaseInfo {
211
+ addr : addr. clone ( ) ,
212
+ amount : group
213
+ . map ( |claim| claim. vesting_amount . unwrap_or_default ( ) )
214
+ . sum ( ) ,
202
215
} )
203
216
. collect ( ) ;
204
217
205
218
self . release_claims ( storage, claims) ?;
206
219
207
- Ok ( ( liquid_releases, vesting_releases) )
220
+ let release_data = ReleaseData {
221
+ liquid_releases,
222
+ vesting_releases,
223
+ } ;
224
+
225
+ Ok ( release_data)
208
226
}
209
227
210
228
/// Processes claims filtering those which are to be released. Returns vector of claims to be
0 commit comments