import { WebGLRenderer } from 'three'; import { ShaderPass } from './Postprocessing/ShaderPass'; import { EffectComposer } from './Postprocessing/EffectComposer'; import { TestScene, CylinderSpinParams, SceneTemplate } from './scenes/testScene'; export interface SlotMachine3DProps { renderContainer: HTMLElement; numbersRollTextureURL: string; slotTextureURL: string; backgroundHexColor?: number; caption?: string; font?: string; fontSize?: string; fillStyle?: string; onSpinStart?: (spinNumber: number) => void; onSpinFinish?: (spinNumber: number) => void | Promise; sceneTemplate?: Partial; } export default class SlotMachine3D { props: SlotMachine3DProps; spinQueue: number[]; isWaitingForSpinFinish: boolean; currScene: TestScene; prevTime: number; enabled: boolean; pixelRatio: number; renderer: WebGLRenderer; composer: EffectComposer; effectColorCorrection?: ShaderPass; constructor(props: SlotMachine3D['props']); spin(number: number): void; setSpinConfig(config: [CylinderSpinParams, CylinderSpinParams, CylinderSpinParams]): void; enableGlitchSpinSlot(): void; disableGlitchSpinSlot(): void; enableGlitchSpinCaption(): void; disableGlitchSpinCaption(): void; enableCameraShake(): void; disableCameraShake(): void; setCameraShakeAmplitude(amplitude: number): void; setCameraShakesPerSecond(shakesPerSecond: number): void; setCaption(caption: string): void; onSpinFinish: (spinNumber: number) => Promise; spinFromQueue(): void; updateRenderSize(): void; update: () => void; } export { SlotMachine3D };