Pnuttaste/Interchain-message/contracts/message/apps/BridgeSwap.sol
Mista J df8039f494 new file: Interchain-message/.env.example
new file:   Interchain-message/.eslintrc.js
	new file:   Interchain-message/.gitignore
	new file:   Interchain-message/.prettierrc
	new file:   Interchain-message/.solhint.json
	new file:   Interchain-message/.solhintignore
	new file:   Interchain-message/contracts/interfaces/IBridge.sol
	new file:   Interchain-message/contracts/interfaces/IMessageBus.sol
	new file:   Interchain-message/contracts/interfaces/IMessageReceiverApp.sol
	new file:   Interchain-message/contracts/interfaces/IUniswapRouterV3.sol
	new file:   Interchain-message/contracts/interfaces/IWETH.sol
	new file:   Interchain-message/contracts/message/apps/BridgeSwap.sol
	new file:   Interchain-message/contracts/message/apps/RubicRouterV2.sol
	new file:   Interchain-message/contracts/message/apps/RubicRouterV2ETH.sol
	new file:   Interchain-message/contracts/message/apps/SwapBase.sol
	new file:   Interchain-message/contracts/message/apps/TransferSwapInch.sol
	new file:   Interchain-message/contracts/message/apps/TransferSwapV2.sol
	new file:   Interchain-message/contracts/message/apps/TransferSwapV3.sol
	new file:   Interchain-message/contracts/message/framework/MessageReceiverApp.sol
	new file:   Interchain-message/contracts/message/framework/MessageSenderApp.sol
	new file:   Interchain-message/contracts/message/libraries/MessageSenderLib.sol
	new file:   Interchain-message/contracts/message/libraries/MsgDataTypes.sol
	new file:   Interchain-message/contracts/test/MessageBusSender.sol
	new file:   Interchain-message/contracts/test/TestERC20.sol
	new file:   Interchain-message/contracts/test/TestMessages.sol
	new file:   Interchain-message/contracts/test/WETH9.sol
	new file:   Interchain-message/deployments/Readme.md
	new file:   Interchain-message/executor/config/cbridge.toml
	new file:   Interchain-message/executor/config/executor.toml
	new file:   Interchain-message/executor/eth-ks/signer.json
	new file:   Interchain-message/hardhat.config.ts
	new file:   Interchain-message/package-lock.json
	new file:   Interchain-message/package.json
	new file:   Interchain-message/reports/contract_sizes.txt
	new file:   Interchain-message/reports/gas_usage/summary.txt
	new file:   Interchain-message/scripts/deploy/deploy.js
	new file:   Interchain-message/scripts/deploy/deployAVAX.ts
	new file:   Interchain-message/scripts/deploy/deployArbitrum.ts
	new file:   Interchain-message/scripts/deploy/deployAurora.ts
	new file:   Interchain-message/scripts/deploy/deployBSC.ts
	new file:   Interchain-message/scripts/deploy/deployEth.ts
	new file:   Interchain-message/scripts/deploy/deployFantom.ts
	new file:   Interchain-message/scripts/deploy/deployPoly.ts
	new file:   Interchain-message/scripts/privateKey.js
	new file:   Interchain-message/scripts/sendTx/avaxToFantomBridge.js
	new file:   Interchain-message/scripts/sendTx/avaxToFantomNativeV2.js
	new file:   Interchain-message/test/RubicCrossChainBridge.spec.ts
	new file:   Interchain-message/test/RubicCrossChainV2.spec.ts
	new file:   Interchain-message/test/RubicCrossChainV3.spec.ts
	new file:   Interchain-message/test/RubicFallback.spec.ts
	new file:   Interchain-message/test/RubicSettings.spec.ts
	new file:   Interchain-message/test/shared/consts.ts
	new file:   Interchain-message/test/shared/fixtures.ts
	new file:   Interchain-message/test/shared/utils.ts
	new file:   Interchain-message/tsconfig.json
	deleted:    Rubic-Inter-chain-Message-develop.zip
	deleted:    proxy-instant-trades-master.zip
	deleted:    rubic-app-master.zip
	deleted:    rubic-sdk-master.zip
2024-07-09 17:32:00 -04:00

100 lines
2.4 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.9;
import "./SwapBase.sol";
contract BridgeSwap is SwapBase {
function bridgeWithSwapNative(
address _receiver,
uint256 _amountIn,
uint64 _dstChainId,
address _srcBridgeToken,
SwapInfoDest calldata _dstSwap,
uint32 _maxBridgeSlippage
) external payable {
uint256 _fee = _deriveFeeAndPerformChecksNative(
_amountIn,
_dstChainId,
_dstSwap.integrator,
_srcBridgeToken
);
_sendBridgeMessage(
_receiver,
_dstChainId,
_srcBridgeToken,
_dstSwap,
_maxBridgeSlippage,
_fee,
_amountIn
);
}
function bridgeWithSwap(
address _receiver,
uint256 _amountIn,
uint64 _dstChainId,
address _srcBridgeToken,
SwapInfoDest calldata _dstSwap,
uint32 _maxBridgeSlippage
) external payable {
uint256 _fee = _deriveFeeAndPerformChecks(
_amountIn,
_dstChainId,
_dstSwap.integrator,
_srcBridgeToken
);
_sendBridgeMessage(
_receiver,
_dstChainId,
_srcBridgeToken,
_dstSwap,
_maxBridgeSlippage,
_fee,
_amountIn
);
}
function _sendBridgeMessage(
address _receiver,
uint64 _dstChainId,
address _srcBridgeToken,
SwapInfoDest calldata _dstSwap,
uint32 _maxBridgeSlippage,
uint256 _fee,
uint256 _amountIn
) private {
BaseCrossChainParams memory _baseParams = BaseCrossChainParams(
_srcBridgeToken,
_amountIn,
_dstChainId,
_retrieveDstTokenAddress(_dstSwap),
_dstSwap.amountOutMinimum,
_dstSwap.receiverEOA,
_dstSwap.integrator,
address(0)
);
require(
_baseParams.dstChainID != uint64(block.chainid),
"same chain id"
);
bytes32 id = _sendMessage(
_receiver,
uint64(_baseParams.dstChainID),
_dstSwap,
_maxBridgeSlippage,
_beforeSwapAndSendMessage(),
_fee,
_baseParams.srcInputToken,
_baseParams.srcInputAmount,
true
);
emit CrossChainRequestSent(id, _baseParams);
}
}