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 DaoPreProposeApproverQueryClient {
  constructor(client, contractAddress) {
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "proposalModule", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        proposal_module: {}
      });
    });
    _defineProperty(this, "dao", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        dao: {}
      });
    });
    _defineProperty(this, "config", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        config: {}
      });
    });
    _defineProperty(this, "depositInfo", async ({
      proposalId
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        deposit_info: {
          proposal_id: proposalId
        }
      });
    });
    _defineProperty(this, "proposalSubmittedHooks", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        proposal_submitted_hooks: {}
      });
    });
    _defineProperty(this, "queryExtension", async ({
      msg
    }) => {
      return this.client.queryContractSmart(this.contractAddress, {
        query_extension: {
          msg
        }
      });
    });
    this.client = client;
    this.contractAddress = contractAddress;
    this.proposalModule = this.proposalModule.bind(this);
    this.dao = this.dao.bind(this);
    this.config = this.config.bind(this);
    this.depositInfo = this.depositInfo.bind(this);
    this.proposalSubmittedHooks = this.proposalSubmittedHooks.bind(this);
    this.queryExtension = this.queryExtension.bind(this);
  }
}
export class DaoPreProposeApproverClient extends DaoPreProposeApproverQueryClient {
  constructor(client, sender, contractAddress) {
    super(client, contractAddress);
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "sender", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "propose", async ({
      msg
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        propose: {
          msg
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "updateConfig", async ({
      depositInfo,
      openProposalSubmission
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        update_config: {
          deposit_info: depositInfo,
          open_proposal_submission: openProposalSubmission
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "withdraw", async ({
      denom
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        withdraw: {
          denom
        }
      }, 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, "addProposalSubmittedHook", async ({
      address
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        add_proposal_submitted_hook: {
          address
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "removeProposalSubmittedHook", async ({
      address
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        remove_proposal_submitted_hook: {
          address
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "proposalCompletedHook", async ({
      newStatus,
      proposalId
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        proposal_completed_hook: {
          new_status: newStatus,
          proposal_id: proposalId
        }
      }, fee, memo, funds);
    });
    this.client = client;
    this.sender = sender;
    this.contractAddress = contractAddress;
    this.propose = this.propose.bind(this);
    this.updateConfig = this.updateConfig.bind(this);
    this.withdraw = this.withdraw.bind(this);
    this.extension = this.extension.bind(this);
    this.addProposalSubmittedHook = this.addProposalSubmittedHook.bind(this);
    this.removeProposalSubmittedHook = this.removeProposalSubmittedHook.bind(this);
    this.proposalCompletedHook = this.proposalCompletedHook.bind(this);
  }
}