import { UserRole, EventCategory, EventStatus, OrderItemType, PaymentMethod, NotificationType, MerchandiseCategory, EventMediaType, EventArtistRole, ApprovalStatus } from './enums';
export interface CreateUserDto {
    id: string;
    username: string;
    email: string;
    phone?: string;
    password: string;
    role: UserRole;
    profileData?: CreateUserProfileDto | CreateArtistProfileDto | CreatePromotorProfileDto;
}
export interface LoginDto {
    username: string;
    password: string;
}
export interface UpdateUserDto {
    username?: string;
    email?: string;
    phone?: string;
    password?: string;
}
export interface CreateUserProfileDto {
    fullName?: string;
    dateOfBirth?: string;
    gender?: string;
    profileImageUrl?: string;
    address?: string;
    city?: string;
    province?: string;
    postalCode?: string;
    nik?: string;
    preferences?: Record<string, any>;
}
export interface UpdateUserProfileDto {
    fullName?: string;
    dateOfBirth?: string;
    gender?: string;
    profileImageUrl?: string;
    address?: string;
    city?: string;
    province?: string;
    postalCode?: string;
    nik?: string;
    preferences?: Record<string, any>;
}
export interface CreatePromotorProfileDto {
    companyName: string;
    fullName: string;
    phoneBusiness?: string;
    address?: string;
    city?: string;
    province?: string;
    postalCode?: string;
    bankName?: string;
    bankAccountNumber?: string;
    bankAccountName?: string;
    taxId?: string;
    businessLicense?: string;
    verificationDocuments?: any[];
}
export interface UpdatePromotorProfileDto {
    companyName?: string;
    fullName?: string;
    phoneBusiness?: string;
    address?: string;
    city?: string;
    province?: string;
    postalCode?: string;
    bankName?: string;
    bankAccountNumber?: string;
    bankAccountName?: string;
    taxId?: string;
    businessLicense?: string;
    verificationDocuments?: any[];
}
export interface CreateArtistProfileDto {
    stageName: string;
    fullName: string;
    bio?: string;
    genre?: string[];
    profileImageUrl?: string;
    bannerImageUrl?: string;
    socialMedia?: Record<string, string>;
    bankName?: string;
    bankAccountNumber?: string;
    bankAccountName?: string;
    verificationDocuments?: any[];
}
export interface UpdateArtistProfileDto {
    stageName?: string;
    fullName?: string;
    bio?: string;
    genre?: string[];
    profileImageUrl?: string;
    bannerImageUrl?: string;
    socialMedia?: Record<string, string>;
    bankName?: string;
    bankAccountNumber?: string;
    bankAccountName?: string;
    verificationDocuments?: any[];
}
export interface CreateAdminProfileDto {
    fullName: string;
    employeeId?: string;
    department?: string;
    position?: string;
    phoneNumber?: string;
    emergencyContact?: string;
    permissions?: string[];
}
export interface UpdateAdminProfileDto {
    fullName?: string;
    employeeId?: string;
    department?: string;
    position?: string;
    phoneNumber?: string;
    emergencyContact?: string;
    permissions?: string[];
}
export interface CreateEventDto {
    title: string;
    description: string;
    shortDescription?: string;
    startDate: string;
    endDate: string;
    location: string;
    venueName?: string;
    venueAddress?: string;
    venueCapacity?: number;
    category: EventCategory;
    promotorId?: string;
    imageUrl?: string;
    bannerImageUrl?: string;
    imageObjectKey?: string;
    bannerObjectKey?: string;
    galleryObjectKeys?: string[];
    maxCapacity?: number;
    priceStartFrom?: number;
    isFeatured?: boolean;
    isHighlight?: boolean;
    highlightOrder?: number;
    minAge?: number;
    contactInfo?: Record<string, any>;
    terms?: string;
    artistIds?: string[];
    tags?: string[];
    metadata?: Record<string, any>;
}
export interface UpdateEventDto {
    title?: string;
    description?: string;
    shortDescription?: string;
    startDate?: string;
    endDate?: string;
    location?: string;
    venueName?: string;
    venueAddress?: string;
    venueCapacity?: number;
    category?: EventCategory;
    status?: EventStatus;
    imageUrl?: string;
    bannerImageUrl?: string;
    imageObjectKey?: string;
    bannerObjectKey?: string;
    galleryObjectKeys?: string[];
    maxCapacity?: number;
    priceStartFrom?: number;
    isFeatured?: boolean;
    isHighlight?: boolean;
    highlightOrder?: number;
    minAge?: number;
    contactInfo?: Record<string, any>;
    terms?: string;
    artistIds?: string[];
    tags?: string[];
    metadata?: Record<string, any>;
}
export interface CreateEventScheduleDto {
    eventId: string;
    title: string;
    description?: string;
    startTime: string;
    endTime: string;
    location?: string;
    speakers?: string[];
    isBreak?: boolean;
    order: number;
}
export interface UpdateEventScheduleDto {
    title?: string;
    description?: string;
    startTime?: string;
    endTime?: string;
    location?: string;
    speakers?: string[];
    isBreak?: boolean;
    order?: number;
}
export interface EventQueryDto {
    page?: number;
    limit?: number;
    search?: string;
    category?: EventCategory;
    status?: EventStatus;
    location?: string;
    startDate?: string;
    endDate?: string;
    organizerId?: string;
    isFeatured?: boolean;
    tags?: string[];
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface CreateEventMediaDto {
    eventId: string;
    type: EventMediaType;
    url: string;
    title?: string;
    description?: string;
    order?: number;
    metadata?: Record<string, any>;
}
export interface UpdateEventMediaDto {
    type?: EventMediaType;
    url?: string;
    title?: string;
    description?: string;
    order?: number;
    metadata?: Record<string, any>;
}
export interface CreateEventArtistDto {
    eventId: string;
    artistId?: string;
    name: string;
    role: EventArtistRole;
    bio?: string;
    imageUrl?: string;
    socialMedia?: Record<string, string>;
    order?: number;
    metadata?: Record<string, any>;
}
export interface UpdateEventArtistDto {
    artistId?: string;
    name?: string;
    role?: EventArtistRole;
    bio?: string;
    imageUrl?: string;
    socialMedia?: Record<string, string>;
    order?: number;
    metadata?: Record<string, any>;
}
export interface CreateEventReviewDto {
    eventId: string;
    userId?: string;
    rating: number;
    title?: string;
    comment?: string;
    isAnonymous?: boolean;
    metadata?: Record<string, any>;
}
export interface UpdateEventReviewDto {
    rating?: number;
    title?: string;
    comment?: string;
    isAnonymous?: boolean;
    metadata?: Record<string, any>;
}
export interface CreateTicketDto {
    ticketTypeId: string;
    orderId?: string;
    userId?: string;
    customerInfo: {
        name: string;
        email: string;
        phone?: string;
    };
    seatNumber?: string;
    metadata?: Record<string, any>;
}
export interface UpdateTicketDto {
    status?: string;
    seatNumber?: string;
    metadata?: Record<string, any>;
}
export interface TicketQueryDto {
    page?: number;
    limit?: number;
    eventId?: string;
    userId?: string;
    status?: string;
    ticketTypeId?: string;
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface CreateTicketTypeDto {
    eventId: string;
    name: string;
    description?: string;
    price: number;
    quantityTotal: number;
    saleStartDate?: string;
    saleEndDate?: string;
    benefits?: string[];
    hasSeating?: boolean;
    metadata?: Record<string, any>;
}
export interface UpdateTicketTypeDto {
    name?: string;
    description?: string;
    price?: number;
    quantityTotal?: number;
    saleStartDate?: string;
    saleEndDate?: string;
    benefits?: string[];
    hasSeating?: boolean;
    metadata?: Record<string, any>;
}
export interface CreateTicketReservationDto {
    ticketTypeId: string;
    quantity: number;
    customerInfo: {
        name: string;
        email: string;
        phone?: string;
    };
    expiresAt?: string;
}
export interface OrderItemDto {
    itemType: OrderItemType;
    itemId: string;
    itemName: string;
    itemDescription?: string;
    unitPrice: number;
    quantity: number;
    discountAmount?: number;
    itemData?: Record<string, any>;
}
export interface CreateOrderDto {
    items: OrderItemDto[];
    customerInfo: {
        name: string;
        email: string;
        phone?: string;
        address?: string;
    };
    shippingInfo?: {
        address: string;
        city: string;
        postalCode: string;
        country: string;
        method?: string;
    };
    discountCode?: string;
    notes?: string;
    metadata?: Record<string, any>;
}
export interface UpdateOrderDto {
    status?: string;
    customerInfo?: {
        name?: string;
        email?: string;
        phone?: string;
        address?: string;
    };
    shippingInfo?: {
        address?: string;
        city?: string;
        postalCode?: string;
        country?: string;
        method?: string;
        trackingNumber?: string;
    };
    notes?: string;
    metadata?: Record<string, any>;
}
export interface ApplyDiscountDto {
    orderId: string;
    discountCode: string;
}
export interface CreatePaymentDto {
    orderId: string;
    amount: number;
    currency?: string;
    method: PaymentMethod;
    provider?: string;
    returnUrl?: string;
    metadata?: Record<string, any>;
}
export interface UpdatePaymentDto {
    status?: string;
    paidAt?: string;
    gatewayTransactionId?: string;
    gatewayResponse?: Record<string, any>;
    metadata?: Record<string, any>;
}
export interface CreatePaymentRefundDto {
    paymentId: string;
    amount?: number;
    reason: string;
    metadata?: Record<string, any>;
}
export interface CreateNotificationDto {
    recipientId: string;
    type: NotificationType;
    title: string;
    message: string;
    data?: Record<string, any>;
    scheduledAt?: string;
    metadata?: Record<string, any>;
}
export interface UpdateNotificationDto {
    title?: string;
    message?: string;
    data?: Record<string, any>;
    isRead?: boolean;
    scheduledAt?: string;
    metadata?: Record<string, any>;
}
export interface BulkNotificationDto {
    recipientIds: string[];
    type: NotificationType;
    title: string;
    message: string;
    data?: Record<string, any>;
    scheduledAt?: string;
    metadata?: Record<string, any>;
}
export interface CreateMerchandiseDto {
    name: string;
    description?: string;
    shortDescription?: string;
    category: MerchandiseCategory;
    subcategory?: string;
    tags?: string[];
    eventId?: string;
    basePrice: number;
    salePrice?: number;
    costPrice?: number;
    trackInventory?: boolean;
    totalStock?: number;
    images?: string[];
    weight?: number;
    dimensions?: {
        length: number;
        width: number;
        height: number;
    };
    metadata?: Record<string, any>;
}
export interface UpdateMerchandiseDto {
    name?: string;
    description?: string;
    shortDescription?: string;
    category?: MerchandiseCategory;
    subcategory?: string;
    tags?: string[];
    basePrice?: number;
    salePrice?: number;
    costPrice?: number;
    trackInventory?: boolean;
    totalStock?: number;
    images?: string[];
    weight?: number;
    dimensions?: {
        length?: number;
        width?: number;
        height?: number;
    };
    metadata?: Record<string, any>;
}
export interface CreateMerchandiseVariantDto {
    merchandiseId: string;
    name: string;
    sku?: string;
    price?: number;
    stock: number;
    attributes: Record<string, string>;
    images?: string[];
    isActive?: boolean;
}
export interface CreateMerchandiseOrderDto {
    merchandiseId: string;
    variantId?: string;
    quantity: number;
    customerInfo: {
        name: string;
        email: string;
        phone?: string;
        address: string;
    };
    shippingMethod?: string;
    notes?: string;
}
export interface FileUploadDto {
    file: File;
    category?: string;
    metadata?: Record<string, any>;
}
export interface MultipleFileUploadDto {
    files: File[];
    category?: string;
    metadata?: Record<string, any>;
}
export interface SearchDto {
    query: string;
    filters?: Record<string, any>;
    page?: number;
    limit?: number;
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface EventFilterDto {
    category?: EventCategory;
    status?: EventStatus;
    location?: string;
    startDate?: string;
    endDate?: string;
    minPrice?: number;
    maxPrice?: number;
    organizerId?: string;
    isFeatured?: boolean;
    tags?: string[];
}
export interface MerchandiseFilterDto {
    category?: MerchandiseCategory;
    minPrice?: number;
    maxPrice?: number;
    inStock?: boolean;
    eventId?: string;
    ownerId?: string;
    tags?: string[];
}
export interface AnalyticsQueryDto {
    startDate: string;
    endDate: string;
    granularity?: 'day' | 'week' | 'month';
    filters?: Record<string, any>;
}
export interface ReportQueryDto {
    type: 'sales' | 'events' | 'users' | 'tickets';
    startDate: string;
    endDate: string;
    format?: 'json' | 'csv' | 'pdf';
    filters?: Record<string, any>;
}
export interface ApproveEventDto {
    eventId: string;
    approvedBy: string;
    approvalNotes?: string;
    metadata?: Record<string, any>;
}
export interface RejectEventDto {
    eventId: string;
    rejectedBy: string;
    rejectionReason: string;
    rejectionNotes?: string;
    metadata?: Record<string, any>;
}
export interface EventApprovalQueryDto {
    page?: number;
    limit?: number;
    status?: ApprovalStatus;
    approvedBy?: string;
    rejectedBy?: string;
    startDate?: string;
    endDate?: string;
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface CreateSystemSettingDto {
    category: string;
    key: string;
    value: any;
    dataType: string;
    description?: string;
    isEncrypted?: boolean;
    requiresRestart?: boolean;
    isActive?: boolean;
    environment?: string;
    validation?: {
        required?: boolean;
        min?: number;
        max?: number;
        pattern?: string;
        enum?: string[];
        customValidator?: string;
    };
    metadata?: {
        group?: string;
        order?: number;
        tags?: string[];
        icon?: string;
        helpText?: string;
        warningMessage?: string;
    };
    defaultValue?: string;
    isReadOnly?: boolean;
    isSystemGenerated?: boolean;
}
export interface UpdateSystemSettingDto {
    value?: any;
    description?: string;
    isActive?: boolean;
    validation?: {
        required?: boolean;
        min?: number;
        max?: number;
        pattern?: string;
        enum?: string[];
        customValidator?: string;
    };
    metadata?: {
        group?: string;
        order?: number;
        tags?: string[];
        icon?: string;
        helpText?: string;
        warningMessage?: string;
    };
    changeReason?: string;
}
export interface BulkUpdateSettingsDto {
    settings: Array<{
        category: string;
        key: string;
        value: any;
        changeReason?: string;
    }>;
    source?: string;
    batchId?: string;
}
export interface SystemSettingQueryDto {
    page?: number;
    limit?: number;
    category?: string;
    environment?: string;
    isActive?: boolean;
    isEncrypted?: boolean;
    requiresRestart?: boolean;
    search?: string;
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface CreateFeatureFlagDto {
    name: string;
    displayName: string;
    description?: string;
    type?: string;
    status?: string;
    scope?: string;
    isEnabled?: boolean;
    rolloutPercentage?: number;
    targetCriteria?: {
        userIds?: string[];
        roles?: string[];
        countries?: string[];
        cities?: string[];
        deviceTypes?: string[];
        browserTypes?: string[];
        ipRanges?: string[];
        userSegments?: string[];
        customAttributes?: Record<string, any>;
    };
    environment?: string;
    startDate?: string;
    endDate?: string;
    configuration?: {
        fallbackValue?: any;
        dependencies?: string[];
        conflictsWith?: string[];
        variants?: Array<{
            name: string;
            value: any;
            percentage: number;
        }>;
    };
    metadata?: {
        category?: string;
        tags?: string[];
        owner?: string;
        jiraTicket?: string;
        documentation?: string;
        priority?: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
    };
    isPermanent?: boolean;
}
export interface UpdateFeatureFlagDto {
    displayName?: string;
    description?: string;
    status?: string;
    isEnabled?: boolean;
    rolloutPercentage?: number;
    targetCriteria?: {
        userIds?: string[];
        roles?: string[];
        countries?: string[];
        cities?: string[];
        deviceTypes?: string[];
        browserTypes?: string[];
        ipRanges?: string[];
        userSegments?: string[];
        customAttributes?: Record<string, any>;
    };
    startDate?: string;
    endDate?: string;
    configuration?: {
        fallbackValue?: any;
        dependencies?: string[];
        conflictsWith?: string[];
        variants?: Array<{
            name: string;
            value: any;
            percentage: number;
        }>;
    };
    metadata?: {
        category?: string;
        tags?: string[];
        owner?: string;
        jiraTicket?: string;
        documentation?: string;
        priority?: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
    };
    isPermanent?: boolean;
}
export interface FeatureFlagQueryDto {
    page?: number;
    limit?: number;
    status?: string;
    scope?: string;
    environment?: string;
    isEnabled?: boolean;
    search?: string;
    category?: string;
    tags?: string[];
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface CreateEmailTemplateDto {
    templateKey: string;
    name: string;
    description?: string;
    type?: string;
    subject: string;
    htmlContent: string;
    textContent?: string;
    format?: string;
    variables?: Array<{
        name: string;
        type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object';
        required: boolean;
        defaultValue?: any;
        description?: string;
        validation?: {
            pattern?: string;
            min?: number;
            max?: number;
            enum?: string[];
        };
    }>;
    sampleData?: Record<string, any>;
    priority?: string;
    isDefault?: boolean;
    isActive?: boolean;
    fromName?: string;
    fromEmail?: string;
    replyTo?: string;
    categories?: string[];
    tags?: string[];
    settings?: {
        trackOpens?: boolean;
        trackClicks?: boolean;
        unsubscribeLink?: boolean;
        customHeaders?: Record<string, string>;
        attachments?: Array<{
            name: string;
            url: string;
            contentType: string;
        }>;
    };
    localization?: Record<string, {
        subject: string;
        htmlContent: string;
        textContent?: string;
    }>;
    parentTemplateId?: string;
    metadata?: {
        designer?: string;
        designTool?: string;
        thumbnailUrl?: string;
        previewUrl?: string;
        testData?: Record<string, any>;
    };
}
export interface UpdateEmailTemplateDto {
    name?: string;
    description?: string;
    subject?: string;
    htmlContent?: string;
    textContent?: string;
    format?: string;
    variables?: Array<{
        name: string;
        type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object';
        required: boolean;
        defaultValue?: any;
        description?: string;
        validation?: {
            pattern?: string;
            min?: number;
            max?: number;
            enum?: string[];
        };
    }>;
    sampleData?: Record<string, any>;
    priority?: string;
    isDefault?: boolean;
    isActive?: boolean;
    fromName?: string;
    fromEmail?: string;
    replyTo?: string;
    categories?: string[];
    tags?: string[];
    settings?: {
        trackOpens?: boolean;
        trackClicks?: boolean;
        unsubscribeLink?: boolean;
        customHeaders?: Record<string, string>;
        attachments?: Array<{
            name: string;
            url: string;
            contentType: string;
        }>;
    };
    localization?: Record<string, {
        subject: string;
        htmlContent: string;
        textContent?: string;
    }>;
    metadata?: {
        designer?: string;
        designTool?: string;
        thumbnailUrl?: string;
        previewUrl?: string;
        testData?: Record<string, any>;
    };
}
export interface EmailTemplateQueryDto {
    page?: number;
    limit?: number;
    type?: string;
    status?: string;
    isActive?: boolean;
    categories?: string[];
    tags?: string[];
    search?: string;
    sortBy?: string;
    sortOrder?: 'ASC' | 'DESC';
}
export interface SettingsExportDto {
    categories?: string[];
    environment?: string;
    includeEncrypted?: boolean;
    format?: 'JSON' | 'YAML' | 'ENV';
}
export interface SettingsImportDto {
    settings: Array<{
        category: string;
        key: string;
        value: any;
        dataType?: string;
        description?: string;
        isEncrypted?: boolean;
        requiresRestart?: boolean;
        environment?: string;
    }>;
    overwriteExisting?: boolean;
    validateOnly?: boolean;
    source?: string;
}
export interface CreateSettingsHistoryDto {
    settingId: string;
    settingKey: string;
    settingCategory: string;
    oldValue: any;
    newValue: any;
    changeType: string;
    source: string;
    changeReason?: string;
    changedBy: string;
    ipAddress?: string;
    metadata?: Record<string, any>;
}
export interface SettingsHistoryQueryDto {
    page?: number;
    limit?: number;
    changeType?: string;
    source?: string;
    settingCategory?: string;
    settingKey?: string;
    changedBy?: string;
    startDate?: string;
    endDate?: string;
    sortOrder?: 'ASC' | 'DESC';
}
//# sourceMappingURL=dtos.d.ts.map