/* Autogenerated file. Do not edit manually. */

/* eslint-disable max-classes-per-file */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/consistent-type-imports */

/*
  Fuels version: 0.96.1
*/

import { Contract, ContractFactory, decompressBytecode } from "fuels";
import type {
  Provider,
  Account,
  DeployContractOptions,
  DeployContractResult,
} from "fuels";

import { PythContract } from "./PythContract";

const bytecode = decompressBytecode(
  "[encoded data, 62512 characters]",
);

export class PythContractFactory extends ContractFactory {
  static readonly bytecode = bytecode;

  constructor(accountOrProvider: Account | Provider) {
    super(bytecode, PythContract.abi, accountOrProvider);
  }

  override deploy<TContract extends Contract = Contract>(
    deployOptions?: DeployContractOptions,
  ): Promise<DeployContractResult<TContract>> {
    return super.deploy({
      storageSlots: PythContract.storageSlots,
      ...deployOptions,
    });
  }

  static async deploy(
    wallet: Account,
    options: DeployContractOptions = {},
  ): Promise<DeployContractResult<PythContract>> {
    const factory = new PythContractFactory(wallet);
    return factory.deploy(options);
  }
}
