"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UpdateIncidentDto = exports.UpdateVisitorPassDto = exports.UpdateVisitorDto = exports.UpdateGuardDto = exports.UpdateResidentDto = exports.UpdateUserDto = exports.ProviderParamDto = exports.UpdateIntegrationConfigDto = exports.UpdateOtpConfigDto = exports.ContactEstateAdminDto = exports.AssignEstatePartnerDto = exports.UpdateSalesPartnerProfileDto = exports.CreateSubscriptionPlanDto = exports.UpdateSubscriptionPlanDto = exports.UpdatePaymentProviderSettingDto = exports.ConfirmEstatePaymentDto = exports.ReviewEstateSignupDto = exports.UpdateEstateDto = void 0;
const client_1 = require("@prisma/client");
const swagger_1 = require("@nestjs/swagger");
const class_transformer_1 = require("class-transformer");
const class_validator_1 = require("class-validator");
const otp_types_1 = require("../../auth/otp.types");
const swagger_docs_1 = require("../../common/swagger-docs");
const feature_catalog_1 = require("../../features/feature-catalog");
class UpdateEstateDto {
    name;
    location;
    unitCount;
    estateType;
    settings;
    branding;
}
exports.UpdateEstateDto = UpdateEstateDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'GreenPark Estate', description: 'Updated estate name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateEstateDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Lagos, Nigeria', description: 'Updated estate location.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateEstateDto.prototype, "location", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 120, description: 'Updated estate unit/resident count.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateEstateDto.prototype, "unitCount", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Residential gated community', description: 'Updated estate type.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateEstateDto.prototype, "estateType", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { timezone: 'Africa/Lagos' }, description: 'Replace estate settings JSON.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateEstateDto.prototype, "settings", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { primaryColor: '#0f766e' }, description: 'Replace estate branding JSON.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateEstateDto.prototype, "branding", void 0);
class ReviewEstateSignupDto {
    status;
    reviewNotes;
}
exports.ReviewEstateSignupDto = ReviewEstateSignupDto;
__decorate([
    (0, swagger_1.ApiProperty)({
        enum: [client_1.EstateSignupStatus.APPROVED, client_1.EstateSignupStatus.REJECTED, client_1.EstateSignupStatus.SUSPENDED],
        example: client_1.EstateSignupStatus.APPROVED,
        description: 'Super-admin review decision for a pending estate admin signup.'
    }),
    (0, class_validator_1.IsEnum)(client_1.EstateSignupStatus),
    __metadata("design:type", String)
], ReviewEstateSignupDto.prototype, "status", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Payment pending. Approved for plan selection.', description: 'Internal review note.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], ReviewEstateSignupDto.prototype, "reviewNotes", void 0);
class ConfirmEstatePaymentDto {
    paymentReference;
}
exports.ConfirmEstatePaymentDto = ConfirmEstatePaymentDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: 'FLU-1778881112222-a1b2c3d4',
        description: 'Confirm a specific payment reference. Latest pending payment is used if omitted. Hosted checkout payments are verified against the provider sandbox before activation.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], ConfirmEstatePaymentDto.prototype, "paymentReference", void 0);
