/* Autogenerated file, do not edit! */ /* eslint-disable */ import { Contract, ContractBase, DeployMethod, EventSelector, Fr, loadContractArtifact, loadContractArtifactForPublic, PublicKeys } from '@aztec/aztec.js';
import TestContractArtifactJson from '../artifacts/test_contract-Test.json' with {
    type: 'json'
};
export const TestContractArtifact = loadContractArtifact(TestContractArtifactJson);
/**
 * Type-safe interface for contract Test;
 */ export class TestContract extends ContractBase {
    constructor(instance, wallet){
        super(instance, TestContractArtifact, 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 promise that resolves to a new Contract instance.
   */ static async at(address, wallet) {
        return Contract.at(address, TestContract.artifact, wallet);
    }
    /**
   * Creates a tx to deploy a new instance of this contract.
   */ static deploy(wallet) {
        return new DeployMethod(PublicKeys.default(), wallet, TestContractArtifact, TestContract.at, 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, TestContractArtifact, TestContract.at, 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, TestContractArtifact, TestContract.at, Array.from(arguments).slice(1), opts.method ?? 'constructor');
    }
    /**
   * Returns this contract's artifact.
   */ static get artifact() {
        return TestContractArtifact;
    }
    /**
   * Returns this contract's artifact with public bytecode.
   */ static get artifactForPublic() {
        return loadContractArtifactForPublic(TestContractArtifactJson);
    }
    static get storage() {
        return {
            note_in_private_immutable: {
                slot: new Fr(1n)
            },
            struct_in_private_immutable: {
                slot: new Fr(2n)
            },
            note_in_private_mutable: {
                slot: new Fr(3n)
            },
            struct_in_private_mutable: {
                slot: new Fr(4n)
            },
            note_in_private_set: {
                slot: new Fr(5n)
            },
            struct_in_private_set: {
                slot: new Fr(6n)
            },
            note_in_public_immutable: {
                slot: new Fr(7n)
            },
            struct_in_public_immutable: {
                slot: new Fr(9n)
            },
            struct_in_map: {
                slot: new Fr(15n)
            },
            struct_in_delayed_public_mutable: {
                slot: new Fr(16n)
            },
            dummy_variable: {
                slot: new Fr(28n)
            }
        };
    }
    static get events() {
        return {
            ExampleEvent: {
                abiType: {
                    "kind": "struct",
                    "fields": [
                        {
                            "name": "value0",
                            "type": {
                                "kind": "field"
                            }
                        },
                        {
                            "name": "value1",
                            "type": {
                                "kind": "field"
                            }
                        },
                        {
                            "name": "value2",
                            "type": {
                                "kind": "field"
                            }
                        },
                        {
                            "name": "value3",
                            "type": {
                                "kind": "field"
                            }
                        },
                        {
                            "name": "value4",
                            "type": {
                                "kind": "field"
                            }
                        }
                    ],
                    "path": "Test::ExampleEvent"
                },
                eventSelector: EventSelector.fromString("0xbb59ba6b"),
                fieldNames: [
                    "value0",
                    "value1",
                    "value2",
                    "value3",
                    "value4"
                ]
            }
        };
    }
}
