/* Autogenerated file, do not edit! */ /* eslint-disable */ import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
import { PublicKeys } from '@aztec/aztec.js/keys';
import StateVarsContractArtifactJson from '../artifacts/state_vars_contract-StateVars.json' with {
    type: 'json'
};
export const StateVarsContractArtifact = loadContractArtifact(StateVarsContractArtifactJson);
/**
 * Type-safe interface for contract StateVars;
 */ export class StateVarsContract extends ContractBase {
    constructor(address, wallet){
        super(address, StateVarsContractArtifact, wallet);
    }
    /**
   * Creates a contract instance.
   * @param address - The deployed contract's address.
   * @param wallet - The wallet to use when interacting with the contract.
   * @returns A new Contract instance.
   */ static at(address, wallet) {
        return Contract.at(address, StateVarsContract.artifact, wallet);
    }
    /**
   * Creates a tx to deploy a new instance of this contract.
   */ static deploy(wallet) {
        return new DeployMethod(PublicKeys.default(), wallet, StateVarsContractArtifact, (instance, wallet)=>StateVarsContract.at(instance.address, wallet), Array.from(arguments).slice(1));
    }
    /**
   * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address.
   */ static deployWithPublicKeys(publicKeys, wallet) {
        return new DeployMethod(publicKeys, wallet, StateVarsContractArtifact, (instance, wallet)=>StateVarsContract.at(instance.address, wallet), Array.from(arguments).slice(2));
    }
    /**
   * Creates a tx to deploy a new instance of this contract using the specified constructor method.
   */ static deployWithOpts(opts, ...args) {
        return new DeployMethod(opts.publicKeys ?? PublicKeys.default(), opts.wallet, StateVarsContractArtifact, (instance, wallet)=>StateVarsContract.at(instance.address, wallet), Array.from(arguments).slice(1), opts.method ?? 'constructor');
    }
    /**
   * Returns this contract's artifact.
   */ static get artifact() {
        return StateVarsContractArtifact;
    }
    /**
   * Returns this contract's artifact with public bytecode.
   */ static get artifactForPublic() {
        return loadContractArtifactForPublic(StateVarsContractArtifactJson);
    }
}
