getSwapJettonToJettonTxParams method

Future<SenderArguments> getSwapJettonToJettonTxParams({
  1. required InternalAddress userWalletAddress,
  2. required InternalAddress offerJettonAddress,
  3. required InternalAddress askJettonAddress,
  4. required BigInt offerAmount,
  5. required BigInt minAskAmount,
  6. InternalAddress? referralAddress,
  7. BigInt? gasAmount,
  8. BigInt? forwardGasAmount,
  9. BigInt? queryId,
})

Implementation

Future<SenderArguments> getSwapJettonToJettonTxParams({
  required InternalAddress userWalletAddress,
  required InternalAddress offerJettonAddress,
  required InternalAddress askJettonAddress,
  required BigInt offerAmount,
  required BigInt minAskAmount,
  InternalAddress? referralAddress,
  BigInt? gasAmount,
  BigInt? forwardGasAmount,
  BigInt? queryId,
}) async {
  final offerJettonWalletAddress = await stonfiProvider!
      .open(JettonMaster(offerJettonAddress, provider))
      .getWalletAddress(userWalletAddress);
  final askJettonWalletAddress = await stonfiProvider!
      .open(JettonMaster(askJettonAddress, provider))
      .getWalletAddress(this.address);

  final forwardPayload = createSwapBody(
    userWalletAddress: userWalletAddress,
    minAskAmount: minAskAmount,
    askJettonWalletAddress: askJettonWalletAddress,
    referralAddress: referralAddress,
  );

  final forwardTonAmount =
      forwardGasAmount ?? gasConstants.swapJettonToJetton.forwardGasAmount;

  final body = createJettonTransferMessage(
    customPayload: null,
    queryId: queryId ?? BigInt.zero,
    amount: offerAmount,
    destination: this.address,
    responseDestination: userWalletAddress,
    forwardTonAmount: forwardTonAmount,
    forwardPayload: forwardPayload,
  );

  final value = gasAmount ?? gasConstants.swapJettonToJetton.gasAmount!;

  return SenderArguments(
      value: value, to: offerJettonWalletAddress, body: body);
}