# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

# pyre-strict

from typing import Dict


class BaseTestGenerator:
    """DOC_STRING"""

    def __init__(self) -> None:
        """Initialize constraints"""
        pass

    def generate_test_case(self) -> tuple[str, str, str, str]:
        """Generate a test case based on constraints"""
        raise NotImplementedError

    def generate_prompt(self, code: str) -> str:
        """Generate a prompt based on the test case based on constraints"""
        raise NotImplementedError

    async def scoring_command(
        self, test_code_path: str, input: str
    ) -> tuple[float, str]:
        """Compile and run the test case"""
        return 0, "Not implemented"

    def score_from_output(self, output: str) -> float:
        """Score the output"""
        raise NotImplementedError

    def generate_test_case_as_dict(self) -> Dict[str, str]:
        """Generate a test case based and return in dict"""
        raise NotImplementedError
