import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.26.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/

export class WasmswapQueryClient {
  constructor(client, contractAddress) {
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "balance", async ({
      address
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        balance: {
          address
        }
      });
    });
    _defineProperty(this, "info", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        info: {}
      });
    });
    _defineProperty(this, "token1ForToken2Price", async ({
      token1Amount
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        token1_for_token2_price: {
          token1_amount: token1Amount
        }
      });
    });
    _defineProperty(this, "token2ForToken1Price", async ({
      token2Amount
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        token2_for_token1_price: {
          token2_amount: token2Amount
        }
      });
    });
    this.client = client;
    this.contractAddress = contractAddress;
    this.balance = this.balance.bind(this);
    this.info = this.info.bind(this);
    this.token1ForToken2Price = this.token1ForToken2Price.bind(this);
    this.token2ForToken1Price = this.token2ForToken1Price.bind(this);
  }
}
export class WasmswapClient extends WasmswapQueryClient {
  constructor(client, sender, contractAddress) {
    super(client, contractAddress);
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "sender", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "addLiquidity", async ({
      expiration,
      maxToken2,
      minLiquidity,
      token1Amount
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        add_liquidity: {
          expiration,
          max_token2: maxToken2,
          min_liquidity: minLiquidity,
          token1_amount: token1Amount
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "removeLiquidity", async ({
      amount,
      expiration,
      minToken1,
      minToken2
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        remove_liquidity: {
          amount,
          expiration,
          min_token1: minToken1,
          min_token2: minToken2
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "swapToken1ForToken2", async ({
      expiration,
      minToken2,
      token1Amount
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        swap_token1_for_token2: {
          expiration,
          min_token2: minToken2,
          token1_amount: token1Amount
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "swapToken2ForToken1", async ({
      expiration,
      minToken1,
      token2Amount
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        swap_token2_for_token1: {
          expiration,
          min_token1: minToken1,
          token2_amount: token2Amount
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "multiContractSwap", async ({
      expiration,
      inputToken,
      inputTokenAmount,
      outputAmmAddress,
      outputMinToken,
      outputToken
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        multi_contract_swap: {
          expiration,
          input_token: inputToken,
          input_token_amount: inputTokenAmount,
          output_amm_address: outputAmmAddress,
          output_min_token: outputMinToken,
          output_token: outputToken
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "swapTo", async ({
      expiration,
      inputAmount,
      inputToken,
      minToken,
      recipient
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        swap_to: {
          expiration,
          input_amount: inputAmount,
          input_token: inputToken,
          min_token: minToken,
          recipient
        }
      }, fee, memo, funds);
    });
    this.client = client;
    this.sender = sender;
    this.contractAddress = contractAddress;
    this.addLiquidity = this.addLiquidity.bind(this);
    this.removeLiquidity = this.removeLiquidity.bind(this);
    this.swapToken1ForToken2 = this.swapToken1ForToken2.bind(this);
    this.swapToken2ForToken1 = this.swapToken2ForToken1.bind(this);
    this.multiContractSwap = this.multiContractSwap.bind(this);
    this.swapTo = this.swapTo.bind(this);
  }
}