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 CwVestingQueryClient {
  constructor(client, contractAddress) {
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "info", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        info: {}
      });
    });
    _defineProperty(this, "ownership", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        ownership: {}
      });
    });
    _defineProperty(this, "vestedAmount", async () => {
      return this.client.queryContractSmart(this.contractAddress, {
        vested_amount: {}
      });
    });
    this.client = client;
    this.contractAddress = contractAddress;
    this.info = this.info.bind(this);
    this.ownership = this.ownership.bind(this);
    this.vestedAmount = this.vestedAmount.bind(this);
  }
}
export class CwVestingClient extends CwVestingQueryClient {
  constructor(client, _sender, contractAddress) {
    super(client, contractAddress);
    _defineProperty(this, "client", void 0);
    _defineProperty(this, "sender", void 0);
    _defineProperty(this, "contractAddress", void 0);
    _defineProperty(this, "receive", async ({
      amount,
      msg,
      sender
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        receive: {
          amount,
          msg,
          sender
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "distribute", async (fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        distribute: {}
      }, fee, memo, funds);
    });
    _defineProperty(this, "cancel", async (fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        cancel: {}
      }, fee, memo, funds);
    });
    _defineProperty(this, "delegate", async ({
      amount,
      validator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        delegate: {
          amount,
          validator
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "redelegate", async ({
      amount,
      dstValidator,
      srcValidator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        redelegate: {
          amount,
          dst_validator: dstValidator,
          src_validator: srcValidator
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "undelegate", async ({
      amount,
      validator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        undelegate: {
          amount,
          validator
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "setWithdrawAddress", async ({
      address
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        set_withdraw_address: {
          address
        }
      }, fee, memo, funds);
    });
    _defineProperty(this, "withdrawDelegatorReward", async ({
      validator
    }, fee = "auto", memo, funds) => {
      return await this.client.execute(this.sender, this.contractAddress, {
        withdraw_delegator_reward: {
          validator
        }
      }, 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.receive = this.receive.bind(this);
    this.distribute = this.distribute.bind(this);
    this.cancel = this.cancel.bind(this);
    this.delegate = this.delegate.bind(this);
    this.redelegate = this.redelegate.bind(this);
    this.undelegate = this.undelegate.bind(this);
    this.setWithdrawAddress = this.setWithdrawAddress.bind(this);
    this.withdrawDelegatorReward = this.withdrawDelegatorReward.bind(this);
    this.updateOwnership = this.updateOwnership.bind(this);
  }
}