153 lines
5.1 KiB
Solidity
153 lines
5.1 KiB
Solidity
|
// contracts/Bridge.sol
|
||
|
// SPDX-License-Identifier: Apache 2
|
||
|
|
||
|
pragma solidity ^0.8.0;
|
||
|
|
||
|
import "./IWETH.sol";
|
||
|
import "../../interfaces/IWormhole.sol";
|
||
|
|
||
|
interface ITokenBridge {
|
||
|
struct Transfer {
|
||
|
uint8 payloadID;
|
||
|
uint256 amount;
|
||
|
bytes32 tokenAddress;
|
||
|
uint16 tokenChain;
|
||
|
bytes32 to;
|
||
|
uint16 toChain;
|
||
|
uint256 fee;
|
||
|
}
|
||
|
|
||
|
struct TransferWithPayload {
|
||
|
uint8 payloadID;
|
||
|
uint256 amount;
|
||
|
bytes32 tokenAddress;
|
||
|
uint16 tokenChain;
|
||
|
bytes32 to;
|
||
|
uint16 toChain;
|
||
|
bytes32 fromAddress;
|
||
|
bytes payload;
|
||
|
}
|
||
|
|
||
|
struct AssetMeta {
|
||
|
uint8 payloadID;
|
||
|
bytes32 tokenAddress;
|
||
|
uint16 tokenChain;
|
||
|
uint8 decimals;
|
||
|
bytes32 symbol;
|
||
|
bytes32 name;
|
||
|
}
|
||
|
|
||
|
struct RegisterChain {
|
||
|
bytes32 module;
|
||
|
uint8 action;
|
||
|
uint16 chainId;
|
||
|
|
||
|
uint16 emitterChainID;
|
||
|
bytes32 emitterAddress;
|
||
|
}
|
||
|
|
||
|
struct UpgradeContract {
|
||
|
bytes32 module;
|
||
|
uint8 action;
|
||
|
uint16 chainId;
|
||
|
|
||
|
bytes32 newContract;
|
||
|
}
|
||
|
|
||
|
struct RecoverChainId {
|
||
|
bytes32 module;
|
||
|
uint8 action;
|
||
|
|
||
|
uint256 evmChainId;
|
||
|
uint16 newChainId;
|
||
|
}
|
||
|
|
||
|
event ContractUpgraded(address indexed oldContract, address indexed newContract);
|
||
|
|
||
|
function _parseTransferCommon(bytes memory encoded) external pure returns (Transfer memory transfer);
|
||
|
|
||
|
function attestToken(address tokenAddress, uint32 nonce) external payable returns (uint64 sequence);
|
||
|
|
||
|
function wrapAndTransferETH(uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) external payable returns (uint64 sequence);
|
||
|
|
||
|
function wrapAndTransferETHWithPayload(uint16 recipientChain, bytes32 recipient, uint32 nonce, bytes memory payload) external payable returns (uint64 sequence);
|
||
|
|
||
|
function transferTokens(address token, uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) external payable returns (uint64 sequence);
|
||
|
|
||
|
function transferTokensWithPayload(address token, uint256 amount, uint16 recipientChain, bytes32 recipient, uint32 nonce, bytes memory payload) external payable returns (uint64 sequence);
|
||
|
|
||
|
function updateWrapped(bytes memory encodedVm) external returns (address token);
|
||
|
|
||
|
function createWrapped(bytes memory encodedVm) external returns (address token);
|
||
|
|
||
|
function completeTransferWithPayload(bytes memory encodedVm) external returns (bytes memory);
|
||
|
|
||
|
function completeTransferAndUnwrapETHWithPayload(bytes memory encodedVm) external returns (bytes memory);
|
||
|
|
||
|
function completeTransfer(bytes memory encodedVm) external;
|
||
|
|
||
|
function completeTransferAndUnwrapETH(bytes memory encodedVm) external;
|
||
|
|
||
|
function encodeAssetMeta(AssetMeta memory meta) external pure returns (bytes memory encoded);
|
||
|
|
||
|
function encodeTransfer(Transfer memory transfer) external pure returns (bytes memory encoded);
|
||
|
|
||
|
function encodeTransferWithPayload(TransferWithPayload memory transfer) external pure returns (bytes memory encoded);
|
||
|
|
||
|
function parsePayloadID(bytes memory encoded) external pure returns (uint8 payloadID);
|
||
|
|
||
|
function parseAssetMeta(bytes memory encoded) external pure returns (AssetMeta memory meta);
|
||
|
|
||
|
function parseTransfer(bytes memory encoded) external pure returns (Transfer memory transfer);
|
||
|
|
||
|
function parseTransferWithPayload(bytes memory encoded) external pure returns (TransferWithPayload memory transfer);
|
||
|
|
||
|
function governanceActionIsConsumed(bytes32 hash) external view returns (bool);
|
||
|
|
||
|
function isInitialized(address impl) external view returns (bool);
|
||
|
|
||
|
function isTransferCompleted(bytes32 hash) external view returns (bool);
|
||
|
|
||
|
function wormhole() external view returns (IWormhole);
|
||
|
|
||
|
function chainId() external view returns (uint16);
|
||
|
|
||
|
function evmChainId() external view returns (uint256);
|
||
|
|
||
|
function isFork() external view returns (bool);
|
||
|
|
||
|
function governanceChainId() external view returns (uint16);
|
||
|
|
||
|
function governanceContract() external view returns (bytes32);
|
||
|
|
||
|
function wrappedAsset(uint16 tokenChainId, bytes32 tokenAddress) external view returns (address);
|
||
|
|
||
|
function bridgeContracts(uint16 chainId_) external view returns (bytes32);
|
||
|
|
||
|
function tokenImplementation() external view returns (address);
|
||
|
|
||
|
function WETH() external view returns (IWETH);
|
||
|
|
||
|
function outstandingBridged(address token) external view returns (uint256);
|
||
|
|
||
|
function isWrappedAsset(address token) external view returns (bool);
|
||
|
|
||
|
function finality() external view returns (uint8);
|
||
|
|
||
|
function implementation() external view returns (address);
|
||
|
|
||
|
function initialize() external;
|
||
|
|
||
|
function registerChain(bytes memory encodedVM) external;
|
||
|
|
||
|
function upgrade(bytes memory encodedVM) external;
|
||
|
|
||
|
function submitRecoverChainId(bytes memory encodedVM) external;
|
||
|
|
||
|
function parseRegisterChain(bytes memory encoded) external pure returns (RegisterChain memory chain);
|
||
|
|
||
|
function parseUpgrade(bytes memory encoded) external pure returns (UpgradeContract memory chain);
|
||
|
|
||
|
function parseRecoverChainId(bytes memory encodedRecoverChainId) external pure returns (RecoverChainId memory rci);
|
||
|
}
|