import {
  createUseReadContract,
  createUseWriteContract,
  createUseSimulateContract,
  createUseWatchContractEvent,
} from 'wagmi/codegen'

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// LSP4DigitalAssetMetadata
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

export const lsp4DigitalAssetMetadataAbi = [
  { type: 'error', inputs: [], name: 'ERC725Y_DataKeysValuesEmptyArray' },
  { type: 'error', inputs: [], name: 'ERC725Y_DataKeysValuesLengthMismatch' },
  { type: 'error', inputs: [], name: 'ERC725Y_MsgValueDisallowed' },
  { type: 'error', inputs: [], name: 'LSP4TokenNameNotEditable' },
  { type: 'error', inputs: [], name: 'LSP4TokenSymbolNotEditable' },
  { type: 'error', inputs: [], name: 'LSP4TokenTypeNotEditable' },
  { type: 'error', inputs: [], name: 'OwnableCannotSetZeroAddressAsOwner' },
  {
    type: 'event',
    anonymous: false,
    inputs: [
      {
        name: 'dataKey',
        internalType: 'bytes32',
        type: 'bytes32',
        indexed: true,
      },
      {
        name: 'dataValue',
        internalType: 'bytes',
        type: 'bytes',
        indexed: false,
      },
    ],
    name: 'DataChanged',
  },
  {
    type: 'event',
    anonymous: false,
    inputs: [
      {
        name: 'previousOwner',
        internalType: 'address',
        type: 'address',
        indexed: true,
      },
      {
        name: 'newOwner',
        internalType: 'address',
        type: 'address',
        indexed: true,
      },
    ],
    name: 'OwnershipTransferred',
  },
  {
    type: 'function',
    inputs: [{ name: 'dataKey', internalType: 'bytes32', type: 'bytes32' }],
    name: 'getData',
    outputs: [{ name: 'dataValue', internalType: 'bytes', type: 'bytes' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKeys', internalType: 'bytes32[]', type: 'bytes32[]' },
    ],
    name: 'getDataBatch',
    outputs: [{ name: 'dataValues', internalType: 'bytes[]', type: 'bytes[]' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [],
    name: 'owner',
    outputs: [{ name: '', internalType: 'address', type: 'address' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [],
    name: 'renounceOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKey', internalType: 'bytes32', type: 'bytes32' },
      { name: 'dataValue', internalType: 'bytes', type: 'bytes' },
    ],
    name: 'setData',
    outputs: [],
    stateMutability: 'payable',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKeys', internalType: 'bytes32[]', type: 'bytes32[]' },
      { name: 'dataValues', internalType: 'bytes[]', type: 'bytes[]' },
    ],
    name: 'setDataBatch',
    outputs: [],
    stateMutability: 'payable',
  },
  {
    type: 'function',
    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
    name: 'supportsInterface',
    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],
    name: 'transferOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
  },
] as const

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// LSP4DigitalAssetMetadataInitAbstract
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

export const lsp4DigitalAssetMetadataInitAbstractAbi = [
  { type: 'error', inputs: [], name: 'ERC725Y_DataKeysValuesEmptyArray' },
  { type: 'error', inputs: [], name: 'ERC725Y_DataKeysValuesLengthMismatch' },
  { type: 'error', inputs: [], name: 'ERC725Y_MsgValueDisallowed' },
  { type: 'error', inputs: [], name: 'LSP4TokenNameNotEditable' },
  { type: 'error', inputs: [], name: 'LSP4TokenSymbolNotEditable' },
  { type: 'error', inputs: [], name: 'LSP4TokenTypeNotEditable' },
  {
    type: 'event',
    anonymous: false,
    inputs: [
      {
        name: 'dataKey',
        internalType: 'bytes32',
        type: 'bytes32',
        indexed: true,
      },
      {
        name: 'dataValue',
        internalType: 'bytes',
        type: 'bytes',
        indexed: false,
      },
    ],
    name: 'DataChanged',
  },
  {
    type: 'event',
    anonymous: false,
    inputs: [
      { name: 'version', internalType: 'uint8', type: 'uint8', indexed: false },
    ],
    name: 'Initialized',
  },
  {
    type: 'event',
    anonymous: false,
    inputs: [
      {
        name: 'previousOwner',
        internalType: 'address',
        type: 'address',
        indexed: true,
      },
      {
        name: 'newOwner',
        internalType: 'address',
        type: 'address',
        indexed: true,
      },
    ],
    name: 'OwnershipTransferred',
  },
  {
    type: 'function',
    inputs: [{ name: 'dataKey', internalType: 'bytes32', type: 'bytes32' }],
    name: 'getData',
    outputs: [{ name: 'dataValue', internalType: 'bytes', type: 'bytes' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKeys', internalType: 'bytes32[]', type: 'bytes32[]' },
    ],
    name: 'getDataBatch',
    outputs: [{ name: 'dataValues', internalType: 'bytes[]', type: 'bytes[]' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [],
    name: 'owner',
    outputs: [{ name: '', internalType: 'address', type: 'address' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [],
    name: 'renounceOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKey', internalType: 'bytes32', type: 'bytes32' },
      { name: 'dataValue', internalType: 'bytes', type: 'bytes' },
    ],
    name: 'setData',
    outputs: [],
    stateMutability: 'payable',
  },
  {
    type: 'function',
    inputs: [
      { name: 'dataKeys', internalType: 'bytes32[]', type: 'bytes32[]' },
      { name: 'dataValues', internalType: 'bytes[]', type: 'bytes[]' },
    ],
    name: 'setDataBatch',
    outputs: [],
    stateMutability: 'payable',
  },
  {
    type: 'function',
    inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
    name: 'supportsInterface',
    outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
    stateMutability: 'view',
  },
  {
    type: 'function',
    inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],
    name: 'transferOwnership',
    outputs: [],
    stateMutability: 'nonpayable',
  },
] as const

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// React
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__
 */
export const useReadLsp4DigitalAssetMetadata =
  /*#__PURE__*/ createUseReadContract({ abi: lsp4DigitalAssetMetadataAbi })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"getData"`
 */
export const useReadLsp4DigitalAssetMetadataGetData =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'getData',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"getDataBatch"`
 */
export const useReadLsp4DigitalAssetMetadataGetDataBatch =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'getDataBatch',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"owner"`
 */
export const useReadLsp4DigitalAssetMetadataOwner =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'owner',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"supportsInterface"`
 */
export const useReadLsp4DigitalAssetMetadataSupportsInterface =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'supportsInterface',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__
 */
export const useWriteLsp4DigitalAssetMetadata =
  /*#__PURE__*/ createUseWriteContract({ abi: lsp4DigitalAssetMetadataAbi })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"renounceOwnership"`
 */
export const useWriteLsp4DigitalAssetMetadataRenounceOwnership =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'renounceOwnership',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"setData"`
 */
export const useWriteLsp4DigitalAssetMetadataSetData =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'setData',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"setDataBatch"`
 */
export const useWriteLsp4DigitalAssetMetadataSetDataBatch =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'setDataBatch',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"transferOwnership"`
 */
export const useWriteLsp4DigitalAssetMetadataTransferOwnership =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'transferOwnership',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__
 */
export const useSimulateLsp4DigitalAssetMetadata =
  /*#__PURE__*/ createUseSimulateContract({ abi: lsp4DigitalAssetMetadataAbi })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"renounceOwnership"`
 */
export const useSimulateLsp4DigitalAssetMetadataRenounceOwnership =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'renounceOwnership',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"setData"`
 */
export const useSimulateLsp4DigitalAssetMetadataSetData =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'setData',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"setDataBatch"`
 */
export const useSimulateLsp4DigitalAssetMetadataSetDataBatch =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'setDataBatch',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `functionName` set to `"transferOwnership"`
 */
export const useSimulateLsp4DigitalAssetMetadataTransferOwnership =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataAbi,
    functionName: 'transferOwnership',
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__
 */
export const useWatchLsp4DigitalAssetMetadataEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataAbi,
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `eventName` set to `"DataChanged"`
 */
export const useWatchLsp4DigitalAssetMetadataDataChangedEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataAbi,
    eventName: 'DataChanged',
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataAbi}__ and `eventName` set to `"OwnershipTransferred"`
 */
export const useWatchLsp4DigitalAssetMetadataOwnershipTransferredEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataAbi,
    eventName: 'OwnershipTransferred',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__
 */
export const useReadLsp4DigitalAssetMetadataInitAbstract =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"getData"`
 */
export const useReadLsp4DigitalAssetMetadataInitAbstractGetData =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'getData',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"getDataBatch"`
 */
export const useReadLsp4DigitalAssetMetadataInitAbstractGetDataBatch =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'getDataBatch',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"owner"`
 */
export const useReadLsp4DigitalAssetMetadataInitAbstractOwner =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'owner',
  })

/**
 * Wraps __{@link useReadContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"supportsInterface"`
 */
export const useReadLsp4DigitalAssetMetadataInitAbstractSupportsInterface =
  /*#__PURE__*/ createUseReadContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'supportsInterface',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__
 */
export const useWriteLsp4DigitalAssetMetadataInitAbstract =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"renounceOwnership"`
 */
export const useWriteLsp4DigitalAssetMetadataInitAbstractRenounceOwnership =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'renounceOwnership',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"setData"`
 */
export const useWriteLsp4DigitalAssetMetadataInitAbstractSetData =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'setData',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"setDataBatch"`
 */
export const useWriteLsp4DigitalAssetMetadataInitAbstractSetDataBatch =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'setDataBatch',
  })

/**
 * Wraps __{@link useWriteContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"transferOwnership"`
 */
export const useWriteLsp4DigitalAssetMetadataInitAbstractTransferOwnership =
  /*#__PURE__*/ createUseWriteContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'transferOwnership',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__
 */
export const useSimulateLsp4DigitalAssetMetadataInitAbstract =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"renounceOwnership"`
 */
export const useSimulateLsp4DigitalAssetMetadataInitAbstractRenounceOwnership =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'renounceOwnership',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"setData"`
 */
export const useSimulateLsp4DigitalAssetMetadataInitAbstractSetData =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'setData',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"setDataBatch"`
 */
export const useSimulateLsp4DigitalAssetMetadataInitAbstractSetDataBatch =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'setDataBatch',
  })

/**
 * Wraps __{@link useSimulateContract}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `functionName` set to `"transferOwnership"`
 */
export const useSimulateLsp4DigitalAssetMetadataInitAbstractTransferOwnership =
  /*#__PURE__*/ createUseSimulateContract({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    functionName: 'transferOwnership',
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__
 */
export const useWatchLsp4DigitalAssetMetadataInitAbstractEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `eventName` set to `"DataChanged"`
 */
export const useWatchLsp4DigitalAssetMetadataInitAbstractDataChangedEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    eventName: 'DataChanged',
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `eventName` set to `"Initialized"`
 */
export const useWatchLsp4DigitalAssetMetadataInitAbstractInitializedEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    eventName: 'Initialized',
  })

/**
 * Wraps __{@link useWatchContractEvent}__ with `abi` set to __{@link lsp4DigitalAssetMetadataInitAbstractAbi}__ and `eventName` set to `"OwnershipTransferred"`
 */
export const useWatchLsp4DigitalAssetMetadataInitAbstractOwnershipTransferredEvent =
  /*#__PURE__*/ createUseWatchContractEvent({
    abi: lsp4DigitalAssetMetadataInitAbstractAbi,
    eventName: 'OwnershipTransferred',
  })
