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 Cw20BaseQueryClient {
  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, "tokenInfo", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        token_info: {}
      });
    });
    _defineProperty(this, "minter", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        minter: {}
      });
    });
    _defineProperty(this, "allowance", async ({
      owner,
      spender
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        allowance: {
          owner,
          spender
        }
      });
    });
    _defineProperty(this, "allAllowances", async ({
      limit,
      owner,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_allowances: {
          limit,
          owner,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "allSpenderAllowances", async ({
      limit,
      spender,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_spender_allowances: {
          limit,
          spender,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "allAccounts", async ({
      limit,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_accounts: {
          limit,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "marketingInfo", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        marketing_info: {}
      });
    });
    _defineProperty(this, "downloadLogo", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        download_logo: {}
      });
    });
    this.client = client;
    this.contractAddress = contractAddress;
    this.balance = this.balance.bind(this);
    this.tokenInfo = this.tokenInfo.bind(this);
    this.minter = this.minter.bind(this);
    this.allowance = this.allowance.bind(this);
    this.allAllowances = this.allAllowances.bind(this);
    this.allSpenderAllowances = this.allSpenderAllowances.bind(this);
    this.allAccounts = this.allAccounts.bind(this);
    this.marketingInfo = this.marketingInfo.bind(this);
    this.downloadLogo = this.downloadLogo.bind(this);
  }
}
export class Cw20BaseClient extends Cw20BaseQueryClient {
  constructor(client, sender, contractAddress) {
    super(client, contractAddress);
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "sender", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "transfer", async ({
      amount,
      recipient
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        transfer: {
          amount,
          recipient
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "burn", async ({
      amount
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        burn: {
          amount
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "send", async ({
      amount,
      contract,
      msg
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        send: {
          amount,
          contract,
          msg
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "increaseAllowance", async ({
      amount,
      expires,
      spender
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        increase_allowance: {
          amount,
          expires,
          spender
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "decreaseAllowance", async ({
      amount,
      expires,
      spender
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        decrease_allowance: {
          amount,
          expires,
          spender
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "transferFrom", async ({
      amount,
      owner,
      recipient
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        transfer_from: {
          amount,
          owner,
          recipient
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "sendFrom", async ({
      amount,
      contract,
      msg,
      owner
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        send_from: {
          amount,
          contract,
          msg,
          owner
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "burnFrom", async ({
      amount,
      owner
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        burn_from: {
          amount,
          owner
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "mint", async ({
      amount,
      recipient
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        mint: {
          amount,
          recipient
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "updateMinter", async ({
      newMinter
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        update_minter: {
          new_minter: newMinter
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "updateMarketing", async ({
      description,
      marketing,
      project
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        update_marketing: {
          description,
          marketing,
          project
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "uploadLogo", async (fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        upload_logo: {}
      }, fee, memo, funds);
    });
    this.client = client;
    this.sender = sender;
    this.contractAddress = contractAddress;
    this.transfer = this.transfer.bind(this);
    this.burn = this.burn.bind(this);
    this.send = this.send.bind(this);
    this.increaseAllowance = this.increaseAllowance.bind(this);
    this.decreaseAllowance = this.decreaseAllowance.bind(this);
    this.transferFrom = this.transferFrom.bind(this);
    this.sendFrom = this.sendFrom.bind(this);
    this.burnFrom = this.burnFrom.bind(this);
    this.mint = this.mint.bind(this);
    this.updateMinter = this.updateMinter.bind(this);
    this.updateMarketing = this.updateMarketing.bind(this);
    this.uploadLogo = this.uploadLogo.bind(this);
  }
}