pancake_sdk 0.0.2 pancake_sdk: ^0.0.2 copied to clipboard
A package support web3 for crypto
flutter_pancake_swap_sdk #
Table of Contents #
Introduction #
flutter_pancake_swap_sdk
is a Flutter project forked from two prominent web libraries, pancakeswap/sdk and Uniswap SDK v3 Overview. This project aims to adapt these web libraries for mobile platforms, providing users with the functionality of the PancakeSwap and Uniswap platforms.
Installation #
(Instructions on how to install the SDK in a Flutter project.)
Usage #
The SDK includes several key features such as token declaration and price estimation. Here's a brief overview:
Token Declaration #
- For native tokens:
Token.WETH[ChainId]!
- For creating a token instance:
Token(chainId, address, decimal)
LP Pair Tokens #
- To get LP pair tokens:
Pair.getAddress(token1, token2)
Price Estimation #
- To estimate prices:
Trade.bestTradeExactIn(TokenAmount(tokenFrom, value.amountSwapFrom(decimalFrom)), tokenTo, maxHops)
Documentation #
Forked from the PancakeSwap SDK.
For more detailed information, refer to the Uniswap SDK v3 Documentation.
You can refer to the Uniswap SDK documentation uniswap.org.
Examples #
Trade? getTrade({
required List<EthereumAddress> addressSwap,
required int decimalFrom,
required int decimalTo,
required double value,
}) {
Trade? bestTradeSoFar;
Token tokenFrom =
TokenSDK.Token(_buildConfig.chainId, addressSwap[0], decimalFrom);
Token tokenTo =
TokenSDK.Token(_buildConfig.chainId, addressSwap[1], decimalTo);
if (addressSwap[0]
.hex
.toLowerCase()
.contains(_buildConfig.bnbContractAddress.toLowerCase())) {
tokenFrom = TokenSDK.Token.WETH[ChainId.MAINNET.value]!;
}
if (addressSwap[1]
.hex
.toLowerCase()
.contains(_buildConfig.bnbContractAddress.toLowerCase())) {
tokenTo = TokenSDK.Token.WETH[ChainId.MAINNET.value]!;
}
for (int i = 1; i <= maxHops; i++) {
var bestTrade = Trade.bestTradeExactIn(
listPair,
TokenAmount(tokenFrom, value.amountSwapFrom(decimalFrom)),
tokenTo,
maxHops: i,
);
if (bestTrade.isNotEmpty) {
final currentTrade = bestTrade[0];
final valueBool = isTradeBetter(
bestTradeSoFar,
currentTrade,
minimumDelt: betterTradeLessHopsThreshold,
);
if (valueBool) {
bestTradeSoFar = currentTrade;
}
}
}
tradeInfor = bestTradeSoFar;
return tradeInfor;
}
Future<List<Pair>> getListPair(Token tokenA, Token tokenB) async {
List<Pair> listPair = [];
final listPairA = getPairTokenABaseToken(tokenA);
final listPairB = getPairTokenBBaseToken(tokenB);
try {
final listStablePair = getStableLPPair(tokenA, tokenB);
listPair = await _contractMultiCallRepository
.getListPairFromSDK(addressLpToken: [
...listStablePair,
...listPairA,
...listPairB,
]);
} catch (e) {
Log.info('error get pair swap', e.toString());
}
return listPair;
}
Support #
Support this project by donating on buymeacoffee.com.