import { z } from 'zod'; /** ISO 4217 codes supported on marketplace rate cards. */ declare const MarketplaceCurrency: { readonly NGN: "NGN"; }; type MarketplaceCurrency = (typeof MarketplaceCurrency)[keyof typeof MarketplaceCurrency]; /** * Known service category codes for vendor capability filters. * Additional codes may exist in the catalog; listing responses use `z.string()` for `code`. */ declare const ServiceCategoryCode: { readonly SOUND: "sound"; readonly LIGHTING: "lighting"; readonly VIDEO: "video"; readonly STAGING: "staging"; readonly AV: "av"; readonly LOGISTICS: "logistics"; }; type ServiceCategoryCode = (typeof ServiceCategoryCode)[keyof typeof ServiceCategoryCode]; /** Equipment manifest categories on public vendor listings. */ declare const EquipmentCategory: { readonly AUDIO: "audio"; readonly VIDEO: "video"; readonly LIGHTING: "lighting"; readonly STAGING: "staging"; readonly POWER: "power"; readonly OTHER: "other"; }; type EquipmentCategory = (typeof EquipmentCategory)[keyof typeof EquipmentCategory]; declare const ListVendorsQuerySchema: z.ZodObject<{ pageNumber: z.ZodDefault>; pageSize: z.ZodDefault>; category: z.ZodOptional; role: z.ZodOptional; minRate: z.ZodOptional>; maxRate: z.ZodOptional>; availabilityDate: z.ZodOptional; search: z.ZodOptional; }, z.core.$strip>; declare const PublicVendorListEquipmentItemSchema: z.ZodObject<{ id: z.ZodUUID; name: z.ZodString; category: z.ZodEnum<{ readonly AUDIO: "audio"; readonly VIDEO: "video"; readonly LIGHTING: "lighting"; readonly STAGING: "staging"; readonly POWER: "power"; readonly OTHER: "other"; }>; notes: z.ZodNullable; }, z.core.$strip>; declare const PublicVendorListCategorySchema: z.ZodObject<{ id: z.ZodUUID; code: z.ZodString; label: z.ZodString; }, z.core.$strip>; declare const ServiceCategoryListResponseSchema: z.ZodObject<{ items: z.ZodArray>; }, z.core.$strip>; declare const PublicVendorListPortfolioItemSchema: z.ZodObject<{ id: z.ZodUUID; title: z.ZodString; description: z.ZodNullable; mediaUrl: z.ZodNullable; externalUrl: z.ZodNullable; createdAt: z.ZodISODateTime; }, z.core.$strip>; declare const PublicVendorListRateCardItemSchema: z.ZodObject<{ id: z.ZodUUID; label: z.ZodString; amount: z.ZodString; currency: z.ZodEnum<{ readonly NGN: "NGN"; }>; notes: z.ZodNullable; }, z.core.$strip>; /** * Enum values match the Prisma `MessageKind` column. Live wire type * for hiring-thread messages. */ declare const HiringThreadMessageKindSchema: z.ZodEnum<{ SYSTEM: "SYSTEM"; USER: "USER"; }>; /** Matches the Prisma `MessageDeliveryStatus` column. */ declare const HiringThreadMessageDeliveryStatusSchema: z.ZodEnum<{ SENT: "SENT"; DELIVERED: "DELIVERED"; READ: "READ"; }>; /** * Structured payload attached to a `SYSTEM` message. Discriminated on * `kind` — the set is intentionally narrow. Extend the union as new * automated messages get added (booking accepted, cancelled, etc.). */ declare const HiringThreadSystemMessagePayloadSchema: z.ZodObject<{ kind: z.ZodLiteral<"EVENT_RESCHEDULED">; eventId: z.ZodString; fromStart: z.ZodISODateTime; toStart: z.ZodISODateTime; }, z.core.$strip>; /** * Message attachment shape rendered by the hiring-thread inbox + * socket fan-out. `fileName` is normalised server-side (falls back to * the storage key basename if the client didn't send one). */ declare const HiringThreadMessageAttachmentSchema: z.ZodObject<{ id: z.ZodString; url: z.ZodURL; mimeType: z.ZodString; sizeBytes: z.ZodNumber; fileName: z.ZodString; createdAt: z.ZodISODateTime; }, z.core.$strip>; /** * Full hiring-thread message view — the shape returned by the socket * post ACK and by the fan-out event. Kept in one schema so a shared FE * renderer can accept either source. */ declare const HiringThreadMessageSchema: z.ZodObject<{ id: z.ZodString; threadId: z.ZodString; senderUserId: z.ZodNullable; messageKind: z.ZodEnum<{ SYSTEM: "SYSTEM"; USER: "USER"; }>; systemPayload: z.ZodNullable; eventId: z.ZodString; fromStart: z.ZodISODateTime; toStart: z.ZodISODateTime; }, z.core.$strip>>; body: z.ZodString; sentAt: z.ZodISODateTime; deliveryStatus: z.ZodEnum<{ SENT: "SENT"; DELIVERED: "DELIVERED"; READ: "READ"; }>; readAt: z.ZodNullable; attachments: z.ZodArray>; }, z.core.$strip>; /** ACK for `hiring_thread.message.post`. */ declare const HiringThreadPostAckSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ ok: z.ZodLiteral; message: z.ZodObject<{ id: z.ZodString; threadId: z.ZodString; senderUserId: z.ZodNullable; messageKind: z.ZodEnum<{ SYSTEM: "SYSTEM"; USER: "USER"; }>; systemPayload: z.ZodNullable; eventId: z.ZodString; fromStart: z.ZodISODateTime; toStart: z.ZodISODateTime; }, z.core.$strip>>; body: z.ZodString; sentAt: z.ZodISODateTime; deliveryStatus: z.ZodEnum<{ SENT: "SENT"; DELIVERED: "DELIVERED"; READ: "READ"; }>; readAt: z.ZodNullable; attachments: z.ZodArray>; }, z.core.$strip>; }, z.core.$strip>, z.ZodObject<{ ok: z.ZodLiteral; code: z.ZodEnum<{ unauthorized: "unauthorized"; internal: "internal"; invalid_payload: "invalid_payload"; forbidden: "forbidden"; not_found: "not_found"; messaging_closed: "messaging_closed"; rate_limited: "rate_limited"; }>; message: z.ZodString; retryAfterSeconds: z.ZodOptional; }, z.core.$strip>], "ok">; /** ACK for `hiring_thread.message.read`. */ declare const HiringThreadReadAckSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ ok: z.ZodLiteral; markedCount: z.ZodNumber; }, z.core.$strip>, z.ZodObject<{ ok: z.ZodLiteral; code: z.ZodEnum<{ unauthorized: "unauthorized"; internal: "internal"; invalid_payload: "invalid_payload"; forbidden: "forbidden"; not_found: "not_found"; }>; message: z.ZodString; }, z.core.$strip>], "ok">; /** ACK for `hiring_thread.join` / `hiring_thread.leave`. */ declare const HiringThreadJoinAckSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ ok: z.ZodLiteral; threadId: z.ZodString; }, z.core.$strip>, z.ZodObject<{ ok: z.ZodLiteral; code: z.ZodEnum<{ unauthorized: "unauthorized"; invalid_payload: "invalid_payload"; forbidden: "forbidden"; not_found: "not_found"; }>; message: z.ZodString; }, z.core.$strip>], "ok">; /** One element of `ListVendorsResponse.vendors`. */ declare const PublicVendorListItemSchema: z.ZodObject<{ id: z.ZodUUID; userId: z.ZodUUID; displayName: z.ZodString; avatarUrl: z.ZodNullable; vendorIsVerified: z.ZodBoolean; companyName: z.ZodNullable; bio: z.ZodNullable; yearsExperience: z.ZodNullable; teamSize: z.ZodNullable>; maxDistanceKm: z.ZodNullable; isAvailable: z.ZodBoolean; averageRating: z.ZodString; totalReviews: z.ZodNumber; completionRate: z.ZodString; equipmentManifest: z.ZodArray; notes: z.ZodNullable; }, z.core.$strip>>; serviceCategories: z.ZodArray>; portfolio: z.ZodArray; mediaUrl: z.ZodNullable; externalUrl: z.ZodNullable; createdAt: z.ZodISODateTime; }, z.core.$strip>>; equipmentItems: z.ZodArray>; rateCard: z.ZodArray; notes: z.ZodNullable; }, z.core.$strip>>; createdAt: z.ZodISODateTime; updatedAt: z.ZodISODateTime; recentReviews: z.ZodOptional; createdAt: z.ZodISODateTime; }, z.core.$strip>>>; }, z.core.$strip>; type ListVendorsQuery = z.infer; type PublicVendorListEquipmentItem = z.infer; type PublicVendorListCategory = z.infer; type PublicVendorListPortfolioItem = z.infer; type PublicVendorListRateCardItem = z.infer; type PublicVendorListItem = z.infer; type ServiceCategoryListResponse = z.infer; type HiringThreadMessageKind = z.infer; type HiringThreadMessageDeliveryStatus = z.infer; type HiringThreadSystemMessagePayload = z.infer; type HiringThreadMessageAttachment = z.infer; type HiringThreadMessage = z.infer; type HiringThreadPostAck = z.infer; type HiringThreadReadAck = z.infer; type HiringThreadJoinAck = z.infer; /** Workspace equipment row (full manifest; public API uses the same shape). */ declare const WorkspaceEquipmentItemInputSchema: z.ZodObject<{ name: z.ZodString; category: z.ZodEnum<{ readonly AUDIO: "audio"; readonly VIDEO: "video"; readonly LIGHTING: "lighting"; readonly STAGING: "staging"; readonly POWER: "power"; readonly OTHER: "other"; }>; notes: z.ZodOptional; }, z.core.$strip>; declare const WorkspacePortfolioItemInputSchema: z.ZodObject<{ title: z.ZodString; description: z.ZodOptional; mediaUrl: z.ZodOptional; externalUrl: z.ZodOptional; }, z.core.$strip>; declare const WorkspaceRateCardItemInputSchema: z.ZodObject<{ label: z.ZodString; amount: z.ZodNumber; currency: z.ZodDefault>; notes: z.ZodOptional; }, z.core.$strip>; /** * Authenticated vendor workspace profile (owner view). * Includes verification workflow fields and raw availability; never returned on public routes. */ declare const VendorProfileWorkspaceSchema: z.ZodObject<{ id: z.ZodUUID; userId: z.ZodUUID; companyName: z.ZodString; bio: z.ZodString; logoUrl: z.ZodNullable; experienceLevel: z.ZodEnum<{ readonly BEGINNER: "BEGINNER"; readonly INTERMEDIATE: "INTERMEDIATE"; readonly EXPERT: "EXPERT"; }>; yearsExperience: z.ZodNullable; teamSize: z.ZodNullable>; maxDistanceKm: z.ZodNullable; availabilityCalendar: z.ZodNullable>; verificationStatus: z.ZodEnum<{ readonly PENDING: "PENDING"; readonly APPROVED: "APPROVED"; readonly REJECTED: "REJECTED"; readonly SUBMITTED: "SUBMITTED"; readonly SUSPENDED: "SUSPENDED"; }>; verificationReason: z.ZodNullable; verifiedAt: z.ZodNullable; visibleInMarketplace: z.ZodBoolean; isAvailable: z.ZodBoolean; defaultCurrency: z.ZodEnum<{ readonly NGN: "NGN"; }>; averageRating: z.ZodNumber; totalReviews: z.ZodNumber; completionRate: z.ZodNumber; hasPin: z.ZodBoolean; equipmentManifest: z.ZodArray; notes: z.ZodNullable; }, z.core.$strip>>; serviceCategories: z.ZodArray>; portfolio: z.ZodArray; mediaUrl: z.ZodNullable; externalUrl: z.ZodNullable; createdAt: z.ZodISODateTime; }, z.core.$strip>>; rateCard: z.ZodArray; notes: z.ZodNullable; }, z.core.$strip>>; createdAt: z.ZodISODateTime; updatedAt: z.ZodISODateTime; equipmentItems: z.ZodArray>; }, z.core.$strip>; /** PATCH body for workspace profile updates (partial). */ declare const UpsertVendorWorkspaceProfileSchema: z.ZodObject<{ companyName: z.ZodOptional; bio: z.ZodOptional; logoUrl: z.ZodOptional>; experienceLevel: z.ZodOptional>; yearsExperience: z.ZodOptional; teamSize: z.ZodOptional>>; serviceAreas: z.ZodOptional>; maxDistanceKm: z.ZodOptional>; availabilityCalendar: z.ZodOptional>>; isAvailable: z.ZodOptional; visibleInMarketplace: z.ZodOptional; equipmentManifest: z.ZodOptional; notes: z.ZodOptional; }, z.core.$strip>>>; portfolio: z.ZodOptional; mediaUrl: z.ZodOptional; externalUrl: z.ZodOptional; }, z.core.$strip>>>; rateCard: z.ZodOptional>; notes: z.ZodOptional; }, z.core.$strip>>>; equipmentItemIds: z.ZodOptional>; equipmentItemCodes: z.ZodOptional>; categoryCodes: z.ZodOptional>; }, z.core.$strip>; /** POST body for submit-for-verification (explicit intent for signing). */ declare const SubmitVendorForVerificationSchema: z.ZodObject<{ verificationStatus: z.ZodLiteral<"SUBMITTED">; }, z.core.$strip>; /** Query for `GET /users/me/vendor-profile` — `view=workspace` returns owner workspace shape. */ declare const GetVendorProfileQuerySchema: z.ZodObject<{ view: z.ZodOptional>; }, z.core.$strip>; type VendorProfileWorkspace = z.infer; type UpsertVendorWorkspaceProfile = z.infer; type SubmitVendorForVerification = z.infer; type WorkspaceEquipmentItemInput = z.infer; type WorkspacePortfolioItemInput = z.infer; type WorkspaceRateCardItemInput = z.infer; type GetVendorProfileQuery = z.infer; /** Admin approves a submitted vendor (SUBMITTED → APPROVED) or reinstates (SUSPENDED → APPROVED). */ declare const AdminApproveVendorVerificationSchema: z.ZodObject<{ notes: z.ZodOptional; }, z.core.$strip>; /** * Shared body for admin actions that require a decision reason. * `reason` → vendor-facing verificationReason + audit; `notes` → optional internal admin context. */ declare const AdminVendorVerificationReasonBodySchema: z.ZodObject<{ reason: z.ZodString; notes: z.ZodOptional; }, z.core.$strip>; /** Admin rejects a submitted vendor (SUBMITTED → REJECTED). */ declare const AdminRejectVendorVerificationSchema: z.ZodObject<{ reason: z.ZodString; notes: z.ZodOptional; }, z.core.$strip>; /** Admin suspends an approved vendor (APPROVED → SUSPENDED). */ declare const AdminSuspendVendorVerificationSchema: z.ZodObject<{ reason: z.ZodString; notes: z.ZodOptional; }, z.core.$strip>; type AdminApproveVendorVerification = z.infer; type AdminVendorVerificationReasonBody = z.infer; type AdminRejectVendorVerification = z.infer; type AdminSuspendVendorVerification = z.infer; export { type AdminApproveVendorVerification, AdminApproveVendorVerificationSchema, type AdminRejectVendorVerification, AdminRejectVendorVerificationSchema, type AdminSuspendVendorVerification, AdminSuspendVendorVerificationSchema, type AdminVendorVerificationReasonBody, AdminVendorVerificationReasonBodySchema, EquipmentCategory, type GetVendorProfileQuery, GetVendorProfileQuerySchema, type HiringThreadJoinAck, HiringThreadJoinAckSchema, type HiringThreadMessage, type HiringThreadMessageAttachment, HiringThreadMessageAttachmentSchema, type HiringThreadMessageDeliveryStatus, HiringThreadMessageDeliveryStatusSchema, type HiringThreadMessageKind, HiringThreadMessageKindSchema, HiringThreadMessageSchema, type HiringThreadPostAck, HiringThreadPostAckSchema, type HiringThreadReadAck, HiringThreadReadAckSchema, type HiringThreadSystemMessagePayload, HiringThreadSystemMessagePayloadSchema, type ListVendorsQuery, ListVendorsQuerySchema, MarketplaceCurrency, type PublicVendorListCategory, PublicVendorListCategorySchema, type PublicVendorListEquipmentItem, PublicVendorListEquipmentItemSchema, type PublicVendorListItem, PublicVendorListItemSchema, type PublicVendorListPortfolioItem, PublicVendorListPortfolioItemSchema, type PublicVendorListRateCardItem, PublicVendorListRateCardItemSchema, ServiceCategoryCode, type ServiceCategoryListResponse, ServiceCategoryListResponseSchema, type SubmitVendorForVerification, SubmitVendorForVerificationSchema, type UpsertVendorWorkspaceProfile, UpsertVendorWorkspaceProfileSchema, type VendorProfileWorkspace, VendorProfileWorkspaceSchema, type WorkspaceEquipmentItemInput, WorkspaceEquipmentItemInputSchema, type WorkspacePortfolioItemInput, WorkspacePortfolioItemInputSchema, type WorkspaceRateCardItemInput, WorkspaceRateCardItemInputSchema };