import { Feature } from './feature';
import { UsageLimit } from './usage-limit';
export interface AddOn {
    name: string;
    description?: string;
    price: number | string;
    unit: string;
    private: boolean;
    availableFor: string[];
    dependsOn?: string[];
    excludes?: string[];
    features?: {
        [key: string]: Feature;
    };
    usageLimits?: {
        [key: string]: UsageLimit;
    };
    usageLimitsExtensions?: {
        [key: string]: UsageLimit;
    };
    subscriptionConstraints: {
        minQuantity: number;
        maxQuantity: number;
        quantityStep: number;
    };
}
export declare function getAddOnNames(addOns?: Record<string, AddOn>): string[];
export declare function getAddOnPrices(addOns?: Record<string, AddOn>): number[];
export declare function calculateAddOnsFeaturesMatrix(features: Record<string, Feature>, addOns: Record<string, AddOn>): number[][];
export declare function calculateAddOnsUsageLimitsMatrix(usageLimits: Record<string, UsageLimit>, addOns: Record<string, AddOn>): number[][];
export declare function calculateAddOnsUsageLimitsExtensionsMatrix(usageLimits: Record<string, UsageLimit>, addOns: Record<string, AddOn>): number[][];
export declare function calculateAddOnAvailableForMatrix(planNames: string[], addOns?: Record<string, AddOn>): number[][];
export declare function calculateAddOnsDependsOnOExcludesMatrix(addOns?: Record<string, AddOn>, field?: "dependsOn" | "excludes"): number[][];
