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.
 */

// @ts-nocheck

export class Cw721BaseQueryClient {
  constructor(client, contractAddress) {
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "ownerOf", async ({
      includeExpired,
      tokenId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        owner_of: {
          include_expired: includeExpired,
          token_id: tokenId
        }
      });
    });
    _defineProperty(this, "approval", async ({
      includeExpired,
      spender,
      tokenId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        approval: {
          include_expired: includeExpired,
          spender,
          token_id: tokenId
        }
      });
    });
    _defineProperty(this, "approvals", async ({
      includeExpired,
      tokenId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        approvals: {
          include_expired: includeExpired,
          token_id: tokenId
        }
      });
    });
    _defineProperty(this, "operator", async ({
      includeExpired,
      operator,
      owner
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        operator: {
          include_expired: includeExpired,
          operator,
          owner
        }
      });
    });
    _defineProperty(this, "allOperators", async ({
      includeExpired,
      limit,
      owner,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_operators: {
          include_expired: includeExpired,
          limit,
          owner,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "numTokens", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        num_tokens: {}
      });
    });
    _defineProperty(this, "contractInfo", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        contract_info: {}
      });
    });
    _defineProperty(this, "nftInfo", async ({
      tokenId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        nft_info: {
          token_id: tokenId
        }
      });
    });
    _defineProperty(this, "allNftInfo", async ({
      includeExpired,
      tokenId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_nft_info: {
          include_expired: includeExpired,
          token_id: tokenId
        }
      });
    });
    _defineProperty(this, "tokens", async ({
      limit,
      owner,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        tokens: {
          limit,
          owner,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "allTokens", async ({
      limit,
      startAfter
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        all_tokens: {
          limit,
          start_after: startAfter
        }
      });
    });
    _defineProperty(this, "minter", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        minter: {}
      });
    });
    _defineProperty(this, "extension", async ({
      msg
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        extension: {
          msg
        }
      });
    });
    _defineProperty(this, "ownership", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        ownership: {}
      });
    });
    this.client = client;
    this.contractAddress = contractAddress;
    this.ownerOf = this.ownerOf.bind(this);
    this.approval = this.approval.bind(this);
    this.approvals = this.approvals.bind(this);
    this.operator = this.operator.bind(this);
    this.allOperators = this.allOperators.bind(this);
    this.numTokens = this.numTokens.bind(this);
    this.contractInfo = this.contractInfo.bind(this);
    this.nftInfo = this.nftInfo.bind(this);
    this.allNftInfo = this.allNftInfo.bind(this);
    this.tokens = this.tokens.bind(this);
    this.allTokens = this.allTokens.bind(this);
    this.minter = this.minter.bind(this);
    this.extension = this.extension.bind(this);
    this.ownership = this.ownership.bind(this);
  }
}
export class Cw721BaseClient extends Cw721BaseQueryClient {
  constructor(client, sender, contractAddress) {
    super(client, contractAddress);
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "sender", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "transferNft", async ({
      recipient,
      tokenId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        transfer_nft: {
          recipient,
          token_id: tokenId
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "sendNft", async ({
      contract,
      msg,
      tokenId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        send_nft: {
          contract,
          msg,
          token_id: tokenId
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "approve", async ({
      expires,
      spender,
      tokenId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        approve: {
          expires,
          spender,
          token_id: tokenId
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "revoke", async ({
      spender,
      tokenId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        revoke: {
          spender,
          token_id: tokenId
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "approveAll", async ({
      expires,
      operator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        approve_all: {
          expires,
          operator
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "revokeAll", async ({
      operator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        revoke_all: {
          operator
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "mint", async ({
      extension,
      owner,
      tokenId,
      tokenUri
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        mint: {
          extension,
          owner,
          token_id: tokenId,
          token_uri: tokenUri
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "burn", async ({
      tokenId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        burn: {
          token_id: tokenId
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "extension", async ({
      msg
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        extension: {
          msg
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "updateOwnership", async (fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        update_ownership: {}
      }, fee, memo, funds);
    });
    this.client = client;
    this.sender = sender;
    this.contractAddress = contractAddress;
    this.transferNft = this.transferNft.bind(this);
    this.sendNft = this.sendNft.bind(this);
    this.approve = this.approve.bind(this);
    this.revoke = this.revoke.bind(this);
    this.approveAll = this.approveAll.bind(this);
    this.revokeAll = this.revokeAll.bind(this);
    this.mint = this.mint.bind(this);
    this.burn = this.burn.bind(this);
    this.extension = this.extension.bind(this);
    this.updateOwnership = this.updateOwnership.bind(this);
  }
}