import type { QRCodeRenderersOptions, QRCodeSegment } from 'qrcode'

export type ContentType = string | QRCodeSegment[]

export type { QRCodeRenderersOptions }

export interface LogoType {
    src: string
    logoSize: number
    borderColor: string
    bgColor: string
    borderSize: number
    crossOrigin: string
    borderRadius: number
    logoRadius: number
}

export interface RenderQrCodeParams {
    canvas: any
    content: ContentType
    width?: number
    options?: QRCodeRenderersOptions
    logo?: LogoType | string
    image?: HTMLImageElement
    downloadName?: string
    download?: boolean | Fn
}

export type ToCanvasFn = (options: RenderQrCodeParams) => Promise<unknown>

export interface QrCodeActionType {
    download: (fileName?: string) => void
}

export interface QrcodeDoneEventParams {
    url: string
    ctx?: CanvasRenderingContext2D | null
}
