/* Autogenerated file, do not edit! */ /* eslint-disable */ import { EventSelector, loadContractArtifact, loadContractArtifactForPublic } from '@aztec/aztec.js/abi';
import { Contract, ContractBase, DeployMethod } from '@aztec/aztec.js/contracts';
import { Fr } from '@aztec/aztec.js/fields';
import TestLogContractArtifactJson from '../artifacts/test_log_contract-TestLog.json' with {
    type: 'json'
};
export const TestLogContractArtifact = loadContractArtifact(TestLogContractArtifactJson);
/**
 * Type-safe interface for contract TestLog;
 */ export class TestLogContract extends ContractBase {
    constructor(address, wallet){
        super(address, TestLogContractArtifact, 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, TestLogContract.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, instantiation) {
        return DeployMethod.create(wallet, {
            artifact: TestLogContractArtifact,
            postDeployCtor: (instance, wallet)=>TestLogContract.at(instance.address, wallet),
            args: []
        }, 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: TestLogContractArtifact,
            postDeployCtor: (instance, wallet)=>TestLogContract.at(instance.address, wallet),
            args,
            constructorNameOrArtifact: opts.method ?? 'constructor'
        }, opts.instantiation);
    }
    /**
   * Returns this contract's artifact.
   */ static get artifact() {
        return TestLogContractArtifact;
    }
    /**
   * Returns this contract's artifact with public bytecode.
   */ static get artifactForPublic() {
        return loadContractArtifactForPublic(TestLogContractArtifactJson);
    }
    static get storage() {
        return {
            example_set: {
                slot: new Fr(1n)
            }
        };
    }
    static get events() {
        return {
            ExampleNestedEvent: {
                abiType: {
                    "kind": "struct",
                    "fields": [
                        {
                            "name": "nested",
                            "type": {
                                "kind": "struct",
                                "fields": [
                                    {
                                        "name": "a",
                                        "type": {
                                            "kind": "field"
                                        }
                                    },
                                    {
                                        "name": "b",
                                        "type": {
                                            "kind": "field"
                                        }
                                    },
                                    {
                                        "name": "c",
                                        "type": {
                                            "kind": "struct",
                                            "fields": [
                                                {
                                                    "name": "inner",
                                                    "type": {
                                                        "kind": "field"
                                                    }
                                                }
                                            ],
                                            "path": "aztec::protocol_types::address::aztec_address::AztecAddress"
                                        }
                                    }
                                ],
                                "path": "TestLog::NestedStruct"
                            }
                        },
                        {
                            "name": "extra_value",
                            "type": {
                                "kind": "field"
                            }
                        }
                    ],
                    "path": "TestLog::ExampleNestedEvent"
                },
                eventSelector: EventSelector.fromString("0xc76ae47b"),
                fieldNames: [
                    "nested",
                    "extra_value"
                ]
            },
            ExampleEvent1: {
                abiType: {
                    "kind": "struct",
                    "fields": [
                        {
                            "name": "value2",
                            "type": {
                                "kind": "struct",
                                "fields": [
                                    {
                                        "name": "inner",
                                        "type": {
                                            "kind": "field"
                                        }
                                    }
                                ],
                                "path": "aztec::protocol_types::address::aztec_address::AztecAddress"
                            }
                        },
                        {
                            "name": "value3",
                            "type": {
                                "kind": "integer",
                                "sign": "unsigned",
                                "width": 8
                            }
                        }
                    ],
                    "path": "TestLog::ExampleEvent1"
                },
                eventSelector: EventSelector.fromString("0x4dc4df75"),
                fieldNames: [
                    "value2",
                    "value3"
                ]
            },
            ExampleEvent0: {
                abiType: {
                    "kind": "struct",
                    "fields": [
                        {
                            "name": "value0",
                            "type": {
                                "kind": "field"
                            }
                        },
                        {
                            "name": "value1",
                            "type": {
                                "kind": "field"
                            }
                        }
                    ],
                    "path": "TestLog::ExampleEvent0"
                },
                eventSelector: EventSelector.fromString("0xd45c041b"),
                fieldNames: [
                    "value0",
                    "value1"
                ]
            }
        };
    }
}
