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
77
78
79
80
use anchor_lang::prelude::*;

use crate::state::Round;

#[event]
pub struct RoundCreatedEvent {
    pub round_addr: Pubkey,
    pub round: Round,
}

#[event]
pub struct ContributeEvent {
    pub round: Pubkey,
    pub user: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub amount: u64,
}

#[event]
pub struct WithdrawEvent {
    pub round: Pubkey,
    pub user: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub amount: u64,
    pub reason: WithdrawReason,
}

#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)]
pub enum WithdrawReason {
    UserInitiated,
    RoundRejected,
    HeirTimeout,
}

#[event]
pub struct RoundAcceptedEvent {
    pub round: Pubkey,
    pub heir: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub bid_amount: u64,
    pub offer_amount: u64,
}

#[event]
pub struct RoundRejectedEvent {
    pub round: Pubkey,
    pub heir: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub offer_amount: u64,
}

#[event]
pub struct RedeemEvent {
    pub round: Pubkey,
    pub user: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub amount: u64,
}

#[event]
pub struct RoundCancelledEvent {
    pub round: Pubkey,
    pub heir: Pubkey,
    pub bid_mint: Pubkey,
    pub offer_mint: Pubkey,
    pub bid_amount: u64,
    pub offer_amount: u64,
}

#[event]
pub struct RoundClosedEvent {
    pub round_addr: Pubkey,
    pub round: Round,
    pub returned_offer_amount: u64,
}