
/* Autogenerated file, do not edit! */

/* eslint-disable */
import {
  type AbiType,
  AztecAddress,
  type AztecAddressLike,
  CompleteAddress,
  Contract,
  type ContractArtifact,
  ContractBase,
  ContractFunctionInteraction,
  type ContractInstanceWithAddress,
  type ContractMethod,
  type ContractStorageLayout,
  decodeFromAbi,
  DeployMethod,
  EthAddress,
  type EthAddressLike,
  EventSelector,
  type FieldLike,
  Fr,
  type FunctionSelectorLike,
  loadContractArtifact,
  loadContractArtifactForPublic,
  type NoirCompiledContract,
  Point,
  type PublicKey,
  PublicKeys,
  type Wallet,
  type U128Like,
  type WrappedFieldLike,
} from '@aztec/aztec.js';
import PendingNoteHashesContractArtifactJson from '../artifacts/pending_note_hashes_contract-PendingNoteHashes.json' with { type: 'json' };
export const PendingNoteHashesContractArtifact = loadContractArtifact(PendingNoteHashesContractArtifactJson as NoirCompiledContract);



/**
 * Type-safe interface for contract PendingNoteHashes;
 */
export class PendingNoteHashesContract extends ContractBase {
  
  private constructor(
    instance: ContractInstanceWithAddress,
    wallet: Wallet,
  ) {
    super(instance, PendingNoteHashesContractArtifact, 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.
   */
  public static async at(
    address: AztecAddress,
    wallet: Wallet,
  ) {
    return Contract.at(address, PendingNoteHashesContract.artifact, wallet) as Promise<PendingNoteHashesContract>;
  }

  
  /**
   * Creates a tx to deploy a new instance of this contract.
   */
  public static deploy(wallet: Wallet, ) {
    return new DeployMethod<PendingNoteHashesContract>(PublicKeys.default(), wallet, PendingNoteHashesContractArtifact, PendingNoteHashesContract.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.
   */
  public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet, ) {
    return new DeployMethod<PendingNoteHashesContract>(publicKeys, wallet, PendingNoteHashesContractArtifact, PendingNoteHashesContract.at, Array.from(arguments).slice(2));
  }

  /**
   * Creates a tx to deploy a new instance of this contract using the specified constructor method.
   */
  public static deployWithOpts<M extends keyof PendingNoteHashesContract['methods']>(
    opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet },
    ...args: Parameters<PendingNoteHashesContract['methods'][M]>
  ) {
    return new DeployMethod<PendingNoteHashesContract>(
      opts.publicKeys ?? PublicKeys.default(),
      opts.wallet,
      PendingNoteHashesContractArtifact,
      PendingNoteHashesContract.at,
      Array.from(arguments).slice(1),
      opts.method ?? 'constructor',
    );
  }
  

  
  /**
   * Returns this contract's artifact.
   */
  public static get artifact(): ContractArtifact {
    return PendingNoteHashesContractArtifact;
  }

  /**
   * Returns this contract's artifact with public bytecode.
   */
  public static get artifactForPublic(): ContractArtifact {
    return loadContractArtifactForPublic(PendingNoteHashesContractArtifactJson as NoirCompiledContract);
  }
  

  public static get storage(): ContractStorageLayout<'balances'> {
      return {
        balances: {
      slot: new Fr(1n),
    }
      } as ContractStorageLayout<'balances'>;
    }
    

  /** Type-safe wrappers for the public methods exposed by the contract. */
  public declare methods: {
    
    /** dummy(amount: field, owner: struct, sender: struct) */
    dummy: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** get_note_zero_balance(owner: struct) */
    get_note_zero_balance: ((owner: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** get_then_nullify_note(expected_value: field, owner: struct) */
    get_then_nullify_note: ((expected_value: FieldLike, owner: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** insert_note(amount: field, owner: struct, sender: struct) */
    insert_note: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** insert_note_extra_emit(amount: field, owner: struct, sender: struct) */
    insert_note_extra_emit: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** insert_note_static_randomness(amount: field, owner: struct, sender: struct) */
    insert_note_static_randomness: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** process_message(message_ciphertext: struct, message_context: struct) */
    process_message: ((message_ciphertext: FieldLike[], message_context: { tx_hash: FieldLike, unique_note_hashes_in_tx: FieldLike[], first_nullifier_in_tx: FieldLike, recipient: AztecAddressLike }) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** public_dispatch(selector: field) */
    public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** recursively_destroy_and_create_notes(owner: struct, sender: struct, executions_left: integer) */
    recursively_destroy_and_create_notes: ((owner: AztecAddressLike, sender: AztecAddressLike, executions_left: (bigint | number)) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** sync_private_state() */
    sync_private_state: (() => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_bad_get_then_insert_flat(amount: field, owner: struct) */
    test_bad_get_then_insert_flat: ((amount: FieldLike, owner: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_emit_bad_note_log(owner: struct, sender: struct) */
    test_emit_bad_note_log: ((owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_insert_then_get_then_nullify_all_in_nested_calls(amount: field, owner: struct, sender: struct, insert_fn_selector: struct, get_then_nullify_fn_selector: struct) */
    test_insert_then_get_then_nullify_all_in_nested_calls: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike, insert_fn_selector: FunctionSelectorLike, get_then_nullify_fn_selector: FunctionSelectorLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_insert_then_get_then_nullify_flat(amount: field, owner: struct, sender: struct) */
    test_insert_then_get_then_nullify_flat: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_insert1_then_get2_then_nullify2_all_in_nested_calls(amount: field, owner: struct, sender: struct, insert_fn_selector: struct, get_then_nullify_fn_selector: struct) */
    test_insert1_then_get2_then_nullify2_all_in_nested_calls: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike, insert_fn_selector: FunctionSelectorLike, get_then_nullify_fn_selector: FunctionSelectorLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_insert2_then_get2_then_nullify1_all_in_nested_calls(amount: field, owner: struct, sender: struct, insert_fn_selector: struct, get_then_nullify_fn_selector: struct) */
    test_insert2_then_get2_then_nullify1_all_in_nested_calls: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike, insert_fn_selector: FunctionSelectorLike, get_then_nullify_fn_selector: FunctionSelectorLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_insert2_then_get2_then_nullify2_all_in_nested_calls(amount: field, owner: struct, sender: struct, insert_fn_selector: struct, get_then_nullify_fn_selector: struct) */
    test_insert2_then_get2_then_nullify2_all_in_nested_calls: ((amount: FieldLike, owner: AztecAddressLike, sender: AztecAddressLike, insert_fn_selector: FunctionSelectorLike, get_then_nullify_fn_selector: FunctionSelectorLike) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;

    /** test_recursively_create_notes(owner: struct, sender: struct, how_many_recursions: integer) */
    test_recursively_create_notes: ((owner: AztecAddressLike, sender: AztecAddressLike, how_many_recursions: (bigint | number)) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;
  };

  
}