class UpdatePaymentProviderSettingDto {
    enabled;
}
exports.UpdatePaymentProviderSettingDto = UpdatePaymentProviderSettingDto;
__decorate([
    (0, swagger_1.ApiProperty)({ example: true, description: 'Whether the provider is enabled.' }),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdatePaymentProviderSettingDto.prototype, "enabled", void 0);
class UpdateSubscriptionPlanDto {
    name;
    minResidents;
    maxResidents;
    monthlyPriceKobo;
    oldMonthlyPriceKobo;
    currency;
    customPricing;
    description;
    isActive;
    ctaLabel;
    sortOrder;
    trialDays;
    gracePeriodDays;
    publicVisible;
    residentMarketingEnabled;
    limits;
    metadata;
    features;
}
exports.UpdateSubscriptionPlanDto = UpdateSubscriptionPlanDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Starter', description: 'Plan display name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSubscriptionPlanDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 0, description: 'Minimum residents/units for this plan.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "minResidents", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 100, description: 'Maximum residents/units. Omit for no upper bound.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(1),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "maxResidents", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 20000000, description: 'Monthly price in kobo.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "monthlyPriceKobo", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 30000000, description: 'Previous monthly price in kobo for discounted/strikethrough display.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "oldMonthlyPriceKobo", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'NGN', description: 'Plan currency.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSubscriptionPlanDto.prototype, "currency", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: false, description: 'Whether pricing is custom/manual.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSubscriptionPlanDto.prototype, "customPricing", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '0-100 residents/units', description: 'Plan description.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSubscriptionPlanDto.prototype, "description", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether this plan is selectable.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSubscriptionPlanDto.prototype, "isActive", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Upgrade to Secure', description: 'CTA label shown to admins.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSubscriptionPlanDto.prototype, "ctaLabel", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 20, description: 'Ordering position for public and resident comparisons.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "sortOrder", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 30, description: 'Free trial days.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "trialDays", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 30, description: 'Grace period days after payment or billing issue.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateSubscriptionPlanDto.prototype, "gracePeriodDays", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether this plan is shown publicly.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSubscriptionPlanDto.prototype, "publicVisible", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether residents can see feature comparisons for this plan.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSubscriptionPlanDto.prototype, "residentMarketingEnabled", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { gates: 3, residents: 500, guards: 10 }, description: 'Plan limits used by backend enforcement.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateSubscriptionPlanDto.prototype, "limits", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { recommended: true }, description: 'Plan display and operational metadata.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateSubscriptionPlanDto.prototype, "metadata", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        enum: feature_catalog_1.FeatureKey,
        isArray: true,
        example: [feature_catalog_1.FeatureKey.RESIDENTS_VIEW, feature_catalog_1.FeatureKey.VISITOR_PASSES_CREATE, feature_catalog_1.FeatureKey.CHECKIN_SCAN],
        description: 'Feature keys included in this plan. Supplying this replaces the plan feature list.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.ArrayUnique)(),
    (0, class_validator_1.IsEnum)(feature_catalog_1.FeatureKey, { each: true }),
    __metadata("design:type", Array)
], UpdateSubscriptionPlanDto.prototype, "features", void 0);
class CreateSubscriptionPlanDto {
    code;
    name;
    minResidents;
    maxResidents;
    monthlyPriceKobo;
    oldMonthlyPriceKobo;
    currency;
    customPricing;
    description;
    isActive;
    ctaLabel;
    sortOrder;
    trialDays;
    gracePeriodDays;
    publicVisible;
    residentMarketingEnabled;
    limits;
    metadata;
    features;
}
exports.CreateSubscriptionPlanDto = CreateSubscriptionPlanDto;
__decorate([
    (0, swagger_1.ApiProperty)({ example: 'CUSTOM_LUXURY', description: 'Unique plan code. Use stable uppercase snake case.' }),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSubscriptionPlanDto.prototype, "code", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({ example: 'Luxury Custom', description: 'Plan display name.' }),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSubscriptionPlanDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({ example: 301, description: 'Minimum residents/units for this plan.' }),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "minResidents", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: null, description: 'Maximum residents/units. Omit for no upper bound.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(1),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "maxResidents", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 150000000, description: 'Monthly price in kobo. May be supplied for custom plans.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "monthlyPriceKobo", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 200000000, description: 'Previous monthly price in kobo for discounted/strikethrough display.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "oldMonthlyPriceKobo", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'NGN', description: 'Plan currency.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSubscriptionPlanDto.prototype, "currency", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether pricing is custom/manual.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], CreateSubscriptionPlanDto.prototype, "customPricing", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Custom-priced plan for high-end estates.', description: 'Plan description.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSubscriptionPlanDto.prototype, "description", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether this plan is selectable.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], CreateSubscriptionPlanDto.prototype, "isActive", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Talk to GateWise', description: 'CTA label shown to admins.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], CreateSubscriptionPlanDto.prototype, "ctaLabel", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 40, description: 'Ordering position for public and resident comparisons.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "sortOrder", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 30, description: 'Free trial days.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "trialDays", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 30, description: 'Grace period days after payment or billing issue.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], CreateSubscriptionPlanDto.prototype, "gracePeriodDays", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether this plan is shown publicly.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], CreateSubscriptionPlanDto.prototype, "publicVisible", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether residents can see feature comparisons for this plan.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], CreateSubscriptionPlanDto.prototype, "residentMarketingEnabled", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { gates: 10, residents: 5000 }, description: 'Plan limits used by backend enforcement.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], CreateSubscriptionPlanDto.prototype, "limits", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { recommendedFor: 'Large estates' }, description: 'Plan display and operational metadata.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], CreateSubscriptionPlanDto.prototype, "metadata", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        enum: feature_catalog_1.FeatureKey,
        isArray: true,
        example: [feature_catalog_1.FeatureKey.RESIDENTS_VIEW, feature_catalog_1.FeatureKey.GUARDS_VIEW, feature_catalog_1.FeatureKey.CHECKIN_SCAN],
        description: 'Feature keys included in this plan. Estate admins cannot enable features outside this list.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.ArrayUnique)(),
    (0, class_validator_1.IsEnum)(feature_catalog_1.FeatureKey, { each: true }),
    __metadata("design:type", Array)
], CreateSubscriptionPlanDto.prototype, "features", void 0);
class UpdateSalesPartnerProfileDto {
    enabled;
    commissionPercent;
    notes;
}
exports.UpdateSalesPartnerProfileDto = UpdateSalesPartnerProfileDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Enable partner earning status for this sales admin.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateSalesPartnerProfileDto.prototype, "enabled", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 7.5, description: 'Commission percentage earned on confirmed payments for assigned estates.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsNumber)(),
    (0, class_validator_1.Min)(0),
    (0, class_validator_1.Max)(100),
    __metadata("design:type", Number)
], UpdateSalesPartnerProfileDto.prototype, "commissionPercent", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Strategic partner for Lekki estates.', description: 'Internal partner notes.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateSalesPartnerProfileDto.prototype, "notes", void 0);
class AssignEstatePartnerDto {
    salesAdminId;
}
exports.AssignEstatePartnerDto = AssignEstatePartnerDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: swagger_docs_1.USER_ID_EXAMPLE,
        description: 'Sales admin user ID to assign to this estate. Omit or set null to clear the partner assignment.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", Object)
], AssignEstatePartnerDto.prototype, "salesAdminId", void 0);
class ContactEstateAdminDto {
    channel;
    message;
    metadata;
}
exports.ContactEstateAdminDto = ContactEstateAdminDto;
__decorate([
    (0, swagger_1.ApiProperty)({ enum: ['SMS', 'WHATSAPP', 'EMAIL', 'CALL'], example: 'SMS', description: 'Contact channel to queue or record.' }),
    (0, class_validator_1.IsIn)(['SMS', 'WHATSAPP', 'EMAIL', 'CALL']),
    __metadata("design:type", String)
], ContactEstateAdminDto.prototype, "channel", void 0);
__decorate([
    (0, swagger_1.ApiProperty)({
        example: 'Please complete your subscription payment so we can activate your estate.',
        description: 'Message or call note for the assigned estate admin.'
    }),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], ContactEstateAdminDto.prototype, "message", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { reason: 'PAYMENT_PENDING' }, description: 'Additional context for audit and frontend history.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], ContactEstateAdminDto.prototype, "metadata", void 0);
class UpdateOtpConfigDto {
    provider;
    enabledProviders;
    providerPriority;
    ttlSeconds;
    codeLength;
    maxAttempts;
    exposeDevCode;
    termiiBaseUrl;
    termiiApiKey;
    termiiSenderId;
    termiiChannel;
    africasTalkingBaseUrl;
    africasTalkingUsername;
    africasTalkingApiKey;
    africasTalkingSenderId;
    customHttpUrl;
    customHttpMethod;
    customHttpHeadersJson;
    customHttpBodyTemplate;
}
exports.UpdateOtpConfigDto = UpdateOtpConfigDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        enum: otp_types_1.OtpDeliveryProvider,
        example: otp_types_1.OtpDeliveryProvider.DEV,
        description: 'Shortcut for setting the primary OTP provider. DEV keeps local seeded OTP behavior; Termii and Africa\'s Talking send real SMS; CUSTOM_HTTP calls a super-admin supplied SMS endpoint.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(otp_types_1.OtpDeliveryProvider),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "provider", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        enum: otp_types_1.OtpDeliveryProvider,
        isArray: true,
        example: [otp_types_1.OtpDeliveryProvider.TERMII, otp_types_1.OtpDeliveryProvider.AFRICAS_TALKING],
        description: 'Providers allowed to send OTPs. Disable a provider by removing it from this list.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.ArrayUnique)(),
    (0, class_validator_1.IsEnum)(otp_types_1.OtpDeliveryProvider, { each: true }),
    __metadata("design:type", Array)
], UpdateOtpConfigDto.prototype, "enabledProviders", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        enum: otp_types_1.OtpDeliveryProvider,
        isArray: true,
        example: [otp_types_1.OtpDeliveryProvider.TERMII, otp_types_1.OtpDeliveryProvider.AFRICAS_TALKING, otp_types_1.OtpDeliveryProvider.CUSTOM_HTTP],
        description: 'Fallback order for enabled providers. The first enabled provider is the primary delivery route.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.ArrayUnique)(),
    (0, class_validator_1.IsEnum)(otp_types_1.OtpDeliveryProvider, { each: true }),
    __metadata("design:type", Array)
], UpdateOtpConfigDto.prototype, "providerPriority", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 300, description: 'OTP lifetime in seconds.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(60),
    __metadata("design:type", Number)
], UpdateOtpConfigDto.prototype, "ttlSeconds", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 6, description: 'Numeric OTP length. Supported range is 4 to 8 digits.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(4),
    (0, class_validator_1.Max)(8),
    __metadata("design:type", Number)
], UpdateOtpConfigDto.prototype, "codeLength", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 5, description: 'Maximum verification attempts before the OTP challenge is invalidated.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(1),
    __metadata("design:type", Number)
], UpdateOtpConfigDto.prototype, "maxAttempts", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: false, description: 'Whether login responses should include devOtp. Keep false outside local development.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateOtpConfigDto.prototype, "exposeDevCode", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://api.ng.termii.com', description: 'Termii base URL from the Termii dashboard.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "termiiBaseUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'TERMII_API_KEY', description: 'Termii API key. Stored in memory for the running process.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "termiiApiKey", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'SmartEstate', description: 'Approved Termii sender ID.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "termiiSenderId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'dnd', description: 'Termii SMS route. Use dnd for transactional OTP when enabled on the Termii account.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "termiiChannel", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://api.africastalking.com/version1/messaging', description: "Africa's Talking SMS endpoint." }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "africasTalkingBaseUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'smart-estate', description: "Africa's Talking app username. Use sandbox for their sandbox environment." }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "africasTalkingUsername", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'AFRICASTALKING_API_KEY', description: "Africa's Talking API key. Stored in memory for the running process." }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "africasTalkingApiKey", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'SmartEstate', description: "Africa's Talking sender ID, if approved for the account." }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "africasTalkingSenderId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://sms.example.com/send', description: 'Custom HTTP SMS endpoint for self-managed OTP delivery.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "customHttpUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'POST', description: 'Custom HTTP method. POST is recommended.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "customHttpMethod", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: '{"Authorization":"Bearer sms_api_key"}',
        description: 'JSON object of headers for the custom SMS endpoint.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "customHttpHeadersJson", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: '{"to":"{{phone}}","message":"{{message}}","code":"{{otp}}"}',
        description: 'JSON template for the custom SMS request body. Supported placeholders: {{phone}}, {{otp}}, {{code}}, {{message}}.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateOtpConfigDto.prototype, "customHttpBodyTemplate", void 0);
