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? refundAddress,
  7. InternalAddress? excessesAddress,
  8. InternalAddress? referralAddress,
  9. BigInt? referralValue,
  10. Cell? customPayload,
  11. BigInt? customPayloadForwardGasAmount,
  12. Cell? refundPayload,
  13. BigInt? refundForwardGasAmount,
  14. BigInt? gasAmount,
  15. BigInt? forwardGasAmount,
  16. BigInt? queryId,
})

Implementation

Future<SenderArguments> getSwapJettonToJettonTxParams({
  required InternalAddress userWalletAddress,
  required InternalAddress offerJettonAddress,
  required InternalAddress askJettonAddress,
  required BigInt offerAmount,
  required BigInt minAskAmount,
  InternalAddress? refundAddress,
  InternalAddress? excessesAddress,
  InternalAddress? referralAddress,
  BigInt? referralValue,
  Cell? customPayload,
  BigInt? customPayloadForwardGasAmount,
  Cell? refundPayload,
  BigInt? refundForwardGasAmount,
  BigInt? gasAmount,
  BigInt? forwardGasAmount,
  BigInt? queryId,
}) async {
  final contractAddress = this.address;

  final offerJettonWalletAddress = await stonfiProvider!
      .open(JettonMaster(offerJettonAddress, provider))
      .getWalletAddress(userWalletAddress);
  final askJettonWalletAddress = await stonfiProvider!
      .open(JettonMaster(askJettonAddress, provider))
      .getWalletAddress(contractAddress);

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

  final forwardPayload = createSwapBody(
    askJettonWalletAddress: askJettonWalletAddress,
    receiverAddress: userWalletAddress,
    minAskAmount: minAskAmount,
    refundAddress: refundAddress ?? userWalletAddress,
    excessesAddress: excessesAddress,
    referralAddress: referralAddress,
    referralValue: referralValue,
    customPayload: customPayload,
    customPayloadForwardGasAmount: customPayloadForwardGasAmount,
    refundPayload: refundPayload,
    refundForwardGasAmount: refundForwardGasAmount,
  );

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

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

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