-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathmock.cairo
More file actions
77 lines (63 loc) · 2.5 KB
/
Copy pathmock.cairo
File metadata and controls
77 lines (63 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use staking::pool::pool_member_balance_trace::trace::{PoolMemberBalance, PoolMemberCheckpoint};
use staking::types::Epoch;
#[starknet::interface]
pub trait IMockTrace<TContractState> {
fn insert(
ref self: TContractState, key: Epoch, value: PoolMemberBalance,
) -> (PoolMemberBalance, PoolMemberBalance);
fn last(self: @TContractState) -> (Epoch, PoolMemberBalance);
fn second_last(self: @TContractState) -> (Epoch, PoolMemberBalance);
fn length(self: @TContractState) -> u64;
fn last_mutable(ref self: TContractState) -> (Epoch, PoolMemberBalance);
fn is_non_empty(self: @TContractState) -> bool;
fn is_non_empty_mutable(ref self: TContractState) -> bool;
fn length_mutable(ref self: TContractState) -> u64;
fn at(self: @TContractState, pos: u64) -> PoolMemberCheckpoint;
fn third_last(self: @TContractState) -> (Epoch, PoolMemberBalance);
}
#[starknet::contract]
pub mod MockTrace {
use staking::pool::pool_member_balance_trace::trace::{
MutablePoolMemberBalanceTraceTrait, PoolMemberBalanceTrace, PoolMemberBalanceTraceTrait,
};
use super::{Epoch, PoolMemberBalance, PoolMemberCheckpoint};
#[storage]
struct Storage {
trace: PoolMemberBalanceTrace,
}
#[abi(embed_v0)]
impl MockTraceImpl of super::IMockTrace<ContractState> {
fn insert(
ref self: ContractState, key: Epoch, value: PoolMemberBalance,
) -> (PoolMemberBalance, PoolMemberBalance) {
self.trace.insert(:key, :value)
}
fn last(self: @ContractState) -> (Epoch, PoolMemberBalance) {
self.trace.last()
}
fn second_last(self: @ContractState) -> (Epoch, PoolMemberBalance) {
self.trace.second_last()
}
fn length(self: @ContractState) -> u64 {
self.trace.length()
}
fn last_mutable(ref self: ContractState) -> (Epoch, PoolMemberBalance) {
self.trace.last()
}
fn length_mutable(ref self: ContractState) -> u64 {
self.trace.length()
}
fn is_non_empty(self: @ContractState) -> bool {
self.trace.is_non_empty()
}
fn is_non_empty_mutable(ref self: ContractState) -> bool {
self.trace.is_non_empty()
}
fn at(self: @ContractState, pos: u64) -> PoolMemberCheckpoint {
self.trace.at(:pos)
}
fn third_last(self: @ContractState) -> (Epoch, PoolMemberBalance) {
self.trace.third_last()
}
}
}