import { ActivityLogBaseUseCase, BaseDataDTO, BasePayloadDTO, BasePayloadPropsDTO } from '../../activity-log-base-use-case.dto';
import { ActivityLogDocumentDTO, ActivityLogObjectDataDTO, ActivityLogObjectIdDTO, ActivityLogPayloadDTO, ActivityLogSchemeDTO, ChangeBaseDTO } from '../../dtos';
import { ACTIVITY_EVENT_TYPES, ACTIVITY_LOG_USE_CASES, ACTIVITY_OBJECT_TYPES } from '../../enums';
export type SchemeState = ActivityLogSchemeDTO & {
    roles: {
        name: string;
        permissions: {
            name: string;
            key: string;
        }[];
    }[];
};
type PayloadDTO = BasePayloadPropsDTO & Pick<BasePayloadDTO<SchemeState>, 'community' | 'originalState' | 'currentState'>;
type DataDTO = Pick<BaseDataDTO<ActivityLogSchemeDTO>, 'actor' | 'community' | 'object'> & {
    changes: {
        id?: ChangeBaseDTO<SchemeState['id']>;
        name?: ChangeBaseDTO<SchemeState['name']>;
        description?: ChangeBaseDTO<SchemeState['description']>;
        roles?: ChangeBaseDTO<SchemeState['roles']>;
    };
};
export declare class BaseSchemeLog extends ActivityLogBaseUseCase<DataDTO> {
    static readonly useCase: ACTIVITY_LOG_USE_CASES.CREATE_GENERAL_SCHEME | ACTIVITY_LOG_USE_CASES.UPDATE_GENERAL_SCHEME | ACTIVITY_LOG_USE_CASES.DELETE_GENERAL_SCHEME | ACTIVITY_LOG_USE_CASES.CREATE_GROUP_SCHEME | ACTIVITY_LOG_USE_CASES.UPDATE_GROUP_SCHEME | ACTIVITY_LOG_USE_CASES.DELETE_GROUP_SCHEME;
    static readonly eventType: ACTIVITY_EVENT_TYPES.CREATE | ACTIVITY_EVENT_TYPES.UPDATE | ACTIVITY_EVENT_TYPES.DELETE;
    static readonly objectType: ACTIVITY_OBJECT_TYPES.GENERAL_SCHEME | ACTIVITY_OBJECT_TYPES.GROUP_SCHEME;
    static toPayload(data: PayloadDTO): ActivityLogPayloadDTO<PayloadDTO>;
    static toDocument(payload: ActivityLogPayloadDTO<PayloadDTO>): ActivityLogDocumentDTO<DataDTO>;
    toObjectIds(): ActivityLogObjectIdDTO;
    toData(objectData: ActivityLogObjectDataDTO): DataDTO;
}
export {};
