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]; /** * The job a crew member signs up to do. A closed set: crew pick from it and, * unlike skills, never add to it. Every skill hangs off one of these. */ declare const CrewCategoryCode: { readonly VIDEOGRAPHER: "videographer"; readonly PHOTOGRAPHER: "photographer"; }; type CrewCategoryCode = (typeof CrewCategoryCode)[keyof typeof CrewCategoryCode]; /** * 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>; /** * One skill inside a category tab. `crewCategoryId` is required: a skill is * always reached through its category, which is the base of the taxonomy. */ declare const CrewSkillSchema: z.ZodObject<{ id: z.ZodUUID; code: z.ZodString; label: z.ZodString; crewCategoryId: z.ZodUUID; }, z.core.$strip>; declare const CrewCategorySchema: z.ZodObject<{ id: z.ZodUUID; code: z.ZodEnum<{ readonly VIDEOGRAPHER: "videographer"; readonly PHOTOGRAPHER: "photographer"; }>; label: z.ZodString; baseline: z.ZodString; skills: z.ZodArray>; }, z.core.$strip>; declare const CrewCategoryListResponseSchema: z.ZodObject<{ items: z.ZodArray; label: z.ZodString; baseline: z.ZodString; skills: z.ZodArray>; }, z.core.$strip>>; }, z.core.$strip>; /** * Writes one category tab: which skills the crew member has in it. Experience * level and fee range are NOT here --- they describe the person, not the job, * so a videographer-photographer with six years has six years in both. They * live on the vendor profile and its rate card. * * `skillLabels` carries skills the crew member typed in; they are created * under this category. */ declare const UpsertVendorCrewCategoryRequestSchema: z.ZodObject<{ crewCategoryCode: z.ZodEnum<{ readonly VIDEOGRAPHER: "videographer"; readonly PHOTOGRAPHER: "photographer"; }>; skillIds: z.ZodOptional>; skillLabels: z.ZodOptional>; }, z.core.$strip>; /** A category a crew member works in, with their skills in it. */ declare const VendorCrewCategorySchema: z.ZodObject<{ crewCategoryId: z.ZodUUID; crewCategoryCode: z.ZodEnum<{ readonly VIDEOGRAPHER: "videographer"; readonly PHOTOGRAPHER: "photographer"; }>; crewCategoryLabel: z.ZodString; baseline: z.ZodString; skills: z.ZodArray>; }, z.core.$strip>; declare const VendorCrewCategoryListResponseSchema: z.ZodObject<{ items: z.ZodArray; crewCategoryLabel: z.ZodString; baseline: z.ZodString; skills: z.ZodArray>; }, z.core.$strip>>; }, 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.ZodObject<{ amountMinor: z.ZodString; currency: z.ZodEnum<{ readonly NGN: "NGN"; readonly USD: "USD"; readonly GBP: "GBP"; readonly EUR: "EUR"; }>; }, z.core.$strip>; 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"; invalid_payload: "invalid_payload"; forbidden: "forbidden"; not_found: "not_found"; rate_limited: "rate_limited"; internal: "internal"; messaging_closed: "messaging_closed"; }>; 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"; invalid_payload: "invalid_payload"; forbidden: "forbidden"; not_found: "not_found"; internal: "internal"; }>; 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; }, z.core.$strip>; 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 CrewSkill = z.infer; type CrewCategory = z.infer; type CrewCategoryListResponse = z.infer; type UpsertVendorCrewCategoryRequest = z.infer; type VendorCrewCategory = z.infer; type VendorCrewCategoryListResponse = 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; }, z.core.$strip>; 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, type CrewCategory, CrewCategoryCode, type CrewCategoryListResponse, CrewCategoryListResponseSchema, CrewCategorySchema, type CrewSkill, CrewSkillSchema, 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 UpsertVendorCrewCategoryRequest, UpsertVendorCrewCategoryRequestSchema, type UpsertVendorWorkspaceProfile, UpsertVendorWorkspaceProfileSchema, type VendorCrewCategory, type VendorCrewCategoryListResponse, VendorCrewCategoryListResponseSchema, VendorCrewCategorySchema, type VendorProfileWorkspace, VendorProfileWorkspaceSchema, type WorkspaceEquipmentItemInput, WorkspaceEquipmentItemInputSchema, type WorkspacePortfolioItemInput, WorkspacePortfolioItemInputSchema, type WorkspaceRateCardItemInput, WorkspaceRateCardItemInputSchema };