import { scrapeConventionalSuffixes } from "helpers";
import { StubContext, StubContextMutator } from "../core/StubContext";
import { StubContractConfig } from "../types";

export function StubContract (config?: StubContractConfig): ClassDecorator {

    return <TFunction extends Function>(constructor: TFunction) => {

        const props = {
            path: scrapeConventionalSuffixes(constructor.name),
            ...config
        };

        const ctx = StubContext.getContext(props.contextDomain) as StubContextMutator;

        return ctx.defineContract(
            props,
            constructor
        );
    }
}