implGetProvideLiquidityJettonTxParams method

Future<SenderArguments> implGetProvideLiquidityJettonTxParams({
  1. required InternalAddress userWalletAddress,
  2. required InternalAddress sendTokenAddress,
  3. required InternalAddress otherTokenAddress,
  4. required BigInt sendAmount,
  5. required BigInt minLpOut,
  6. required BigInt gasAmount,
  7. required BigInt forwardGasAmount,
  8. bool bothPositive = false,
  9. InternalAddress? refundAddress,
  10. InternalAddress? excessesAddress,
  11. Cell? customPayload,
  12. BigInt? customPayloadForwardGasAmount,
  13. BigInt? queryId,
})

Implementation

Future<SenderArguments> implGetProvideLiquidityJettonTxParams({
  required InternalAddress userWalletAddress,
  required InternalAddress sendTokenAddress,
  required InternalAddress otherTokenAddress,
  required BigInt sendAmount,
  required BigInt minLpOut,
  required BigInt gasAmount,
  required BigInt forwardGasAmount,
  bool bothPositive = false,
  InternalAddress? refundAddress,
  InternalAddress? excessesAddress,
  Cell? customPayload,
  BigInt? customPayloadForwardGasAmount,
  BigInt? queryId,
}) async {
  final contractAddress = this.address;

  final jettonWalletAddress = await stonfiProvider!
      .open(JettonMaster(sendTokenAddress))
      .getWalletAddress(userWalletAddress);
  final routerWalletAddress = await stonfiProvider!
      .open(JettonMaster(otherTokenAddress))
      .getWalletAddress(this.address);

  final forwardPayload = createProvideLiquidityBody(
    routerWalletAddress: routerWalletAddress,
    receiverAddress: userWalletAddress,
    minLpOut: minLpOut,
    refundAddress: refundAddress ?? userWalletAddress,
    excessesAddress: excessesAddress,
    customPayload: customPayload,
    customPayloadForwardGasAmount: customPayloadForwardGasAmount,
    bothPositive: bothPositive,
  );

  final forwardTonAmount = forwardGasAmount;

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

  final value = gasAmount;

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