import type { WidgetExample, WidgetExampleAssetAndPromptInput, WidgetExampleAssetAndTextInput, WidgetExampleAssetAndZeroShotInput, WidgetExampleAssetInput, WidgetExampleSentenceSimilarityInput, WidgetExampleStructuredDataInput, WidgetExampleTableDataInput, WidgetExampleTextAndContextInput, WidgetExampleTextAndTableInput, WidgetExampleTextInput, WidgetExampleZeroShotTextInput, } from "@huggingface/tasks"; export function isTextInput(sample: WidgetExample): sample is WidgetExampleTextInput { return "text" in sample; } export function isTextAndContextInput( sample: WidgetExample ): sample is WidgetExampleTextAndContextInput { return isTextInput(sample) && "context" in sample; } export function isAssetInput(sample: WidgetExample): sample is WidgetExampleAssetInput { return "src" in sample; } export function isAssetAndPromptInput( sample: WidgetExample ): sample is WidgetExampleAssetAndPromptInput { return isAssetInput(sample) && "prompt" in sample && typeof sample.prompt === "string"; } export function isAssetAndTextInput( sample: WidgetExample ): sample is WidgetExampleAssetAndTextInput { return isAssetInput(sample) && isTextInput(sample); } export function isStructuredDataInput( sample: WidgetExample ): sample is WidgetExampleStructuredDataInput { return "structured_data" in sample; } export function isTableDataInput( sample: WidgetExample ): sample is WidgetExampleTableDataInput { return "table" in sample; } function _isZeroShotTextInput( sample: WidgetExample ): sample is Exclude, "text"> { return "candidate_labels" in sample && "multi_class" in sample; } export function isZeroShotTextInput( sample: WidgetExample ): sample is WidgetExampleZeroShotTextInput { return isTextInput(sample) && _isZeroShotTextInput(sample); } export function isSentenceSimilarityInput( sample: WidgetExample ): sample is WidgetExampleSentenceSimilarityInput { return "source_sentence" in sample && "sentences" in sample; } export function isTextAndTableInput( sample: WidgetExample ): sample is WidgetExampleTextAndTableInput { return ( isTextInput(sample) && "table" in sample && Array.isArray(sample.table) && sample.table.every((r) => Array.isArray(r) && r.every((c) => typeof c === "string" || typeof c === "number")) ); } export function isAssetAndZeroShotInput( sample: WidgetExample ): sample is WidgetExampleAssetAndZeroShotInput { return isAssetInput(sample) && _isZeroShotTextInput(sample); }