import type { CustomProperty } from '../../../domain/generated/output.js';
import type { ICustomPropertyRepository } from '../../ports/output/repositories/custom-property-repository.interface.js';
export interface CreateCustomPropertyInput {
    projectId: string;
    name: string;
    propertyType: string;
    options?: string;
    isRequired?: boolean;
    displayOrder?: number;
}
export type ManageCustomPropertyResult = {
    ok: true;
    property?: CustomProperty;
    properties?: CustomProperty[];
} | {
    ok: false;
    error: string;
};
export declare class ManageCustomPropertiesUseCase {
    private readonly propRepo;
    constructor(propRepo: ICustomPropertyRepository);
    list(projectId: string): Promise<CustomProperty[]>;
    create(input: CreateCustomPropertyInput): Promise<ManageCustomPropertyResult>;
    update(propertyId: string, fields: Partial<Pick<CustomProperty, 'name' | 'propertyType' | 'options' | 'isRequired' | 'displayOrder'>>): Promise<ManageCustomPropertyResult>;
    delete(propertyId: string): Promise<ManageCustomPropertyResult>;
}
//# sourceMappingURL=manage-custom-properties.use-case.d.ts.map