# ReplicatingStrategy

## `Deposit`

Registers a deposit to the strategy.

* **Caller**: depositor
* **Market ID**: market id (see [above](#createmarket))
* **Base Amount:** base tokens deposited
* **Quote Amount:** quote tokens deposited
* **Shares:** number of pool shares minted and received

```rust
#[derive(Drop, starknet::Event)]
struct Deposit {
    #[key]
    caller: ContractAddress,
    #[key]
    market_id: felt252,
    base_amount: u256,
    quote_amount: u256,
    shares: u256,
}
```

## `Withdraw`

* **Caller**: depositor
* **Market ID**: market id (see [above](#createmarket))
* **Base Amount:** base tokens withdrawn
* **Quote Amount:** quote tokens withdrawn
* **Shares:** number of shares withdrawn and burned

```rust
#[derive(Drop, starknet::Event)]
struct Deposit {
    #[key]
    caller: ContractAddress,
    #[key]
    market_id: felt252,
    base_amount: u256,
    quote_amount: u256,
    shares: u256,
}
```
