import type { Client } from 'openapi-fetch';
import type { RequestOptions } from './common.js';
import type { FeatureCreateInputs, operations, paths } from './schemas.js';
/**
 * Features
 * @description Features are the building blocks of your application. They represent the capabilities or services that your application offers.
 */
export declare class Features {
    private client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * Create a feature
     * @param feature - The feature to create
     * @param signal - An optional abort signal
     * @returns The created feature
     */
    create(feature: FeatureCreateInputs, options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly archivedAt?: Date;
        key: string;
        name: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        meterSlug?: string;
        meterGroupByFilters?: {
            [key: string]: string;
        };
        advancedMeterGroupByFilters?: {
            [key: string]: import("./schemas.js").components["schemas"]["FilterString"];
        };
        unitCost?: import("./schemas.js").components["schemas"]["FeatureUnitCost"];
        readonly id: string;
    } | undefined>;
    /**
     * Get a feature by ID
     * @param id - The ID of the feature
     * @param signal - An optional abort signal
     * @returns The feature
     */
    get(id: operations['getFeature']['parameters']['path']['featureId'], options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly archivedAt?: Date;
        key: string;
        name: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        meterSlug?: string;
        meterGroupByFilters?: {
            [key: string]: string;
        };
        advancedMeterGroupByFilters?: {
            [key: string]: import("./schemas.js").components["schemas"]["FilterString"];
        };
        unitCost?: import("./schemas.js").components["schemas"]["FeatureUnitCost"];
        readonly id: string;
    } | undefined>;
    /**
     * List features
     * @param query - The query parameters
     * @param signal - An optional abort signal
     * @returns The features
     */
    list(query?: Omit<operations['listFeatures']['parameters']['query'], 'page' | 'pageSize'>, options?: RequestOptions): Promise<{
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly archivedAt?: Date;
        key: string;
        name: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"];
        meterSlug?: string;
        meterGroupByFilters?: {
            [key: string]: string;
        };
        advancedMeterGroupByFilters?: {
            [key: string]: import("./schemas.js").components["schemas"]["FilterString"];
        };
        unitCost?: import("./schemas.js").components["schemas"]["FeatureUnitCost"];
        readonly id: string;
    }[]>;
    /**
     * Delete a feature by ID
     * @param id - The ID of the feature
     * @param signal - An optional abort signal
     * @returns The deleted feature
     */
    delete(id: operations['deleteFeature']['parameters']['path']['featureId'], options?: RequestOptions): Promise<undefined>;
}
