import type * as Libpag from 'libpag/src/pag';
import type { PAGFile, PAGLayer, PAG, PAGComposition, PAGView } from 'libpag/src/pag';

export type { PAG, Vector } from 'libpag/src/types';
export type { PAGFile } from 'libpag/src/types';
export type { PAGView, PAGViewOptions } from 'libpag/src/types';
export type { PAGComposition } from 'libpag/src/types';
export type { PAGLayer } from 'libpag/src/types';
export type PAGTypes = typeof Libpag.types;

declare global {
  interface Window {
    WeixinJSBridge?: any;
    libpag?: any;
  }
}

export interface TipPAGWebOptions {
  /**
   * 是否需要自动调用加载
   */
  autoLoad?: boolean;
}
export interface TipPAGWebScaleInfo {
  dpr: typeof window.devicePixelRatio;
  scaleX: number;
  scaleY: number;
  tx: number;
  ty: number;
}

export interface TipPAGWebLoadResult {
  pag: PAG;
  pagTypes: PAGTypes;
}

export interface TipPAGWebCore {
  pagTypes: PAGTypes | null | undefined;
  pagView: PAGView | null | undefined;
  pagFile: PAGFile | null | undefined;
  pagComposition: PAGComposition | null | undefined;
}

export type TipPAGWebBaseLayerInfo = {
  uniqueID: number;
  layerType: typeof Libpag.types.LayerType;
  layerName: string;
  width: number;
  height: number;
  alpha: number;
  visible: boolean;
  editableIndex: number;
  frameRate: number;
  startTime: number;
  duration: number;
};
export interface TipPAGWebLayerInfo extends TipPAGWebBaseLayerInfo {
  layer: PAGLayer;
}
