export declare class Product {
    id: string;
    tenantId: string;
    name: string;
    description: string;
    serviceListItem: string;
    cnaeCode: string;
    issAliquota: number;
    issExigibility: number;
    issRetained: boolean;
    serviceCityCode: string;
    discrimination: string;
    contractTemplate: string;
    status: string;
    variants: ProductVariant[];
    createdAt: Date;
    updatedAt: Date;
}
export declare class ProductVariant {
    id: string;
    productId: string;
    tenantId: string;
    name: string;
    price: number;
    billingCycle: string;
    setupFee: number;
    description: string;
    isDefault: boolean;
    status: string;
    product: Product;
    createdAt: Date;
    updatedAt: Date;
}
export declare class CreateProductVariantDto {
    id?: string;
    name: string;
    price: number;
    billingCycle: string;
    setupFee?: number;
    description?: string;
    isDefault?: boolean;
}
export declare class CreateProductDto {
    name: string;
    description?: string;
    serviceListItem?: string;
    cnaeCode?: string;
    issAliquota?: number;
    issExigibility?: number;
    issRetained?: boolean;
    serviceCityCode?: string;
    discrimination?: string;
    contractTemplate?: string;
    variants: CreateProductVariantDto[];
}
export declare class UpdateProductDto extends CreateProductDto {
}
import { Repository, DataSource } from 'typeorm';
export declare class ProductsService {
    private readonly productRepo;
    private readonly variantRepo;
    private readonly dataSource;
    constructor(productRepo: Repository<Product>, variantRepo: Repository<ProductVariant>, dataSource: DataSource);
    create(tenantId: string, dto: CreateProductDto): Promise<Product>;
    findAll(tenantId: string, status?: string): Promise<(Product & {
        isUsed: boolean;
    })[]>;
    findOne(tenantId: string, id: string): Promise<Product>;
    update(tenantId: string, id: string, dto: UpdateProductDto): Promise<Product>;
    remove(tenantId: string, id: string): Promise<{
        action: 'deleted' | 'inactive';
    }>;
}
export declare class ProductsController {
    private readonly productsService;
    constructor(productsService: ProductsService);
    create(dto: CreateProductDto, req: any): Promise<Product>;
    findAll(status: string, req: any): Promise<(Product & {
        isUsed: boolean;
    })[]>;
    findOne(id: string, req: any): Promise<Product>;
    update(id: string, dto: UpdateProductDto, req: any): Promise<Product>;
    remove(id: string, req: any): Promise<{
        action: "deleted" | "inactive";
    }>;
}
export declare class ProductsModule {
}
