Magpie Protocol
  • Magpie Protocol
    • What is Magpie solving?
      • What is DeFi?
    • Magpies Key Features
      • Use Cases
    • FLY
      • xFLY & FLY33
  • 📶Supported Networks
  • Guides
    • 📖Glossary of DeFi Terms
    • 👜Connect Wallet
    • 🔄On-Chain Swap
    • 🔀Cross-Chain Swap
    • 🔂Swap configuration
    • 🥚Magpie Boosts
    • 📒Transaction History
    • 💲Portfolio
  • Media Kit
  • 👩‍💻Developers
    • Magpie Contracts
      • MagpieCCTPBridge
      • MagpieCelerBridgeV2
      • MagpieRouterV3
      • MagpieStargateBridgeV3
      • LibAsset
      • LibBridge
      • LibRouter
    • Smart Contracts Audit
    • Deployments
    • API Reference
      • On chain swap
      • Cross chain swap
      • Requesting and Using API Key
Powered by GitBook
On this page
  1. Developers
  2. Deprecated Magpie Contracts
  3. MagpieAggregator Diamond Proxy
  4. Bridge

Interface - IBridge

// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;

import {IMessageBus} from "../../interfaces/celer/IMessageBus.sol";
import {StargateSettings, WormholeBridgeSettings, CelerBridgeSettings} from "../../libraries/LibMagpieAggregator.sol";
import {TransferKey} from "../../libraries/LibTransferKey.sol";
import {BridgeInArgs, BridgeOutArgs, RefundArgs} from "../LibCommon.sol";

interface IBridge {
    event UpdateStargateSettings(address indexed sender, StargateSettings stargateSettings);

    /// @dev Allows the contract owner to update the settings required for interaction with stargate.
    /// @param stargateSettings Stargate related parameters.
    function updateStargateSettings(StargateSettings calldata stargateSettings) external;

    event UpdateWormholeBridgeSettings(address indexed sender, WormholeBridgeSettings wormholeBridgeSettings);

    /// @dev Allows the contract owner to update the settings required for interaction with wormhole
    /// @param wormholeBridgeSettings Wormhole bridge related parameters.
    function updateWormholeBridgeSettings(WormholeBridgeSettings calldata wormholeBridgeSettings) external;

    event AddCelerChainIds(address indexed sender, uint16[] networkIds, uint64[] chainIds);

    /// @dev Allows the contract owner to add Celer chain ids to the corresponding magpie network ids.
    /// @param networkIds An array containing identifiers for Magpie networks.
    /// @param chainIds An array containing chain identifiers corresponding to the network ids.
    function addCelerChainIds(uint16[] calldata networkIds, uint64[] calldata chainIds) external;

    event UpdateCelerBridgeSettings(address indexed sender, CelerBridgeSettings celerBridgeSettings);

    /// @dev Allows the contract owner to updates the Celer bridge settings.
    /// @param celerBridgeSettings Celer bridge related parameters.
    function updateCelerBridgeSettings(CelerBridgeSettings calldata celerBridgeSettings) external;

    event AddMagpieStargateBridgeAddresses(
        address indexed sender,
        uint16[] networkIds,
        bytes32[] magpieStargateBridgeAddresses
    );

    /// @dev Allows the contract owner to add Magpie stargate bridge address to its corresponding network id.
    /// @param networkIds An array containing identifiers for Magpie networks.
    /// @param magpieStargateBridgeAddresses An array containing addresses of Magpie stargate bridge corresponding to the network ids.
    function addMagpieStargateBridgeAddresses(
        uint16[] calldata networkIds,
        bytes32[] calldata magpieStargateBridgeAddresses
    ) external;

    event AddMagpieStargateBridgeV2Addresses(
        address indexed sender,
        uint16[] networkIds,
        bytes32[] magpieStargateBridgeAddresses
    );

    /// @dev Allows the contract owner to add Magpie stargate bridge V2 address to its corresponding network id.
    /// @param networkIds An array containing identifiers for Magpie networks.
    /// @param magpieStargateBridgeAddresses An array containing addresses of Magpie stargate bridge V2 corresponding to the network ids.
    function addMagpieStargateBridgeV2Addresses(
        uint16[] calldata networkIds,
        bytes32[] calldata magpieStargateBridgeAddresses
    ) external;

    event AddMagpieCelerBridgeAddresses(
        address indexed sender,
        uint16[] networkIds,
        bytes32[] magpieCelerBridgeAddresses
    );

    /// @dev Allows the contract owner to add Magpie Celer bridge addresses.
    /// @param networkIds An array containing identifiers for Magpie networks.
    /// @param magpieCelerBridgeAddresses An array containing Magpie celer bridge addresses corresponding to the networks in networkIds.
    function addMagpieCelerBridgeAddresses(
        uint16[] calldata networkIds,
        bytes32[] calldata magpieCelerBridgeAddresses
    ) external;

    /// @dev Deposits assets to the specified bridge.
    /// @param bridgeInArgs Arguments that are required for bridgeIn.
    function bridgeIn(BridgeInArgs calldata bridgeInArgs) external payable;

    /// @dev Withdraws assets from the specified bridge.
    /// @param bridgeOutArgs Arguments that are required for bridgeOut.
    function bridgeOut(BridgeOutArgs calldata bridgeOutArgs) external payable returns (uint256 amount);

    /// @dev Retrieves the Wormhole token sequence
    /// @param tokenSequence The token sequence that is generated by Magpie protocol for the specific crosschain swap.
    /// @return Value of the Wormhole token sequence.
    function getWormholeTokenSequence(uint64 tokenSequence) external view returns (uint64);
}

Last updated 1 year ago

👩‍💻