import { TrainingParameters as HandTrainingParams } from './gtm-hand/teachable-handpose'; import { TeachableHandPose, type Metadata as HandMetadata } from './gtm-hand'; import * as tf from '@tensorflow/tfjs'; import type { TeachableModel, ExplainedPredictionsOutput, TMType } from './TeachableModel'; import { AudioExample } from './gtm-utils/recorder'; interface TrainingParameters extends HandTrainingParams { } interface BaseMetadata { modelBaseUrl?: string; } export declare type Metadata = BaseMetadata & HandMetadata; export default class HandModel implements TeachableModel { protected model?: TeachableHandPose; protected _ready?: Promise; protected trained: boolean; protected busy: boolean; protected imageSize: number; protected _disposed: boolean; variant: TMType; explained?: HTMLCanvasElement; modelBaseUrl: string; private lastHands; constructor(type: TMType, metadata?: Metadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer); getVariant(): TMType; setXAICanvas(canvas: HTMLCanvasElement): void; setXAIClass(): void; protected load(metadata?: HandMetadata, model?: tf.io.ModelJSON, weights?: ArrayBuffer): Promise; ready(): Promise; draw(image: HTMLCanvasElement): HTMLCanvasElement; estimate(image: HTMLCanvasElement): Promise; predict(image: HTMLCanvasElement, staticImageMode?: boolean): Promise; train(params: TrainingParameters, callbacks: tf.CustomCallbackArgs): Promise; addExample(className: number, image: HTMLCanvasElement | AudioExample, staticImageMode?: boolean): Promise; dispose(): void; setName(name: string): void; getModel(): TeachableHandPose | undefined; getImageSize(): number; isTrained(): boolean; isReady(): boolean; setSeed(seed: string): void; getMetadata(): HandMetadata; save(handler: tf.io.IOHandler): Promise; setLabels(labels: string[]): void; getLabels(): string[]; getLabel(ix: number): string; getNumExamples(): number; getExamplesPerClass(): number[]; getNumValidation(): number; calculateAccuracy(): Promise<{ reference: tf.Tensor; predictions: tf.Tensor; }>; } export {};