class UpdateIntegrationConfigDto {
    category;
    displayName;
    enabled;
    publicConfig;
    secretConfig;
    clearPublicKeys;
    clearSecretKeys;
}
exports.UpdateIntegrationConfigDto = UpdateIntegrationConfigDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: 'PAYMENT',
        description: 'Integration category. Required only when creating a custom provider. Supported values: PAYMENT, SMS, EMAIL, CUSTOM.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateIntegrationConfigDto.prototype, "category", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Flutterwave', description: 'Display name shown in the super-admin UI.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateIntegrationConfigDto.prototype, "displayName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether this integration profile is enabled.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateIntegrationConfigDto.prototype, "enabled", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: { baseUrl: 'https://api.flutterwave.com/v3', publicKey: 'FLWPUBK_LIVE_xxx' },
        description: 'Non-secret values that may be returned to the super-admin UI.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateIntegrationConfigDto.prototype, "publicConfig", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({
        example: { secretKey: 'FLWSECK_LIVE_xxx', encryptionKey: 'FLW_ENCRYPTION_KEY' },
        description: 'Secret values. These are encrypted at rest and never returned by GET responses.'
    }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateIntegrationConfigDto.prototype, "secretConfig", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: ['publicKey'], description: 'Public config keys to remove.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.IsString)({ each: true }),
    __metadata("design:type", Array)
], UpdateIntegrationConfigDto.prototype, "clearPublicKeys", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: ['secretKey'], description: 'Secret config keys to remove.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsArray)(),
    (0, class_validator_1.IsString)({ each: true }),
    __metadata("design:type", Array)
], UpdateIntegrationConfigDto.prototype, "clearSecretKeys", void 0);
class ProviderParamDto {
    provider;
}
exports.ProviderParamDto = ProviderParamDto;
__decorate([
    (0, swagger_1.ApiProperty)({ enum: client_1.PaymentProvider, example: client_1.PaymentProvider.FLUTTERWAVE }),
    (0, class_validator_1.IsEnum)(client_1.PaymentProvider),
    __metadata("design:type", String)
], ProviderParamDto.prototype, "provider", void 0);
class UpdateUserDto {
    name;
    phone;
    firstName;
    lastName;
    email;
    address;
    status;
    estateId;
}
exports.UpdateUserDto = UpdateUserDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Updated User', description: 'Updated user display name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '+2348000000999', description: 'Updated unique phone number.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsPhoneNumber)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "phone", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Ade', description: 'Updated first name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "firstName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Okafor', description: 'Updated last name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "lastName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'ade@example.com', description: 'Updated email address.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "email", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Block A, Flat 12', description: 'Updated address.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "address", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ enum: client_1.AccountStatus, example: client_1.AccountStatus.SUSPENDED, description: 'Account status.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(client_1.AccountStatus),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "status", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: swagger_docs_1.ESTATE_ID_EXAMPLE, description: 'Move user to another estate. Use carefully.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateUserDto.prototype, "estateId", void 0);
class UpdateResidentDto {
    name;
    phone;
    unit;
    firstName;
    lastName;
    blockNumber;
    flatNumber;
    address;
    email;
    profilePictureUrl;
    profileConfirmed;
    status;
}
exports.UpdateResidentDto = UpdateResidentDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Ade Okafor', description: 'Updated resident name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '+2348000000300', description: 'Updated resident phone.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsPhoneNumber)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "phone", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'A12', description: 'Updated resident unit.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "unit", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Ade', description: 'Updated first name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "firstName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Okafor', description: 'Updated last name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "lastName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Block A', description: 'Updated block number.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "blockNumber", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Flat 12', description: 'Updated flat or apartment number.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "flatNumber", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Block A, Flat 12', description: 'Updated address.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "address", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'ade@example.com', description: 'Updated email address.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "email", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://cdn.example.com/profile.jpg', description: 'Updated profile picture URL.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "profilePictureUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether resident confirmed the profile.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateResidentDto.prototype, "profileConfirmed", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ enum: client_1.AccountStatus, example: client_1.AccountStatus.ACTIVE, description: 'Resident account status.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(client_1.AccountStatus),
    __metadata("design:type", String)
], UpdateResidentDto.prototype, "status", void 0);
class UpdateGuardDto {
    name;
    phone;
    deviceId;
    firstName;
    lastName;
    assignedGateId;
    address;
    profilePictureUrl;
    emergencyContact;
    assignedShifts;
    profileConfirmed;
    status;
}
exports.UpdateGuardDto = UpdateGuardDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Ade Okafor', description: 'Updated guard name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '+2348000000200', description: 'Updated guard phone.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsPhoneNumber)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "phone", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'guard-device-002', description: 'Updated guard device assignment.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "deviceId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Musa', description: 'Updated first name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "firstName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'John', description: 'Updated last name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "lastName", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'gate-uuid', description: 'Assigned gate ID.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "assignedGateId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '12 Unity Road', description: 'Updated guard address.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "address", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://cdn.example.com/guard.jpg', description: 'Updated profile picture URL.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "profilePictureUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { name: 'Emergency Contact', phone: '+2348000000999' }, description: 'Emergency contact object.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateGuardDto.prototype, "emergencyContact", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: [{ day: 'MONDAY', startsAt: '08:00', endsAt: '18:00' }], description: 'Assigned shift metadata.' }),
    (0, class_validator_1.IsOptional)(),
    __metadata("design:type", Array)
], UpdateGuardDto.prototype, "assignedShifts", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether guard confirmed the profile.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateGuardDto.prototype, "profileConfirmed", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ enum: client_1.AccountStatus, example: client_1.AccountStatus.ACTIVE, description: 'Guard account status.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(client_1.AccountStatus),
    __metadata("design:type", String)
], UpdateGuardDto.prototype, "status", void 0);
class UpdateVisitorDto {
    estateId;
    name;
    phone;
    photoUrl;
    vehiclePlate;
    riskScore;
    flagged;
    blacklisted;
    riskNotes;
}
exports.UpdateVisitorDto = UpdateVisitorDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: swagger_docs_1.ESTATE_ID_EXAMPLE, description: 'Move visitor record to another estate.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "estateId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'John Osetese', description: 'Updated visitor name.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "name", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '+2348111111111', description: 'Updated visitor phone.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsPhoneNumber)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "phone", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'https://example.com/photo.jpg', description: 'Updated visitor photo URL.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "photoUrl", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'LND-123-AB', description: 'Updated vehicle plate.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "vehiclePlate", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 45, description: 'Visitor risk score from 0 to 100.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    (0, class_validator_1.Max)(100),
    __metadata("design:type", Number)
], UpdateVisitorDto.prototype, "riskScore", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Whether visitor is internally flagged.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateVisitorDto.prototype, "flagged", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: false, description: 'Whether visitor is blacklisted.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsBoolean)(),
    __metadata("design:type", Boolean)
], UpdateVisitorDto.prototype, "blacklisted", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Missed checkout twice.', description: 'Internal risk notes.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateVisitorDto.prototype, "riskNotes", void 0);
class UpdateVisitorPassDto {
    status;
    passType;
    validFrom;
    validUntil;
    maxEntries;
    entryCount;
}
exports.UpdateVisitorPassDto = UpdateVisitorPassDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ enum: client_1.VisitorPassStatus, example: client_1.VisitorPassStatus.REVOKED, description: 'Visitor pass status.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(client_1.VisitorPassStatus),
    __metadata("design:type", String)
], UpdateVisitorPassDto.prototype, "status", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ enum: client_1.VisitorPassType, example: client_1.VisitorPassType.MULTI_ENTRY, description: 'Visitor pass type.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsEnum)(client_1.VisitorPassType),
    __metadata("design:type", String)
], UpdateVisitorPassDto.prototype, "passType", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '2026-05-16T08:00:00.000Z', description: 'Updated validity start.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_transformer_1.Type)(() => Date),
    (0, class_validator_1.IsDate)(),
    __metadata("design:type", Date)
], UpdateVisitorPassDto.prototype, "validFrom", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: '2026-05-16T18:00:00.000Z', description: 'Updated validity end.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_transformer_1.Type)(() => Date),
    (0, class_validator_1.IsDate)(),
    __metadata("design:type", Date)
], UpdateVisitorPassDto.prototype, "validUntil", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 3, description: 'Updated maximum allowed entries.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(1),
    __metadata("design:type", Number)
], UpdateVisitorPassDto.prototype, "maxEntries", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 0, description: 'Updated used entry count.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsInt)(),
    (0, class_validator_1.Min)(0),
    __metadata("design:type", Number)
], UpdateVisitorPassDto.prototype, "entryCount", void 0);
class UpdateIncidentDto {
    guardId;
    type;
    description;
    metadata;
}
exports.UpdateIncidentDto = UpdateIncidentDto;
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: swagger_docs_1.GUARD_ID_EXAMPLE, description: 'Reassign incident to another guard.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateIncidentDto.prototype, "guardId", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'SECURITY', description: 'Updated incident type.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateIncidentDto.prototype, "type", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: 'Updated incident description', description: 'Updated incident details.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsString)(),
    __metadata("design:type", String)
], UpdateIncidentDto.prototype, "description", void 0);
__decorate([
    (0, swagger_1.ApiPropertyOptional)({ example: { gate: 'Main Gate' }, description: 'Replace incident metadata JSON.' }),
    (0, class_validator_1.IsOptional)(),
    (0, class_validator_1.IsObject)(),
    __metadata("design:type", Object)
], UpdateIncidentDto.prototype, "metadata", void 0);
//# sourceMappingURL=admin.dto.js.map