/// /// /// declare module 'chargebee' { export interface Feature { [key: string]: unknown; id: string; name: string; description?: string; status?: 'active' | 'archived' | 'draft'; type?: 'switch' | 'custom' | 'quantity' | 'range'; unit?: string; resource_version?: number; updated_at?: number; created_at: number; levels?: Feature.Level[]; } export namespace Feature { export class FeatureResource { list( input?: ListInputParam, headers?: ChargebeeRequestHeader, ): Promise>; create( input: CreateInputParam, headers?: ChargebeeRequestHeader, ): Promise>; update( feature_id: string, input?: UpdateInputParam, headers?: ChargebeeRequestHeader, ): Promise>; retrieve( feature_id: string, headers?: ChargebeeRequestHeader, ): Promise>; delete( feature_id: string, headers?: ChargebeeRequestHeader, ): Promise>; activate( feature_id: string, headers?: ChargebeeRequestHeader, ): Promise>; archive( feature_id: string, headers?: ChargebeeRequestHeader, ): Promise>; reactivate( feature_id: string, headers?: ChargebeeRequestHeader, ): Promise>; } export interface ListResponse { list: { feature: Feature }[]; next_offset?: string; } export interface CreateResponse { feature: Feature; } export interface UpdateResponse { feature: Feature; } export interface RetrieveResponse { feature: Feature; } export interface DeleteResponse { feature: Feature; } export interface ActivateResponse { feature: Feature; } export interface ArchiveResponse { feature: Feature; } export interface ReactivateResponse { feature: Feature; } export interface Level { name?: string; value: string; level: number; is_unlimited: boolean; } // REQUEST PARAMS //--------------- export interface ListInputParam { limit?: number; offset?: string; name?: filter.String; id?: filter.String; status?: filter.Enum; type?: filter.Enum; [key: `cf_${string}`]: unknown; } export interface CreateInputParam { id?: string; name: string; description?: string; type?: 'switch' | 'custom' | 'quantity' | 'range'; unit?: string; levels?: LevelsCreateInputParam[]; [key: `cf_${string}`]: unknown; } export interface UpdateInputParam { name?: string; description?: string; unit?: string; levels?: LevelsUpdateInputParam[]; [key: `cf_${string}`]: unknown; } export interface LevelsCreateInputParam { name?: string; value?: string; is_unlimited?: boolean; level?: number; } export interface LevelsUpdateInputParam { name?: string; value?: string; is_unlimited?: boolean; level?: number; } } }