# Fantom

## Code

* `FantomMinter.sol`
* `FantomMinter.impl.sol`

## Events

### Swap

```bash
event Swap(string fromChain, bytes fromAddr, bytes toAddr, address tokenAddress, bytes32[] bytes32s, uint[] uints, bytes data);
```

This event occurs when a bridge operator performs bridging with Klaytn Minter through the Orbit Bridge System.

* `string fromChain` : Chain Symbol requesting bridging
* `bytes fromAddr` : Address of the chain requesting bridging
* `bytes toAddr` : Address of chain to execute bridging
* `address tokenAddress` : Token Address minted by bridging execution
* `bytes32[] bytes32s` : Bytes32 data array used in the bridging consensus process
* `uint[] uints` : Uint data array used in the bridging consensus process
* `bytes data` : Execution data for Bridge Receiver

### SwapNFT

```bash
event SwapNFT(string fromChain, bytes fromAddr, bytes toAddr, address tokenAddress, bytes32[] bytes32s, uint[] uints, bytes data);
```

This event occurs when a bridge operator performs NFT bridging with Klaytn Minter through the Orbit Bridge System.

* `string fromChain` : Chain Symbol requesting bridging
* `bytes fromAddr` : Address of the chain requesting bridging
* `bytes toAddr` : Address of chain to execute bridging
* `address tokenAddress` : Token Address minted by bridging execution
* `bytes32[] bytes32s` : Bytes32 data array used in the bridging consensus process
* `uint[] uints` : Uint data array used in the bridging consensus process
* `bytes data` : Execution data for Bridge Receiver

### SwapRequest

```bash
event SwapRequest(string toChain, address fromAddr, bytes toAddr, bytes token, address tokenAddress, uint8 decimal, uint amount, uint depositId, bytes data);
```

Event occurs when a user who uses the Orbit Bridge System requests bridging to Klaytn Minter

* `string toChain` : Chain Symbol to execute bridging
* `bytes fromAddr` : Address of the chain requesting bridging
* `bytes toAddr` : Address of chain to execute bridging
* `bytes token` : Token Information to be executed bridging
* `address tokenAddress` : Token Address  requesting bridging
* `uint8 decimal` : Token Decimal requesting bridging
* `uint amount` : Token Amount requesting bridging
* `uint depositId` : Unique Identifier of bridging request
* `bytes data` : Execution data requested for bridging

### SwapRequestNFT

```bash
event SwapRequestNFT(string toChain, address fromAddr, bytes toAddr, bytes token, address tokenAddress, uint8 decimal, uint amount, uint depositId, bytes data);
```

Event occurs when a user who uses the Orbit Bridge System requests NFT bridging to Klaytn Minter

* `string toChain` : Chain Symbol to execute bridging
* `bytes fromAddr` : Address of the chain requesting bridging
* `bytes toAddr` : Address of chain to execute bridging
* `bytes token` : Token Information to be executed bridging
* `address tokenAddress` : Token Address  requesting bridging
* `uint tokenId` : Token ID requesting bridging
* `uint amount` : Token Amount requesting bridging
* `uint depositId` : Unique Identifier of bridging request
* `bytes data` : Execution data requested for bridging

## Interface

```bash
pragma solidity 0.5.0;

interface FantomMinter {
    function getVersion() public pure returns(string memory);
    function getTokenAddress(bytes memory token) public view returns(address);
    function getChainId(string memory _chain) public view returns(bytes32);
   
    function swap(address hubContract, string memory fromChain, bytes memory fromAddr, bytes memory toAddr, bytes memory token, bytes32[] memory bytes32s, uint[] memory uints, bytes memory data, uint8[] memory v, bytes32[] memory r, bytes32[] memory s) public;
    function swapNFT(address hubContract, string memory fromChain, bytes memory fromAddr, bytes memory toAddr, bytes memory token, bytes32[] memory bytes32s, uint[] memory uints, bytes memory data, uint8[] memory v, bytes32[] memory r, bytes32[] memory s) public;
    
    function requestSwap(address tokenAddress, string memory toChain, bytes memory toAddr, uint amount) public payable;
    function requestSwap(address tokenAddress, string memory toChain, bytes memory toAddr, uint amount, bytes memory data) public payable;
    
    function requestSwapNFT(address nftAddress, uint tokenId, string memory toChain, bytes memory toAddr) public payable;
    function requestSwapNFT(address nftAddress, uint tokenId, string memory toChain, bytes memory toAddr, bytes memory data) public payable;
}
```


---

# 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://bridge-docs.orbitchain.io/contract/minter/klaytn-4.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.
