> For the complete documentation index, see [llms.txt](https://docs.artinals.com/artinals-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.artinals.com/artinals-protocol/market-module/event-emissions.md).

# Event Emissions

This section covers how the `artinals_markets::MARKET` contract emits events, enforces security, and provides best practices for seamless integration.

#### **1.1 Offer Created**

Triggered when a user creates a **sell offer**.

```move
moveCopyEditpublic struct OfferCreated has copy, drop, store {
    offer_id: ID,
    offerer: address,
    collection_id: ID,
    offered_asset_ids: vector<u64>,
    requested_currency: TypeName,
    requested_amount: u64,
    timestamp: u64,
    ledger_id: ID
}
```

**Use Case:** Indexing sell offers on a marketplace frontend.

***

#### **1.2 Offer Accepted**

Triggered when a **sell offer** is accepted by a buyer.

```move
moveCopyEditpublic struct OfferAccepted has copy, drop, store {
    offer_id: ID,
    offerer: address,
    accepter: address,
    collection_id: ID,
    offered_asset_ids: vector<u64>,
    requested_currency: TypeName,
    requested_amount: u64,
    timestamp: u64,
    ledger_id: ID
}
```

**Use Case:** Updating the order book when an NFT is sold.

***

#### **1.3 Offer Cancelled**

Triggered when a **sell offer** is cancelled by the seller.

```move
moveCopyEditpublic struct OfferCancelled has copy, drop, store {
    offer_id: ID,
    offerer: address,
    collection_id: ID,
    offered_asset_ids: vector<u64>,
    requested_currency: TypeName,
    requested_amount: u64,
    timestamp: u64
}
```

**Use Case:** Removing cancelled offers from the marketplace.

***

#### **1.4 Buy Offer Created**

Triggered when a user **places a buy offer**.

```move
moveCopyEditpublic struct BuyOfferCreated has copy, drop, store {
    offer_id: ID,
    buyer: address,
    collection_id: ID,
    requested_asset_count: u64,
    offered_currency: TypeName,
    offered_amount: u64,
    timestamp: u64,
    ledger_id: ID
}
```

**Use Case:** Enabling **buyers** to place bids for NFTs.

***

#### **1.5 Buy Offer Accepted**

Triggered when a **buy offer** is accepted by a seller.

```move
moveCopyEditpublic struct BuyOfferAccepted has copy, drop, store {
    offer_id: ID,
    buyer: address,
    collection_id: ID,
    requested_asset_count: u64,
    offered_currency: TypeName,
    offered_amount: u64,
    timestamp: u64,
    ledger_id: ID
}
```

**Use Case:** Ensuring that transactions **update instantly** in the UI.

***

#### **1.6 Buy Offer Cancelled**

Triggered when a **buyer cancels** their buy order.

```move
moveCopyEditpublic struct BuyOfferCancelled has copy, drop, store {
    offer_id: ID,
    buyer: address,
    collection_id: ID,
    requested_asset_count: u64,
    offered_currency: TypeName,
    offered_amount: u64,
    timestamp: u64,
    ledger_id: ID
}
```

**Use Case:** Removing **cancelled buy orders** from the order book.

***

#### **1.7 Batch Transactions**

Triggered when multiple buy/sell offers are processed together.

**Batch Sell Offers Accepted**

```move
moveCopyEditpublic struct BatchOffersAccepted has copy, drop, store {
    accepter: address,
    total_filled: u64,
    total_cost: u64,
    timestamp: u64,
    ledger_id: ID,
    offers: vector<OfferAccepted>
}
```

**Batch Buy Offers Accepted**

```move
moveCopyEditpublic struct BatchBuyOffersAccepted has copy, drop, store {
    accepter: address,
    total_filled: u64,
    total_cost: u64,
    timestamp: u64,
    ledger_id: ID,
    offers: vector<BuyOfferAccepted>
}
```

**Use Case:** Processing multiple **NFT trades in a single transaction**.
