# 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**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.artinals.com/artinals-protocol/market-module/event-emissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
