/* Autogenerated file, do not edit! */
import { loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
import VaultDeployerContractArtifactJson from '../../target/vault_deployer-VaultDeployer.json' with { type: 'json' };
export const VaultDeployerContractArtifact = loadContractArtifact(VaultDeployerContractArtifactJson);
/**
 * Type-safe interface for contract VaultDeployer;
 */
export class VaultDeployerContract extends ContractBase {
    constructor(address, wallet) {
        super(address, VaultDeployerContractArtifact, 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, VaultDeployerContract.artifact, wallet);
    }
    /**
     * Creates a tx to deploy a new instance of this contract.
     * @param instantiation - Optional address-affecting parameters (salt, deployer / universalDeploy, publicKeys).
     *                       Salt defaults to a random value; the deployer is locked lazily from the first send-time `from`.
     */
    static deploy(wallet, asset, vault_offset, vault_class_id, shares_name, shares_symbol, shares_decimals, shares_class_id, instantiation) {
        return DeployMethod.create(wallet, {
            artifact: VaultDeployerContractArtifact,
            postDeployCtor: (instance, wallet) => VaultDeployerContract.at(instance.address, wallet),
            args: [asset, vault_offset, vault_class_id, shares_name, shares_symbol, shares_decimals, shares_class_id],
        }, instantiation);
    }
    /**
     * Creates a tx to deploy a new instance of this contract using the specified constructor method.
     */
    static deployWithOpts(opts, ...args) {
        return DeployMethod.create(opts.wallet, {
            artifact: VaultDeployerContractArtifact,
            postDeployCtor: (instance, wallet) => VaultDeployerContract.at(instance.address, wallet),
            args,
            constructorNameOrArtifact: opts.method ?? 'constructor',
        }, opts.instantiation);
    }
    /**
     * Returns this contract's artifact.
     */
    static get artifact() {
        return VaultDeployerContractArtifact;
    }
    /**
     * Returns this contract's artifact with public bytecode.
     */
    static get artifactForPublic() {
        return loadContractArtifactForPublic(VaultDeployerContractArtifactJson);
    }
}
