# Interface methods for submodule: MattesMutualInformationImageToImageMetricv4
from typing import Union, Any
# additional imports
from .support.template_class import itkTemplate as _itkTemplate
from ._proxies import ObjectToObjectMetricBaseTemplateProxy as _ObjectToObjectMetricBaseTemplateProxy


# Interface methods for class: MattesMutualInformationImageToImageMetricv4
class MattesMutualInformationImageToImageMetricv4Proxy(_ObjectToObjectMetricBaseTemplateProxy):
	def GetNameOfClass(self):
		""""""
		...

	def Initialize(self) -> None:
		""""""
		...

	def GetNumberOfParameters(self) -> int:
		""""""
		...

	def GetNumberOfLocalParameters(self) -> int:
		""""""
		...

	def SetParameters(self, params) -> None:
		""""""
		...

	def GetParameters(self):
		""""""
		...

	def HasLocalSupport(self) -> bool:
		""""""
		...

	def UpdateTransformParameters(self, derivative: Sequence[float], factor: float) -> None:
		""""""
		...

	def SetFixedTransform(self, _arg) -> None:
		""""""
		...

	def GetModifiableFixedTransform(self):
		""""""
		...

	def GetFixedTransform(self):
		""""""
		...

	def SetMovingTransform(self, _arg) -> None:
		""""""
		...

	def GetModifiableMovingTransform(self):
		""""""
		...

	def GetMovingTransform(self):
		""""""
		...

	def SetTransform(self, transform) -> None:
		""""""
		...

	def GetTransform(self):
		""""""
		...

	def GetNumberOfValidPoints(self) -> int:
		""""""
		...

	def SetVirtualDomain(self, spacing: Sequence[float], origin: Sequence[float], direction, region: ImageRegion) -> None:
		""""""
		...

	def SetVirtualDomainFromImage(self, virtualImage) -> None:
		""""""
		...

	def SupportsArbitraryVirtualDomainSamples(self) -> bool:
		""""""
		...

	def GetVirtualDomainTimeStamp(self):
		""""""
		...

	def GetVirtualSpacing(self) -> Sequence[float]:
		""""""
		...

	def GetVirtualOrigin(self) -> Sequence[float]:
		""""""
		...

	def GetVirtualDirection(self):
		""""""
		...

	def GetVirtualRegion(self) -> ImageRegion:
		""""""
		...

	def GetModifiableVirtualImage(self):
		""""""
		...

	def GetVirtualImage(self):
		""""""
		...

	def ComputeParameterOffsetFromVirtualIndex(self, index: Sequence[int], numberOfLocalParameters: int) -> int:
		""""""
		...

	def ComputeParameterOffsetFromVirtualPoint(self, point: Sequence[float], numberOfLocalParameters: int) -> int:
		""""""
		...

	@overload
	def IsInsideVirtualDomain(self, point: Sequence[float]) -> bool:
		""""""
		...

	@overload
	def IsInsideVirtualDomain(self, index: Sequence[int]) -> bool:
		""""""
		...

	def GetMetricCategory(self):
		""""""
		...

	def SetFixedObject(self, object) -> None:
		""""""
		...

	def SetMovingObject(self, object) -> None:
		""""""
		...

	def SetFixedImage(self, _arg) -> None:
		""""""
		...

	def GetFixedImage(self):
		""""""
		...

	def SetMovingImage(self, _arg) -> None:
		""""""
		...

	def GetMovingImage(self):
		""""""
		...

	def SetFixedInterpolator(self, _arg) -> None:
		""""""
		...

	def GetModifiableFixedInterpolator(self):
		""""""
		...

	def GetFixedInterpolator(self):
		""""""
		...

	def SetMovingInterpolator(self, _arg) -> None:
		""""""
		...

	def GetModifiableMovingInterpolator(self):
		""""""
		...

	def GetMovingInterpolator(self):
		""""""
		...

	@overload
	def SetMovingImageMask(self, arg) -> None:
		""""""
		...

	@overload
	def SetMovingImageMask(self, _arg) -> None:
		""""""
		...

	def GetMovingImageMask(self):
		""""""
		...

	@overload
	def SetFixedImageMask(self, arg) -> None:
		""""""
		...

	@overload
	def SetFixedImageMask(self, _arg) -> None:
		""""""
		...

	def GetFixedImageMask(self):
		""""""
		...

	@overload
	def SetFixedSampledPointSet(self, arg) -> None:
		""""""
		...

	@overload
	def SetFixedSampledPointSet(self, _arg) -> None:
		""""""
		...

	def GetFixedSampledPointSet(self):
		""""""
		...

	def SetVirtualSampledPointSet(self, _arg) -> None:
		""""""
		...

	def GetVirtualSampledPointSet(self):
		""""""
		...

	def SetUseSampledPointSet(self, _arg: bool) -> None:
		""""""
		...

	def GetUseSampledPointSet(self) -> bool:
		""""""
		...

	def UseSampledPointSetOn(self) -> None:
		""""""
		...

	def UseSampledPointSetOff(self) -> None:
		""""""
		...

	def SetUseVirtualSampledPointSet(self, _arg: bool) -> None:
		""""""
		...

	def GetUseVirtualSampledPointSet(self) -> bool:
		""""""
		...

	def UseVirtualSampledPointSetOn(self) -> None:
		""""""
		...

	def UseVirtualSampledPointSetOff(self) -> None:
		""""""
		...

	def SetFixedImageGradientFilter(self, _arg) -> None:
		""""""
		...

	def GetModifiableFixedImageGradientFilter(self):
		""""""
		...

	def GetFixedImageGradientFilter(self):
		""""""
		...

	def SetMovingImageGradientFilter(self, _arg) -> None:
		""""""
		...

	def GetModifiableMovingImageGradientFilter(self):
		""""""
		...

	def GetMovingImageGradientFilter(self):
		""""""
		...

	def SetFixedImageGradientCalculator(self, _arg) -> None:
		""""""
		...

	def GetModifiableFixedImageGradientCalculator(self):
		""""""
		...

	def GetFixedImageGradientCalculator(self):
		""""""
		...

	def SetMovingImageGradientCalculator(self, _arg) -> None:
		""""""
		...

	def GetModifiableMovingImageGradientCalculator(self):
		""""""
		...

	def GetMovingImageGradientCalculator(self):
		""""""
		...

	def SetUseFixedImageGradientFilter(self, _arg: bool) -> None:
		""""""
		...

	def GetUseFixedImageGradientFilter(self) -> bool:
		""""""
		...

	def UseFixedImageGradientFilterOn(self) -> None:
		""""""
		...

	def UseFixedImageGradientFilterOff(self) -> None:
		""""""
		...

	def SetUseMovingImageGradientFilter(self, _arg: bool) -> None:
		""""""
		...

	def GetUseMovingImageGradientFilter(self) -> bool:
		""""""
		...

	def UseMovingImageGradientFilterOn(self) -> None:
		""""""
		...

	def UseMovingImageGradientFilterOff(self) -> None:
		""""""
		...

	def GetNumberOfWorkUnitsUsed(self) -> int:
		""""""
		...

	def SetMaximumNumberOfWorkUnits(self, number: int) -> None:
		""""""
		...

	def GetMaximumNumberOfWorkUnits(self) -> int:
		""""""
		...

	@overload
	def FinalizeThread(self, arg0: int) -> None:
		""""""
		...

	@overload
	def FinalizeThread(self, threadId: int) -> None:
		""""""
		...

	def GetModifiableFixedImageGradientImage(self):
		""""""
		...

	def GetFixedImageGradientImage(self):
		""""""
		...

	def GetModifiableMovingImageGradientImage(self):
		""""""
		...

	def GetMovingImageGradientImage(self):
		""""""
		...

	def GetNumberOfDomainPoints(self) -> int:
		""""""
		...

	def SetUseFloatingPointCorrection(self, _arg: bool) -> None:
		""""""
		...

	def GetUseFloatingPointCorrection(self) -> bool:
		""""""
		...

	def UseFloatingPointCorrectionOn(self) -> None:
		""""""
		...

	def UseFloatingPointCorrectionOff(self) -> None:
		""""""
		...

	def SetFloatingPointCorrectionResolution(self, _arg: float) -> None:
		""""""
		...

	def GetFloatingPointCorrectionResolution(self) -> float:
		""""""
		...

	def GetValue(self) -> float:
		""""""
		...

	def GetDerivative(self, arg0: Sequence[float]) -> None:
		""""""
		...

	def GetValueAndDerivative(self, value: float, derivative: Sequence[float]) -> None:
		""""""
		...

	def GetNumberOfSkippedFixedSampledPoints(self) -> int:
		""""""
		...

	@staticmethod
	def New():
		""""""
		...

	def Clone(self):
		""""""
		...

	def SetNumberOfHistogramBins(self, _arg: int) -> None:
		""""""
		...

	def GetNumberOfHistogramBins(self) -> int:
		""""""
		...

	def GetJointPDF(self):
		""""""
		...

	def GetJointPDFDerivatives(self):
		""""""
		...

