Type Alias MethodsToContractApi<M>

MethodsToContractApi: {
    [Name in keyof M]: M[Name] extends (...args: infer Args) => infer Ret
        ? (
            ...args: [
                ...Args,
                ...| []
                | [Name extends "init" ? Parameters<(...)>[1] : Parameters<(...)>[2]],
            ],
        ) => Promise<
            Omit<Awaited<ReturnType<Contract<M>["$call"]>>, "decodedResult"> & {
                decodedResult: Ret;
            },
        >
        : never
}

Type Parameters