import type { ReversePixelMapperFactory } from "./ReversePixelMapperFactory"; import type { Pool } from "../pool"; import { Distortion } from "./Distortion"; import { type AffineFactory, type AffineProjectionFactory, type ArcFactory, type PerspectiveFactory, type PerspectiveProjectionFactory, PolynomialFactory } from "./distortions"; /** * Reverse pixel mapper factories pool key map. */ export interface ReversePixelMapperFactoriesPoolKeyMap { /** * Arc distortion. */ [Distortion.ARC]: ArcFactory; /** * Affine distortion. */ [Distortion.AFFINE]: AffineFactory; /** * AffineProjection distortion. */ [Distortion.AFFINE_PROJECTION]: AffineProjectionFactory; /** * Perspective distortion. */ [Distortion.PERSPECTIVE]: PerspectiveFactory; /** * PerspectiveProjection distortion. */ [Distortion.PERSPECTIVE_PROJECTION]: PerspectiveProjectionFactory; /** * Polynomial distortion. */ [Distortion.POLYNOMIAL]: PolynomialFactory; /** * Custom ReversePixelMapperFactory. */ [key: Distortion | string]: ReversePixelMapperFactory; } /** * Reverse pixel mapper factories pool. */ export type ReversePixelMapperFactoriesPool = Pool; /** * Utility type to infer ReversePixelMapperFactory args type by its name. */ export type GetReversePixelMapperFactoryArgs = T extends keyof ReversePixelMapperFactoriesPoolKeyMap ? ReversePixelMapperFactoriesPoolKeyMap[T] extends ReversePixelMapperFactory ? A : number[] : number[];