A SDK to bridge with Mayan on testnets
npm install @testnet-mayan/swap-sdk``bash`
npm install --save @mayanfinance/swap-sdk
Import the necessary functions and models:
`javascript`
import { fetchQuote, swapFromEvm, swapFromSolana, Quote } from '@mayanfinance/swap-sdk'
Then you will need to get a quote:
javascript
const quote = await fetchQuote({
amount: 250,
fromToken: fromToken.contract,
toToken: toToken.contract,
fromChain: "bsc",
toChain: "solana",
slippage: 3,
gasDrop: 0.04, // optional
referrer: "YOUR SOLANA WALLET ADDRESS", // optional
});
`You can get the list of supported tokens using Tokens API
#### Gas on destination:
To enable Gas on destination set the gasDrop param to the amount of native token (e.g. ETH, BNB..) you want to receive on the destination chain.
`
Maximum supported amount of gasDrop for each destination chain:ethereum: 0.05 ETH
`#### Referrer fee:
> If you want to receive referrer fee, set the
referrer param to your wallet address.#### Slippage:
> Slippage is in percentage, so 3 means "up to three percent slippage".
After you get the quote, you can send the swap transaction:
$3
`javascript
swapTrx = await swapFromSolana(quote, originWalletAddress, destinationWalletAddress, deadlineInSeconds, referrerAddress, signSolanaTransaction, solanaConnection)
`$3
`javascript
swapTrx = await swapFromEvm(quote, destinationWalletAddress, deadlineInSeconds, referrerAddress, provider, signer)
`
>
`referrerAddress` must be a Solana wallet address. If you don't want to get referrer fee from users, set "referrerAddress" to `null` or `"11111111111111111111111111111111"`
$3
To track the progress of swaps, you can use Mayan Explorer API
📱 React Native Support (Solana Mobile SDK):
You can also use this SDK in your react native app:
`javascript
import { transact, Web3MobileWallet } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';
`For swaps from solana after importing the above functions from Solana Mobile SDK you have to pass a callback function that calls
transact function as the signSolanaTransaction parameter of swapFromSolana function:
`javascript
const signSolanaTransaction = useCallback(
async (tx: Transaction) => {
return await transact(async (wallet: Web3MobileWallet) => {
authorizeSession(wallet);
const signedTransactions = await wallet.signTransactions({
transactions: [tx],
}); return signedTransactions[0];
});
},
[authorizeSession],
);
`For swaps from EVM you can use
useWalletConnectModal hook from WalletConnet to get the provider and pass it to swapFromEvm function as the signer:`javascript
import {useWalletConnectModal} from '@walletconnect/modal-react-native';
...
const { provider: evmWalletProvider} =
useWalletConnectModal();
...
const web3Provider = new ethers.providers.Web3Provider(
evmWalletProvider,
);
const signer = web3Provider.getSigner(0);
``To learn more about how to use Mayan SDK in a react-native project, you can check this scaffold.