import type { AbstractFeature, AbstractFeatures, Feature, FeatureComputer, InferFeatureName, InferFeatureReturnType, InferParentComputeType } from "@protontech/autofill/types"; import type { Fnode } from "@protontech/fathom"; export declare const feature: (name: N, parents: P, compute: (parents: InferParentComputeType

, fnode: Fnode) => R, opts?: { private?: true; }) => Feature; export declare const featureCount: (feat: Feature) => Feature<`${N}Count`, number, { [x: string]: Feature; }>; export declare const featureScaled: (feat: Feature, min: number, max: number) => Feature<`${N}Scaled`, number, Record>>; export declare const featuresInnerProduct: , F1> & Record, F2>>(feat1: F1, feat2: F2) => Feature<`${InferFeatureName},${InferFeatureName}`, number, P>; export declare const featuresProduct: , F1> & Record, F2>>(feat1: F1, feat2: F2) => Feature<`${InferFeatureName},${InferFeatureName}`, number, P>; type FlatFeature = Feature, InferFeatureReturnType, AbstractFeatures>; type FlatFeatures = { [K in keyof F]: FlatFeature; }; export declare const flattenFeatures: (features: F) => FlatFeatures; export declare const getComputerForFeatures: ({ sorted, features, private: privateFeatures }: { sorted: readonly AbstractFeature[]; features: readonly string[]; private: readonly string[]; }) => FeatureComputer>; export declare const validateComputerInputs: ({ sorted, features, private: privateFeatures }: { sorted: readonly AbstractFeature[]; features: readonly string[]; private: readonly string[]; }) => void; export declare const topologicalSort: (features: AbstractFeatures) => AbstractFeature[]; export declare const computeFeatures: (featureComputer: FeatureComputer, fnode: Fnode) => import("@protontech/autofill/types").ComputedFeatures; export {};