UNPKG

tonightpass

Version:

@tonightpass sdk and tools.

1,268 lines (1,202 loc) 80.1 kB
import * as pathcat from 'pathcat'; import { ParamValue, Query } from 'pathcat'; export * from 'pathcat'; import { Options, Response as Response$1 } from 'redaxios'; import * as Stripe from 'stripe'; import Stripe__default from 'stripe'; import { ValidatorConstraintInterface, ValidationArguments, ValidationOptions } from 'class-validator'; import { HealthCheckResult, HealthIndicatorResult } from '@nestjs/terminus'; declare const DEFAULT_API_URL = "https://api.tonightpass.com"; declare const REGEX: { EMAIL: RegExp; NAME: RegExp; SLUG: RegExp; USERNAME: RegExp; PHONE: RegExp; PASSWORD: RegExp; PASSWORD_MIN_LENGTH: RegExp; PASSWORD_UPPERCASE: RegExp; PASSWORD_LOWERCASE: RegExp; PASSWORD_NUMBER_SPECIAL: RegExp; IMAGE_URL: RegExp; }; declare class AddParticipantDto { username: string; } type Endpoint<M extends Options["method"], Path extends string, Res, Body = undefined> = { method: M; path: Path; res: Res; body: Body; }; type Endpoints = AuthEndpoints | CareerEndpoints | ChannelEndpoints | ChannelMessageEndpoints | CurrenciesEndpoints | HealthEndpoints | OrderEndpoints | OrganizationEndpoints | ProfileEndpoints | UserEndpoints | WebhookEndpoints | NotificationEndpoints; declare enum UserNotificationType { Follow = "follow" } type UserNotificationBase = Base & { type: UserNotificationType.Follow; isSeen: boolean; }; type UserNotificationFollow = UserNotificationBase & { type: UserNotificationType.Follow; follower: UserProfile; }; type UserNotification = UserNotificationFollow; type UserNotificationEndpoints = Endpoint<"GET", "/users/@me/notifications", ArrayResult<UserNotification>, ArrayOptions<UserNotification>> | Endpoint<"GET", "/users/@me/notifications/count", number, { unseen?: boolean; }>; type Order = Base & { invoice: Stripe__default.Invoice; user: User; }; type OrderEndpoints = Endpoint<"GET", "/orders", ArrayResult<Order>, ArrayOptions<Order>> | Endpoint<"GET", "/orders/:orderId", Order>; type UserBookingWithoutTickets = Omit<UserBooking, "tickets">; type UserBookingTicket = Base & { booking: UserBookingWithoutTickets; ticket: OrganizationEventTicket; token: UserToken; useCount: number; }; type UserBooking = Base & { tickets: UserBookingTicket[]; order: Order; user: User; event: OrganizationEvent; }; type UserBookingEndpoints = Endpoint<"GET", "/users/bookings", ArrayResult<UserBooking>, ArrayOptions<UserBooking>> | Endpoint<"GET", "/users/@me/bookings", ArrayResult<UserBooking>, ArrayOptions<UserBooking>> | Endpoint<"GET", "/users/:userId/bookings", ArrayResult<UserBooking>, ArrayOptions<UserBooking>> | Endpoint<"GET", "/users/bookings/:bookingId", UserBooking> | Endpoint<"GET", "/users/@me/bookings/:bookingId", UserBooking> | Endpoint<"GET", "/users/bookings/tickets/:ticketId", UserBookingTicket, { tokenId: string; tokenValue: string; }>; type UserToken = Omit<Base, "updatedAt"> & { type: UserTokenType; value: string; expiresAt: Date; user?: User; identifier?: string; }; declare enum UserTokenType { Authentication = "authentication", BookingTicket = "booking_ticket", OrganizationInvite = "organization_invite", PasswordRecovery = "password_recovery", EmailValidation = "email_validation", PhoneValidation = "phone_validation" } type PublicUser = { identifier: Pick<UserIdentifier, "username">; identity: { displayName: string; avatarUrl: string; slug: string; type: ProfileType; metadata: UserProfileMetadata; }; }; type User = Base & { identifier: UserIdentifier; password?: string; identity: UserIdentity; role: UserRole; addresses: Location$1[]; preferences: UserPreferences; connections: UserConnection[]; isVerified: boolean; isOfficial: boolean; }; type UserIdentifier = { email?: string; phoneNumber?: string; username: string; [key: string]: string | undefined; }; type UserIdentity = UserProfile & { firstName: string; lastName: string; fullName: string; gender: UserIdentityGender; birthDate: Date; }; declare enum UserRole { User = "user", Developer = "developer", Admin = "admin" } declare enum UserIdentityGender { Male = "male", Female = "female", NonBinary = "non-binary" } type UserPreferences = { language: Language; currency: Currency; notifications: { email: { newsletter: boolean; message: boolean; }; push: { message: boolean; }; }; }; type UserConnection = { ip: string; os: UserConnectionOS; device: UserConnectionDevice; client: UserConnectionClient; updatedAt: Date; createdAt: Date; }; type UserConnectionOS = { name: string; version: string; }; type UserConnectionDevice = { type: string; brand: string; }; type UserConnectionClient = { name: string; version: string; }; declare enum UserFileType { Avatar = "avatar", Banner = "banner" } type UserEndpoints = Endpoint<"GET", "/users/search", PublicUser[], { q: string; limit?: number; }> | Endpoint<"GET", "/users", User[]> | Endpoint<"GET", "/users/:userId", User> | Endpoint<"GET", "/users/@me", User> | Endpoint<"GET", "/users/check/:identifier", { exists: boolean; identifier: Partial<UserIdentifier>; suggestions?: string[]; }, { identifier: boolean; suggestions?: boolean; }> | Endpoint<"PUT", "/users/:userId", User, UpdateUserDto> | Endpoint<"POST", "/users/:userId/files/:userFileType", string, FormData> | UserBookingEndpoints | UserNotificationEndpoints; type RecoveryResponse = { to: string; }; type AuthEndpoints = Endpoint<"POST", "/auth/sign-up", User, CreateUserDto> | Endpoint<"POST", "/auth/sign-in", User, SignInUserDto> | Endpoint<"POST", "/auth/sign-out", null, null> | Endpoint<"POST", "/auth/refresh-token", null, null> | Endpoint<"POST", "/auth/recovery", RecoveryResponse, RecoveryDto> | Endpoint<"POST", "/auth/recovery/reset", null, RecoveryResetDto> | Endpoint<"GET", "/oauth2/google", void> | Endpoint<"GET", "/oauth2/google/callback", void> | Endpoint<"GET", "/oauth2/facebook", void> | Endpoint<"GET", "/oauth2/facebook/callback", void> | Endpoint<"GET", "/oauth2/twitter", void> | Endpoint<"GET", "/oauth2/twitter/callback", void>; type CareersOffice = { id: number | null; isDefault: boolean | null; name: string | null; city: string | null; countryIso: string | null; }; type CareersJob = { id: number; createdAt: string; lastUpdatedAt: string; externalId: null | string; title: string; status: "ALL" | "ONLINE" | "ARCHIVED"; remote: boolean; office: CareersOffice; workplaceType: "ONSITE" | "REMOTE" | "HYBRID"; remoteType?: "ANYWHERE" | "COUNTRY"; description?: string; categoryId?: number; employmentTypeId?: number; }; type CareersCategory = { slug: string; name: string; subCategories?: (CareersCategory & { id: number; })[]; }; type CareersEmploymentType = { id: number; name: string; slug: string; }; type CareerEndpoints = Endpoint<"GET", "/careers/categories", CareersCategory[], { language?: string; }> | Endpoint<"GET", "/careers/employmentTypes", CareersEmploymentType[], { language?: string; }> | Endpoint<"GET", "/careers/jobs", CareersJob[], { page?: number; pageSize?: number; createdAtGte: string; createdAtLt?: string; updatedAtGte?: string; updatedAtLt?: string; status?: "ALL" | "ONLINE" | "ARCHIVED"; content?: boolean; titleLike?: string; countryCode?: string; externalId?: string; }> | Endpoint<"GET", "/careers/jobs/:jobId", CareersJob, { jobId: number; }> | Endpoint<"GET", "/careers/offices", CareersOffice[], { page?: number; pageSize?: number; countryCode?: string; cityNameLike?: string; }>; declare enum ChannelMessageReportReason { Dislike = "dislike", HarassmentSelf = "harassment_self", HarassmentOther = "harassment_other", SexualHarassmentSelf = "sexual_harassment_self", NudesSelf = "nudes_self", SexualContent = "sexual_content", ChildInvolved = "child_involved", ThreatTarget = "threat_target", ViolentContent = "violent_content", HateSpeech = "hate_speech", Terrorism = "terrorism", DrugSale = "drug_sale", WeaponSale = "weapon_sale", SelfHarmConcern = "self_harm_concern", SelfHarmPromotion = "self_harm_promotion", Other = "other" } type ChannelMessageReadByEntry = { participant: ChannelParticipant; readAt: Date; }; type ChannelMessageReaction = { emoji: string; participants: ChannelParticipant[]; }; type ChannelMessage = Base & { channel: Channel; sender: ChannelParticipant; content?: string; attachments: string[]; isSent: boolean; isDelivered: boolean; isRead: boolean; readBy?: ChannelMessageReadByEntry[]; isEdited: boolean; editedAt?: Date; replyTo?: ChannelMessage; reactions?: ChannelMessageReaction[]; }; type ChannelMessageEndpoints = Endpoint<"GET", "/channels/@me/:channelId/messages", ArrayResult<ChannelMessage>, ArrayOptions<ChannelMessage>> | Endpoint<"GET", "/channels/:organizationSlug/:channelId/messages", ArrayResult<ChannelMessage>, ArrayOptions<ChannelMessage>> | Endpoint<"GET", "/channels/@me/:channelId/messages/:messageId", ChannelMessage> | Endpoint<"GET", "/channels/:organizationSlug/:channelId/messages/:messageId", ChannelMessage> | Endpoint<"POST", "/channels/@me/:channelId/messages", ChannelMessage, CreateChannelMessageDto> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/messages", ChannelMessage, CreateChannelMessageDto> | Endpoint<"PUT", "/channels/@me/:channelId/messages/:messageId", ChannelMessage, UpdateChannelMessageDto> | Endpoint<"PUT", "/channels/:organizationSlug/:channelId/messages/:messageId", ChannelMessage, UpdateChannelMessageDto> | Endpoint<"DELETE", "/channels/@me/:channelId/messages/:messageId", void> | Endpoint<"DELETE", "/channels/:organizationSlug/:channelId/messages/:messageId", void> | Endpoint<"POST", "/channels/@me/:channelId/messages/:messageId/reactions", void, AddReactionDto> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/messages/:messageId/reactions", void, AddReactionDto> | Endpoint<"DELETE", "/channels/@me/:channelId/messages/:messageId/reactions/:emoji", void> | Endpoint<"DELETE", "/channels/:organizationSlug/:channelId/messages/:messageId/reactions/:emoji", void> | Endpoint<"POST", "/channels/@me/:channelId/messages/:messageId/read", void, null> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/messages/:messageId/read", void, null> | Endpoint<"POST", "/channels/@me/:channelId/files", string, FormData> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/files", string, FormData> | Endpoint<"POST", "/channels/@me/:channelId/messages/:messageId/report", void, ReportChannelMessageDto> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/messages/:messageId/report", void, ReportChannelMessageDto>; declare enum ChannelType { Private = "private", Group = "group" } declare enum ChannelMemberRole { Member = "member", Admin = "admin" } type ChannelParticipant = Profile; declare enum ChannelStatus { Sent = "sent", Delivered = "delivered", Read = "read", Received = "received", Opened = "opened" } type Channel = Base & { type: ChannelType; participants: ChannelParticipant[]; name?: string; lastMessageAt?: Date; status?: ChannelStatus; unreadCount?: number; }; type ChannelMember = { participant: ChannelParticipant; joinedAt: Date; role?: ChannelMemberRole; lastReadAt?: Date; }; type UserChannelCountOptions = { unseen?: boolean; }; type ChannelEndpoints = Endpoint<"GET", "/channels/@me", ArrayResult<Channel>, ArrayOptions<Channel>> | Endpoint<"GET", "/channels/:organizationSlug", ArrayResult<Channel>, ArrayOptions<Channel>> | Endpoint<"GET", "/users/@me/channels/count", number, UserChannelCountOptions> | Endpoint<"GET", "/users/:organizationSlug/channels/count", number, UserChannelCountOptions> | Endpoint<"GET", "/channels/@me/:channelId", Channel> | Endpoint<"GET", "/channels/:organizationSlug/:channelId", Channel> | Endpoint<"POST", "/channels/@me", Channel, CreateChannelDto> | Endpoint<"POST", "/channels/:organizationSlug", Channel, CreateChannelDto> | Endpoint<"PUT", "/channels/@me/:channelId", Channel, UpdateChannelDto> | Endpoint<"PUT", "/channels/:organizationSlug/:channelId", Channel, UpdateChannelDto> | Endpoint<"DELETE", "/channels/@me/:channelId", void> | Endpoint<"DELETE", "/channels/:organizationSlug/:channelId", void> | Endpoint<"POST", "/channels/@me/:channelId/participants", void, AddParticipantDto> | Endpoint<"POST", "/channels/:organizationSlug/:channelId/participants", void, AddParticipantDto> | Endpoint<"DELETE", "/channels/@me/:channelId/participants/:username", void> | Endpoint<"DELETE", "/channels/:organizationSlug/:channelId/participants/:username", void> | Endpoint<"GET", "/channels/@me/:channelId/members", ArrayResult<ChannelMember>, ArrayOptions<ChannelMember>> | Endpoint<"GET", "/channels/:organizationSlug/:channelId/members", ArrayResult<ChannelMember>, ArrayOptions<ChannelMember>>; declare enum Currency { EUR = "EUR", USD = "USD", GBP = "GBP", BGN = "BGN", CZK = "CZK", DKK = "DKK", HUF = "HUF", PLN = "PLN", RON = "RON", SEK = "SEK", CHF = "CHF", NOK = "NOK", ISK = "ISK", TRY = "TRY", RUB = "RUB", UAH = "UAH", BAM = "BAM", MKD = "MKD", ALL = "ALL", RSD = "RSD", MDL = "MDL", GEL = "GEL", BYN = "BYN" } interface ExchangeRates { base: Currency.EUR; rates: Record<Currency, number>; updatedAt: Date; } interface CurrencyConversion { from: Currency; to: Currency; amount: number; } interface CurrencyConversionResult { originalAmount: number; originalCurrency: Currency; convertedAmount: number; targetCurrency: Currency; exchangeRate: number; convertedAt: Date; } type CurrenciesEndpoints = Endpoint<"GET", "/currencies/rates", ExchangeRates> | Endpoint<"POST", "/currencies/convert", CurrencyConversionResult, CurrencyConversion>; declare enum ErrorType { AuthEmailAlreadyExists = "auth.email-already-exists", AuthUsernameAlreadyExists = "auth.username-already-exists", AuthPhoneNumberAlreadyExists = "auth.phone-number-already-exists", AuthInvalidCredentials = "auth.invalid-credentials", AuthUserNotFound = "auth.user-not-found", AuthInvalidToken = "auth.invalid-token", AuthTokenExpired = "auth.token-expired", AuthUnauthorized = "auth.unauthorized", AuthPasswordMismatch = "auth.password-mismatch", AuthInvalidOAuth2Provider = "auth.invalid-oauth2-provider", AuthOAuth2Error = "auth.oauth2-error", UserNotFound = "user.not-found", UserInvalidUsername = "user.invalid-username", UserInvalidEmail = "user.invalid-email", UserInvalidPhoneNumber = "user.invalid-phone-number", UserInvalidPassword = "user.invalid-password", UserInvalidBirthDate = "user.invalid-birth-date", UserInvalidGender = "user.invalid-gender", UserInvalidRole = "user.invalid-role", UserInvalidPreferences = "user.invalid-preferences", UserInvalidLocation = "user.invalid-location", UserInvalidFile = "user.invalid-file", UserFileTooLarge = "user.file-too-large", UserUnsupportedFileType = "user.unsupported-file-type", OrganizationNotFound = "organization.not-found", OrganizationInvalidSlug = "organization.invalid-slug", OrganizationInvalidName = "organization.invalid-name", OrganizationInvalidDescription = "organization.invalid-description", OrganizationInvalidLocation = "organization.invalid-location", OrganizationInvalidSocialLink = "organization.invalid-social-link", OrganizationAlreadyExists = "organization.already-exists", OrganizationUnauthorized = "organization.unauthorized", OrganizationMemberNotFound = "organization.member-not-found", OrganizationMemberInvalidRole = "organization.member-invalid-role", OrganizationMemberAlreadyExists = "organization.member-already-exists", EventNotFound = "event.not-found", EventInvalidTitle = "event.invalid-title", EventInvalidDescription = "event.invalid-description", EventInvalidLocation = "event.invalid-location", EventInvalidDates = "event.invalid-dates", EventInvalidTickets = "event.invalid-tickets", EventInvalidStyles = "event.invalid-styles", EventInvalidType = "event.invalid-type", EventInvalidVisibility = "event.invalid-visibility", EventUnavailable = "event.unavailable", EventTicketNotFound = "event.ticket-not-found", EventTicketUnavailable = "event.ticket-unavailable", EventTicketInvalidQuantity = "event.ticket-invalid-quantity", OrderNotFound = "order.not-found", OrderInvalidStatus = "order.invalid-status", OrderInvalidPayment = "order.invalid-payment", OrderPaymentFailed = "order.payment-failed", OrderAlreadyPaid = "order.already-paid", OrderCancelled = "order.cancelled", OrderRefunded = "order.refunded", OrderExpired = "order.expired", BookingNotFound = "booking.not-found", BookingInvalidStatus = "booking.invalid-status", BookingInvalidTickets = "booking.invalid-tickets", BookingTicketNotFound = "booking.ticket-not-found", BookingTicketInvalidToken = "booking.ticket-invalid-token", BookingTicketExpired = "booking.ticket-expired", BookingTicketUsed = "booking.ticket-used", FileNotFound = "file.not-found", FileInvalidType = "file.invalid-type", FileTooLarge = "file.too-large", FileUploadFailed = "file.upload-failed", ValidationError = "validation.error", DatabaseError = "database.error", InternalServerError = "server.internal-error", NotFound = "not-found", BadRequest = "bad-request", Unauthorized = "unauthorized", Forbidden = "forbidden", TooManyRequests = "too-many-requests", ServiceUnavailable = "service-unavailable", TooManyRequestsAuth = "rate-limit.auth", TooManyRequestsApi = "rate-limit.api", WebhookInvalidSignature = "webhook.invalid-signature", WebhookInvalidEvent = "webhook.invalid-event", WebhookProcessingFailed = "webhook.processing-failed", PaymentRequired = "payment.required", PaymentMethodRequired = "payment.method-required", PaymentFailed = "payment.failed", PaymentCancelled = "payment.cancelled", PaymentRefunded = "payment.refunded", BillingInvalidAccount = "billing.invalid-account", BillingAccountRequired = "billing.account-required", NotificationInvalidType = "notification.invalid-type", NotificationSendingFailed = "notification.sending-failed", CacheError = "cache.error", CacheMiss = "cache.miss", ExternalServiceError = "external-service.error", ExternalServiceTimeout = "external-service.timeout", ExternalServiceUnavailable = "external-service.unavailable" } interface Health<T extends string = string> extends HealthCheckResult { info?: Record<T, HealthIndicatorResult[T]>; error?: Record<T, HealthIndicatorResult[T]>; details: Record<T, HealthIndicatorResult[T]>; } type HealthEndpoints = Endpoint<"GET", "/health", Health<"database" | "app" | "api" | "database">> | Endpoint<"GET", "/health/database", Health<"database">> | Endpoint<"GET", "/health/api", Health<"api">> | Endpoint<"GET", "/health/app", Health<"app">>; /** * Represents a GeoJSON point with specific geographic coordinates. * * @see https://geojson.org/geojson-spec.html#point * * @property {"Point"} type - The type of the geometry, which is always "Point" for a GeoJSON point. * @property {[number, number]} coordinates - The coordinates of the point, represented as [longitude, latitude]. */ type GeoPoint = { type: "Point"; coordinates: [number, number]; }; type Location$1 = { name?: string; address: string; zipCode: string; city: string; country: string; geometry: GeoPoint; }; interface GeoSearchAggregation<T> { metadata: { total: number; }[]; data: T[]; } type Distance<T> = T & { distance: number; }; type OrganizationEventOrderEndpoints = Endpoint<"POST", "/organizations/:organizationSlug/events/:eventSlug/orders", Order, CreateOrganizationEventOrderDto>; declare class CreateOrganizationEventStyleDto { type: OrganizationEventStyleType; emoji: string; name: string; } declare class UpdateOrganizationEventStyleDto extends CreateOrganizationEventStyleDto { } type OrganizationEventStyle = Base & { type: OrganizationEventStyleType; emoji: string; name: string; slug: string; }; declare enum OrganizationEventStyleType { Music = "music", Dress = "dress", Sport = "sport", Food = "food", Art = "art" } type OrganizationEventStyleEndpoints = Endpoint<"GET", "/organizations/events/styles", OrganizationEventStyle[]> | Endpoint<"GET", "/organizations/events/styles/:styleSlug", OrganizationEventStyle> | Endpoint<"POST", "/organizations/events/styles", OrganizationEventStyle, CreateOrganizationEventStyleDto> | Endpoint<"PUT", "/organizations/events/styles/:styleSlug", OrganizationEventStyle, UpdateOrganizationEventStyleDto> | Endpoint<"DELETE", "/organizations/events/styles/:styleSlug", OrganizationEventStyle[], null>; type OrganizationEventViewEndpoints = Endpoint<"POST", "/organizations/:organizationSlug/events/:eventSlug/views", boolean, null>; type OrganizationEventTicket = Base & { name: string; description?: string; price: Stripe__default.Price; product: Stripe__default.Product; fee: number; quantity: number; type: OrganizationEventTicketType; category: OrganizationEventTicketCategory; externalId?: string; isVisible: boolean; isFeesIncluded: boolean; startAt?: Date; endAt?: Date; event: OrganizationEvent; }; declare enum OrganizationEventTicketType { ETicket = "e-ticket", Other = "other" } declare enum OrganizationEventTicketCategory { Entry = "entry", Package = "package", Meal = "meal", Drink = "drink", Parking = "parking", Accommodation = "accommodation", Camping = "camping", Locker = "locker", Shuttle = "shuttle", Other = "other" } type OrganizationEventTicketEndpoints = Endpoint<"GET", "/organizations/:organizationSlug/events/:eventSlug/tickets", OrganizationEventTicket[]> | Endpoint<"GET", "/organizations/:organizationSlug/events/:eventSlug/tickets/:ticketId", OrganizationEventTicket> | Endpoint<"POST", "/organizations/:organizationSlug/events/:eventSlug/tickets", OrganizationEventTicket, CreateOrganizationEventTicketDto> | Endpoint<"PUT", "/organizations/:organizationSlug/events/:eventSlug/tickets/:ticketId", OrganizationEventTicket, UpdateOrganizationEventTicketDto> | Endpoint<"DELETE", "/organizations/:organizationSlug/events/:eventSlug/tickets/:ticketId", OrganizationEventTicket[], null>; type OrganizationEvent = Base & { title: string; description: string; slug: string; organization: OrganizationProfile; type: OrganizationEventType; visibility: OrganizationEventVisibilityType; flyers: string[]; trailers: string[]; location: Location$1; tickets: OrganizationEventTicket[]; styles: OrganizationEventStyle[]; status: OrganizationEventStatus; viewsCount: number; sessionsCount: number; totalViewsCount: number; averageViewsPerSessionCount: number; startAt: Date; endAt: Date; }; declare enum OrganizationEventType { Clubbing = "clubbing", Concert = "concert", Afterwork = "afterwork", DancingLunch = "dancing_lunch", Diner = "diner", Garden = "garden", AfterBeach = "after_beach", Festival = "festival", Spectacle = "spectacle", Cruise = "cruise", OutsideAnimation = "outside_animation", Sport = "sport", Match = "match", Seminar = "seminar", Conference = "conference", WellnessDay = "wellness_day", Workshop = "workshop", TradeFair = "trade_fair", ConsumerShow = "consumer_show", Membership = "membership" } declare enum OrganizationEventVisibilityType { Public = "public", Unlisted = "unlisted", Private = "private" } declare enum OrganizationEventFileType { Flyer = "flyer", Trailer = "trailer" } declare enum OrganizationEventStatus { Upcoming = "upcoming", Ongoing = "ongoing", Ended = "ended" } type OrganizationEventArrayOptions = ArrayOptions<OrganizationEvent> & { status?: OrganizationEventStatus | OrganizationEventStatus[]; }; type OrganizationEventEndpoints = Endpoint<"GET", "/organizations/events/search", OrganizationEvent[], { q: string; limit?: number; }> | Endpoint<"GET", "/organizations/events", ArrayResult<OrganizationEvent>, ArrayOptions<OrganizationEvent>> | Endpoint<"GET", "/organizations/events/suggestions", ArrayResult<OrganizationEvent>, ArrayOptions<OrganizationEvent>> | Endpoint<"GET", "/organizations/events/nearby", ArrayResult<OrganizationEvent>, ArrayOptions<OrganizationEvent> & { latitude: number; longitude: number; radius?: number; }> | Endpoint<"GET", "/organizations/:organizationSlug/events", ArrayResult<OrganizationEvent>, OrganizationEventArrayOptions> | Endpoint<"GET", "/organizations/:organizationSlug/events/:eventSlug", OrganizationEvent> | Endpoint<"POST", "/organizations/:organizationSlug/events", OrganizationEvent, CreateOrganizationEventDto> | Endpoint<"PUT", "/organizations/:organizationSlug/events/:eventSlug", OrganizationEvent, UpdateOrganizationEventDto> | Endpoint<"DELETE", "/organizations/:organizationSlug/events/:eventSlug", OrganizationEvent, null> | Endpoint<"POST", "/organizations/:organizationSlug/events/:eventSlug/files/:eventFileType", string, FormData> | Endpoint<"POST", "/events/files/:eventFileType", string, FormData> | OrganizationEventOrderEndpoints | OrganizationEventStyleEndpoints | OrganizationEventTicketEndpoints | OrganizationEventViewEndpoints; type OrganizationAnalyticsOverview = { metrics: { totalRevenue: { current: number; previous: number; percentageChange: number; }; totalOrders: { current: number; previous: number; percentageChange: number; }; totalTicketsSold: { current: number; previous: number; percentageChange: number; }; activeEvents: number; }; chartData: { date: string; revenues: number; orders: number; ticketsSold: number; events: number; }[]; }; type OrganizationEventAnalytics = { event: OrganizationEvent; metrics: { totalViews: number; uniqueViews: number; sessionsCount: number; totalRevenue: number; totalOrders: number; totalTicketsSold: number; }; }; type AnalyticsOptions = { period?: "7d" | "30d" | "90d" | "12m"; startDate?: string; endDate?: string; }; type EventAnalyticsOptions = AnalyticsOptions & { status?: "upcoming" | "past" | "all"; }; type OrganizationAnalyticsEndpoints = Endpoint<"GET", "/organizations/:organizationSlug/analytics/overview", OrganizationAnalyticsOverview, AnalyticsOptions> | Endpoint<"GET", "/organizations/:organizationSlug/analytics/events", ArrayResult<OrganizationEventAnalytics>, ArrayOptions<OrganizationEventAnalytics> & EventAnalyticsOptions>; declare class AcceptOrganizationMemberInvitationDto { token: string; } declare class CreateOrganizationMemberInvitationLinkDto { role?: OrganizationMemberRole; } declare class UpdateOrganizationMemberDto { role: OrganizationMemberRole; } type OrganizationToken = Omit<Base, "updatedAt"> & { type: OrganizationTokenType; value: string; expiresAt: Date; organization?: Organization; role?: OrganizationMemberRole; }; declare enum OrganizationTokenType { InvitationLink = "invitation_link" } type OrganizationMember = Base & { organization: OrganizationProfile; role: OrganizationMemberRole; status: OrganizationMemberStatus; user?: UserProfile; token?: UserToken; }; declare enum OrganizationMemberStatus { Pending = "pending", Accepted = "accepted", Rejected = "rejected" } declare enum OrganizationMemberRole { Owner = "owner", Admin = "admin", Manager = "manager", Member = "member" } type OrganizationMembersEndpoints = Endpoint<"GET", "/organizations/members/@me", ArrayResult<OrganizationMember>, ArrayOptions<OrganizationMember>> | Endpoint<"GET", "/organizations/:organizationSlug/members", ArrayResult<OrganizationMember>, ArrayOptions<OrganizationMember>> | Endpoint<"POST", "/organizations/:organizationSlug/members", OrganizationMember, CreateOrganizationMemberDto> | Endpoint<"PUT", "/organizations/:organizationSlug/members/:username", OrganizationMember, UpdateOrganizationMemberDto> | Endpoint<"DELETE", "/organizations/:organizationSlug/members/:username", OrganizationMember[], null> | Endpoint<"GET", "/organizations/:organizationSlug/members/invitations/links", ArrayResult<OrganizationToken>, ArrayOptions<OrganizationToken>> | Endpoint<"POST", "/organizations/:organizationSlug/members/invitations/links", OrganizationToken, CreateOrganizationMemberInvitationLinkDto> | Endpoint<"POST", "/organizations/:organizationSlug/members/invitations/accept", OrganizationMember, AcceptOrganizationMemberInvitationDto> | Endpoint<"PUT", "/organizations/:organizationSlug/members/@me/accept", OrganizationMember, null> | Endpoint<"DELETE", "/organizations/:organizationSlug/members/@me/reject", null, null> | Endpoint<"DELETE", "/organizations/:organizationSlug/members/@me", null, null>; type Organization = Base & { slug: string; identity: OrganizationIdentity; members: OrganizationMember[]; location?: Location$1; events: OrganizationEvent[]; savedTickets: OrganizationEventTicket[]; verified: boolean; billing: OrganizationBilling; }; type OrganizationBilling = { account: string; vatRate: number; }; type OrganizationBillingAccount = Stripe__default.Account; type OrganizationIdentity = OrganizationProfile & { socialLinks: OrganizationSocialLink[]; }; type OrganizationSocialLink = { type: OrganizationSocialType; url: string; }; declare enum OrganizationSocialType { Facebook = "facebook", Twitter = "twitter", Instagram = "instagram", Linkedin = "linkedin", Youtube = "youtube", Website = "website" } type OrganizationEndpoints = Endpoint<"GET", "/organizations/search", Organization[], { q: string; limit?: number; }> | Endpoint<"GET", "/organizations", ArrayResult<Organization>, ArrayOptions<Organization>> | Endpoint<"GET", "/organizations/:organizationSlug", Organization> | Endpoint<"POST", "/organizations", Organization, CreateOrganizationDto> | Endpoint<"PUT", "/organizations/:organizationSlug", Organization, UpdateOrganizationDto> | Endpoint<"DELETE", "/organizations/:organizationSlug", Organization, null> | Endpoint<"GET", "/organizations/:organizationSlug/billing/account", OrganizationBillingAccount> | Endpoint<"GET", "/organizations/:organizationSlug/billing/link", void> | Endpoint<"GET", "/organizations/:organizationSlug/billing/dashboard", void> | OrganizationEventEndpoints | OrganizationMembersEndpoints | OrganizationAnalyticsEndpoints; declare enum ProfileType { User = "user", Organization = "organization" } type BaseProfile = { type: ProfileType; slug: string; displayName: string; description?: string; avatarUrl?: string; bannerUrl?: string; metadata: ProfileMetadata; createdAt: Date; }; type UserProfile = BaseProfile & { type: ProfileType.User; metadata: UserProfileMetadata; }; type OrganizationProfile = BaseProfile & { type: ProfileType.Organization; metadata: OrganizationProfileMetadata; }; type Profile = UserProfile | OrganizationProfile; type BaseProfileMetadata = { followersCount: number; isFollower: boolean; isFollowing: boolean; isBlocked: boolean; hasBlocked: boolean; canDM: boolean; isOfficial: boolean; }; type UserProfileMetadata = BaseProfileMetadata & { hasPassPlus: boolean; }; type OrganizationProfileMetadata = BaseProfileMetadata & { eventsCount: number; viewsCount: number; membersCount: number; }; type ProfileMetadata = UserProfileMetadata | OrganizationProfileMetadata; type ProfileEndpoints = Endpoint<"GET", "/profiles/:username", Profile> | Endpoint<"GET", "/profiles/@me/relationships/suggestions", ArrayResult<Profile>, ArrayOptions<OrganizationProfile | UserProfile>> | Endpoint<"GET", "/profiles/:username/relationships/followers", ArrayResult<UserProfile>, ArrayOptions<UserProfile>> | Endpoint<"POST", "/profiles/:username/relationships/follow", boolean, null> | Endpoint<"POST", "/profiles/:username/relationships/unfollow", boolean, null>; type WebhookEndpoints = Endpoint<"POST", "/webhooks/stripe", boolean, Stripe__default.Event>; type NotificationEndpoints = Endpoint<"POST", "/notifications/subscribe/beta", null, { email: string; }>; type Base = { id: string; createdAt: Date; updatedAt: Date; }; type ExcludeBase<T> = Omit<T, keyof Base>; type DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]; }; declare enum Language { FR = "fr", EN = "en" } type ArraySortOptions = { /** * Field to sort */ field: string; /** * Order to sort */ order: "asc" | "desc"; }; type ArrayPaginationOptions = { /** * Page number */ page?: number; /** * Number of items per page */ limit?: number; /** * Offset to start from */ offset?: number; }; type ArrayFilterOptions = { /** * Field to filter */ field: string; /** * Value to filter */ value: string; /** * Operator to use */ operator: "eq" | "ne" | "gt" | "lt" | "gte" | "lte" | "in" | "nin"; }; type ArrayOptions<T> = {} & ArrayPaginationOptions; type ArrayResult<T> = { items: T[]; total: number; page: number; limit: number; }; declare class CreateChannelDto { type: ChannelType; participantUsernames: string[]; name?: string; } declare class UpdateChannelDto { name?: string; } declare class AddReactionDto { emoji: string; } declare class ContentOrAttachmentsConstraint implements ValidatorConstraintInterface { validate(_value: unknown, args: ValidationArguments): boolean; defaultMessage(_args: ValidationArguments): string; } declare class CreateChannelMessageDto { content?: string; attachments?: string[]; replyToId?: string; } declare class UpdateChannelMessageDto { content?: string; } declare class ReportChannelMessageDto { reason: ChannelMessageReportReason; description?: string; } declare class GeoPointDto implements GeoPoint { type: "Point"; coordinates: [number, number]; constructor(); } declare class CreateLocationDto implements Location$1 { name?: string; address: string; zipCode: string; city: string; country: string; geometry: GeoPointDto; } declare class UpdateLocationDto implements Partial<Location$1> { name?: string; address?: string; zipCode?: string; city?: string; country?: string; geometry?: GeoPointDto; } declare class CreateOrganizationMemberDto { user: string; role: OrganizationMemberRole; } declare class CreateOrganizationDto { organizationSlug?: string; identity: CreateOrganizationIdentityDto; members: CreateOrganizationMemberDto[]; location?: Location$1; } declare class CreateOrganizationIdentityDto { displayName: string; description?: string; avatarUrl?: string; bannerUrl?: string; socialLinks?: OrganizationSocialLink[]; } declare class UpdateOrganizationDto { slug?: string; identity?: UpdateOrganizationIdentityDto; members?: UpdateOrganizationMemberDto[]; location?: Location; } declare class UpdateOrganizationIdentityDto { displayName?: string; description?: string; avatarUrl?: string; bannerUrl?: string; socialLinks?: OrganizationSocialLink[]; } declare class CreateOrganizationEventOrderDto { cart: string[]; } type CreateOrganizationEventTicketInput = Omit<ExcludeBase<OrganizationEventTicket>, "price" | "product" | "event" | "fee"> & { price: number; }; declare class CreateOrganizationEventTicketDto implements CreateOrganizationEventTicketInput { name: string; description?: string; price: number; quantity: number; type: OrganizationEventTicketType; category: OrganizationEventTicketCategory; currency: Currency; isVisible: boolean; isFeesIncluded: boolean; startAt?: Date; endAt?: Date; } declare class UpdateOrganizationEventTicketDto implements DeepPartial<CreateOrganizationEventTicketInput> { name?: string; description?: string; price?: number; quantity?: number; type?: OrganizationEventTicketType; category?: OrganizationEventTicketCategory; currency?: Currency; isVisible?: boolean; isFeesIncluded?: boolean; startAt?: Date; endAt?: Date; } declare class AtLeastOneMediaConstraint implements ValidatorConstraintInterface { validate(_value: unknown, args: ValidationArguments): boolean; defaultMessage(): string; } declare function AtLeastOneMedia(validationOptions?: ValidationOptions): (object: object, propertyName: string) => void; type CreateOrganizationEventInput = Omit<ExcludeBase<OrganizationEvent>, "slug" | "styles" | "tickets" | "organization" | "status" | "viewsCount" | "sessionsCount" | "totalViewsCount" | "averageViewsPerSessionCount"> & { slug?: string; styles: string[]; tickets: CreateOrganizationEventTicketInput[]; }; declare class BaseOrganizationEventDto { title: string; slug?: string; description: string; type: OrganizationEventType; visibility: OrganizationEventVisibilityType; flyers: string[]; trailers: string[]; location: CreateLocationDto; styles: string[]; startAt: Date; endAt: Date; } declare class CreateOrganizationEventDto extends BaseOrganizationEventDto implements CreateOrganizationEventInput { tickets: CreateOrganizationEventTicketDto[]; } declare class AtLeastOneMediaOnUpdateConstraint implements ValidatorConstraintInterface { validate(_value: unknown, args: ValidationArguments): boolean; defaultMessage(): string; } declare function AtLeastOneMediaOnUpdate(validationOptions?: ValidationOptions): (object: object, propertyName: string) => void; declare class UpdateOrganizationEventDto implements DeepPartial<CreateOrganizationEventInput> { title?: string; slug?: string; description?: string; type?: OrganizationEventType; visibility?: OrganizationEventVisibilityType; flyers?: string[]; trailers?: string[]; location?: UpdateLocationDto; tickets?: UpdateOrganizationEventTicketDto[]; styles?: string[]; startAt?: Date; endAt?: Date; } declare class CreateUserDto { identifier: CreateUserIdentifierDto; identity: CreateUserIdentityDto; password: string; } declare class CreateUserIdentifierDto implements Partial<Pick<UserIdentifier, "email" | "phoneNumber" | "username">> { email?: string; phoneNumber?: string; username: string; } declare class CreateUserIdentityDto { firstName: string; lastName: string; gender: UserIdentityGender; avatarUrl?: string; birthDate: Date; } declare class RecoveryDto { identifier: string; } declare class RecoveryResetDto { tokenId: string; tokenValue: string; password: string; } declare class SignInUserDto { identifier: string; password: string; } declare class UpdateUserDto { identifier?: UpdateUserIdentifierDto; identity?: UpdateUserIdentityDto; password?: string; } declare class UpdateUserIdentifierDto implements Partial<Pick<UserIdentifier, "email" | "phoneNumber" | "username">> { email?: string; phoneNumber?: string; username?: string; } declare class UpdateUserIdentityDto implements Partial<Pick<UserIdentity, "firstName" | "lastName" | "displayName" | "description" | "avatarUrl" | "bannerUrl" | "gender" | "birthDate">> { firstName?: string; lastName?: string; displayName?: string; description?: string; avatarUrl?: string | undefined; bannerUrl?: string | undefined; gender?: UserIdentityGender; birthDate?: Date; } type SuccessfulAPIResponse<T> = { success: true; data: T; }; type ErroredAPIResponse = { success: false; message: string; statusCode: number; errors?: { [key: string]: string[]; }; }; type APIResponse<T> = SuccessfulAPIResponse<T> | ErroredAPIResponse; type PromisedAPIResponse<T> = Promise<APIResponse<T>>; type PathsFor<M extends Options["method"]> = Extract<Endpoints, { method: M; }>["path"]; type ResponseFor<M extends Options["method"], P extends PathsFor<M>> = Extract<Endpoints, { method: M; path: P; }>["res"]; type Response<M extends Options["method"], P extends PathsFor<M>> = APIResponse<Extract<Endpoints, { method: M; path: P; }>["res"]>; type PromisedResponse<M extends Options["method"], P extends PathsFor<M>> = PromisedAPIResponse<Extract<Endpoints, { method: M; path: P; }>["res"]>; type Body<M extends Options["method"], P extends PathsFor<M>> = Extract<Endpoints, { method: M; path: P; }>["body"]; type StringifiedQueryValue = string | string[]; type StringifiedQuery<T> = { [K in keyof T]: StringifiedQueryValue; }; type QueryParams<M extends Options["method"], P extends PathsFor<M>> = StringifiedQuery<Extract<Endpoints, { method: M; path: P; }>["body"]>; declare class TonightPassAPIError<T> extends Error { readonly response: Response$1<APIResponse<T>>; readonly data: ErroredAPIResponse; readonly status: number; constructor(response: Response$1<APIResponse<T>>, data: ErroredAPIResponse); } interface ClientOptions { readonly baseURL: string; } declare class Client { private options; readonly url: (path: string, params: Record<string, ParamValue>) => string; constructor(options: ClientOptions); setOptions(options: ClientOptions): void; get<Path extends PathsFor<"GET">>(path: Path, query?: Query<Path>, options?: APIRequestOptions): Promise<ResponseFor<"GET", Path>>; post<Path extends PathsFor<"POST">>(path: Path, body: Body<"POST", Path>, query?: Query<Path>, options?: APIRequestOptions): Promise<ResponseFor<"POST", Path>>; put<Path extends PathsFor<"PUT">>(path: Path, body: Body<"PUT", Path>, query?: Query<Path>, options?: APIRequestOptions): Promise<ResponseFor<"PUT", Path>>; patch<Path extends PathsFor<"PATCH">>(path: Path, body: Body<"PATCH", Path>, query?: Query<Path>, options?: APIRequestOptions): Promise<never>; delete<Path extends PathsFor<"DELETE">>(path: Path, body: Body<"DELETE", Path>, query?: Query<Path>, options?: APIRequestOptions): Promise<ResponseFor<"DELETE", Path>>; private requester; } interface APIRequestOptions extends Options { } declare const request: <T>(url: string, options?: Options) => Promise<Response$1<APIResponse<T>>>; declare const auth: (client: Client) => { signIn: (data: SignInUserDto) => Promise<User>; signUp: (data: CreateUserDto) => Promise<User>; signOut: () => Promise<null>; refreshToken: () => Promise<null>; recovery: (data: RecoveryDto) => Promise<RecoveryResponse>; recoveryReset: (data: RecoveryResetDto) => Promise<null>; oauth2: { google: { connect: (params?: Record<string, ParamValue>) => void; }; twitter: { connect: (params?: Record<string, ParamValue>) => void; }; facebook: { connect: (params?: Record<string, ParamValue>) => void; }; }; }; declare const careers: (client: Client) => { categories: { getAll: (query?: Query<"/careers/categories">) => Promise<CareersCategory[]>; }; employmentTypes: { getAll: (query?: Query<"/careers/employmentTypes">) => Promise<CareersEmploymentType[]>; }; jobs: { getAll: (query?: Query<"/careers/jobs">) => Promise<CareersJob[]>; get: (jobId: number) => Promise<CareersJob>; }; offices: { getAll: (query?: Query<"/careers/offices">) => Promise<CareersOffice[]>; }; }; declare const channels: (client: Client) => { me: (options?: ArrayOptions<Channel>) => Promise<ArrayResult<Channel>>; getByOrganization: (organizationSlug: string, options?: ArrayOptions<Channel>) => Promise<ArrayResult<Channel>>; countMe: (options?: UserChannelCountOptions) => Promise<number>; countByOrganization: (organizationSlug: string, options?: UserChannelCountOptions) => Promise<number>; get: (channelId: string) => Promise<Channel>; getByOrganizationChannel: (organizationSlug: string, channelId: string) => Promise<Channel>; create: (data: CreateChannelDto) => Promise<Channel>; createByOrganization: (organizationSlug: string, data: CreateChannelDto) => Promise<Channel>; update: (channelId: string, data: UpdateChannelDto) => Promise<Channel>; updateByOrganization: (organizationSlug: string, channelId: string, data: UpdateChannelDto) => Promise<Channel>; delete: (channelId: string) => Promise<void>; deleteByOrganization: (organizationSlug: string, channelId: string) => Promise<void>; addParticipant: (channelId: string, data: AddParticipantDto) => Promise<void>; addParticipantByOrganization: (organizationSlug: string, channelId: string, data: AddParticipantDto) => Promise<void>; removeParticipant: (channelId: string, username: string) => Promise<void>; removeParticipantByOrganization: (organizationSlug: string, channelId: string, username: string) => Promise<void>; getMembers: (channelId: string, options?: ArrayOptions<ChannelMember>) => Promise<ArrayResult<ChannelMember>>; getMembersByOrganization: (organizationSlug: string, channelId: string, options?: ArrayOptions<ChannelMember>) => Promise<ArrayResult<ChannelMember>>; messages: { getAll: (channelId: string, options?: ArrayOptions<ChannelMessage>) => Promise<ArrayResult<ChannelMessage>>; getAllByOrganization: (organizationSlug: string, channelId: string, options?: ArrayOptions<ChannelMessage>) => Promise<ArrayResult<ChannelMessage>>; get: (channelId: string, messageId: string) => Promise<ChannelMessage>; getByOrganization: (organizationSlug: string, channelId: string, messageId: string) => Promise<ChannelMessage>; create: (channelId: string, data: CreateChannelMessageDto) => Promise<ChannelMessage>; createByOrganization: (organizationSlug: string, channelId: string, data: CreateChannelMessageDto) => Promise<ChannelMessage>; update: (channelId: string, messageId: string, data: UpdateChannelMessageDto) => Promise<ChannelMessage>; updateByOrganization: (organizationSlug: string, channelId: string, messageId: string, data: UpdateChannelMessageDto) => Promise<ChannelMessage>; delete: (channelId: string, messageId: string) => Promise<void>; deleteByOrganization: (organizationSlug: string, channelId: string, messageId: string) => Promise<void>; addReaction: (channelId: string, messageId: string, data: AddReactionDto) => Promise<void>; addReactionByOrganization: (organizationSlug: string, channelId: string, messageId: string, data: AddReactionDto) => Promise<void>; removeReaction: (channelId: string, messageId: string, emoji: string) => Promise<void>; removeReactionByOrganization: (organizationSlug: string, channelId: string, messageId: string, emoji: string) => Promise<void>; markAsRead: (channelId: string, messageId: string) => Promise<void>; markAsReadByOrganization: (organizationSlug: string, channelId: string, messageId: string) => Promise<void>; uploadFile: (channelId: string, file: FormData) => Promise<string>; uploadFileByOrganization: (organizationSlug: string, channelId: string, file: FormData) => Promise<string>; report: (channelId: string, messageId: string, data: ReportChannelMessageDto) => Promise<void>; reportByOrganization: (organizationSlug: string, channelId: string, messageId: string, data: ReportChannelMessageDto) => Promise<void>; }; }; declare const currencies: (client: Client) => { getRates: () => Promise<ExchangeRates>; convert: (conversion: CurrencyConversion) => Promise<CurrencyConversionResult>; convertAmount: (from: Currency, to: Currency, amount: number) => Promise<CurrencyConversionResult>; }; declare function sdk<T>(builder: (client: Client) => T): (client: Client) => T; declare const health: (client: Client) => { getAll: () => Promise<Health<"database" | "app" | "api">>; database: () => Promise<Health<"database">>; api: () => Promise<Health<"api">>; app: () => Promise<Health<"app">>; }; declare const orders: (client: Client) => { getAll: (options?: ArrayOptions<Order>) => Promise<ArrayResult<Order>>; get: (orderId: string) => Promise<Order>; }; declare const organizations: (client: Client) => { search: (query: string, limit?: number) => Promise<Organization[]>; getAll: () => Promise<ArrayResult<Organization>>; get: (organizationSlug: string) => Promise<Organization>; create: (data: CreateOrganizationDto) => Promise<Organization>; update: (organizationSlug: