UNPKG

tonightpass

Version:

@tonightpass sdk and tools.

1,335 lines (1,257 loc) 96.7 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; }; interface CacheEntry<T> { data: T; timestamp: number; } interface CacheOptions { enabled: boolean; ttl?: number; methods?: Options["method"][]; } declare class CacheManager { private cache; private options; constructor(options: CacheOptions); private generateKey; private shouldCache; private isValid; get<T>(method: Options["method"], url: string): T | null; set<T>(method: Options["method"], url: string, data: T): void; clear(): void; stats(): { size: number; keys: string[]; }; } type CreateApiKeyDto = { name: string; }; type UpdateApiKeyDto = { name?: string; isActive?: boolean; }; declare class AddParticipantDto { username: string; } 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; links?: string[]; } declare class UpdateOrganizationMemberDto { role: OrganizationMemberRole; } declare class AcceptOrganizationMemberInvitationDto { token: string; } declare class CreateOrganizationMemberInvitationLinkDto { role?: OrganizationMemberRole; } declare class UpdateOrganizationDto { slug?: string; identity?: UpdateOrganizationIdentityDto; members?: UpdateOrganizationMemberDto[]; location?: Location; } declare class UpdateOrganizationIdentityDto { displayName?: string; description?: string; avatarUrl?: string; bannerUrl?: string; links?: string[]; } declare class CreateOrganizationEventOrderDto { cart: string[]; } declare class CreateOrganizationEventStyleDto { type: OrganizationEventStyleType; emoji: string; name: string; } declare class UpdateOrganizationEventStyleDto extends CreateOrganizationEventStyleDto { } 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; links?: string[]; } declare class GoogleOneTapDto { credential: string; } 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; links?: string[]; } declare class CreateUserPostCommentDto { content: string; replyToId?: string; } declare class UpdateUserPostCommentDto { content: string; } type UserPostComment = Base & { post: UserPost; author: UserProfile; content: string; replyTo?: UserPostComment; isEdited: boolean; editedAt?: Date; }; type UserPostCommentEndpoints = Endpoint<"GET", "/users/@:username/posts/:postId/comments", ArrayResult<UserPostComment>, ArrayOptions<UserPostComment>> | Endpoint<"POST", "/users/~me/posts/:postId/comments", UserPostComment, CreateUserPostCommentDto> | Endpoint<"PUT", "/users/~me/posts/:postId/comments/:commentId", UserPostComment, UpdateUserPostCommentDto> | Endpoint<"DELETE", "/users/~me/posts/:postId/comments/:commentId", void>; declare enum UserPostMediaType { Image = "image", Video = "video" } type UserPostMedia = { url: string; type: UserPostMediaType; width: number; height: number; description?: string; isNSFW: boolean; thumbnailUrl?: string; duration?: number; }; type UserPostMediaEndpoints = Endpoint<"POST", "/users/~me/posts/media", string, FormData>; declare class CreateUserPostRepostDto { comment?: string; } type UserPostRepost = Base & { originalPost: UserPost; author: UserProfile; comment?: string; }; type UserPostRepostEndpoints = Endpoint<"GET", "/users/@:username/reposts", ArrayResult<UserPostRepost>, ArrayOptions<UserPostRepost>> | Endpoint<"GET", "/users/@:username/posts/:postId/reposts", ArrayResult<UserPostRepost>, ArrayOptions<UserPostRepost>> | Endpoint<"POST", "/users/~me/posts/:postId/reposts", UserPostRepost, CreateUserPostRepostDto> | Endpoint<"DELETE", "/users/~me/posts/:postId/reposts", void>; type UserPostViewEndpoints = Endpoint<"POST", "/users/@:username/posts/:postId/views", boolean, null>; declare enum UserPostVisibility { Public = "public", Followers = "followers", Private = "private" } type UserPost = Base & { author: UserProfile; content?: string; media: UserPostMedia[]; visibility: UserPostVisibility; metrics: { reposts: number; comments: number; views: number; }; isReposted?: boolean; isEdited: boolean; editedAt?: Date; }; type UserPostEndpoints = Endpoint<"GET", "/users/@:username/posts", ArrayResult<UserPost>, ArrayOptions<UserPost>> | Endpoint<"GET", "/users/@:username/posts/:postId", UserPost> | Endpoint<"POST", "/users/~me/posts", UserPost, CreateUserPostDto> | Endpoint<"PUT", "/users/~me/posts/:postId", UserPost, UpdateUserPostDto> | Endpoint<"DELETE", "/users/~me/posts/:postId", void> | UserPostCommentEndpoints | UserPostRepostEndpoints | UserPostViewEndpoints | UserPostMediaEndpoints; declare class CreateUserPostDto { content?: string; mediaUrls: string[]; visibility?: UserPostVisibility; } declare class UpdateUserPostDto { content?: string; visibility?: UserPostVisibility; } declare enum ApiKeyTier { PUBLIC = "public", BUILD = "build", PREMIUM = "premium", INTERNAL = "internal" } type ApiKey = Base & { key: string; name: string; tier: ApiKeyTier; rateLimit: number; user: UserProfile; lastUsedAt?: Date; isActive: boolean; }; type ApiKeyEndpoints = Endpoint<"GET", "/api-keys", ArrayResult<ApiKey>> | Endpoint<"GET", "/api-keys/:apiKeyId", ApiKey> | Endpoint<"POST", "/api-keys", ApiKey, CreateApiKeyDto> | Endpoint<"PUT", "/api-keys/:apiKeyId", ApiKey, UpdateApiKeyDto> | Endpoint<"DELETE", "/api-keys/:apiKeyId", ApiKey>; 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; }> | Endpoint<"PUT", "/users/~me/notifications/read", void>; type UserBookingTicket = Base & { booking: UserBookingWithoutTickets; ticket: OrganizationEventTicket; token: UserToken; useCount: number; }; type UserBookingTicketEndpoints = Endpoint<"GET", "/users/bookings/tickets/:ticketId", UserBookingTicket, { tokenId: string; tokenValue: string; }> | Endpoint<"PUT", "/users/bookings/tickets/:ticketId/use", UserBookingTicket, { tokenId: string; tokenValue: string; }>; type Order = Base & { invoice: Stripe__default.Invoice; user: UserProfile; }; type OrderEndpoints = Endpoint<"GET", "/orders", ArrayResult<Order>, ArrayOptions<Order>> | Endpoint<"GET", "/orders/:orderId", Order>; type UserBookingWithoutTickets = Omit<UserBooking, "tickets">; type UserBooking = Base & { tickets: UserBookingTicket[]; order: Order; customer: OrganizationCustomer; 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> | UserBookingTicketEndpoints; declare enum ProfileType { User = "user", Organization = "organization" } type BaseProfile = { type: ProfileType; slug: string; displayName: string; description?: string; avatarUrl?: string; bannerUrl?: string; links: 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 SearchProfilesOptions = ArrayOptions<Profile> & { q: string; }; type ProfileEndpoints = Endpoint<"GET", "/profiles", ArrayResult<Profile>, ArrayOptions<Profile>> | Endpoint<"GET", "/profiles/search", ArrayResult<Profile>, SearchProfilesOptions> | 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 UserCustomer = UserProfile & { email?: string; phoneNumber?: string; firstName: string; lastName: string; fullName: string; metadata: UserCustomerMetadata; }; type UserCustomerMetadata = UserProfileMetadata & { bookingsCount: number; eventsAttendedCount: number; totalSpent: number; lastBookingAt?: Date; }; 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 User = Base & { identifier: UserIdentifier; password?: string; identity: UserIdentity; role: UserRole; addresses: Location$1[]; preferences: UserPreferences; connections: UserConnection[]; oauthProviders: UserOAuthProvider[]; isVerified: boolean; isOfficial: boolean; }; type UserIdentifier = { email?: string; phoneNumber?: string; username: string; }; type UserIdentity = UserProfile & { firstName: string; lastName: string; fullName: string; gender: UserIdentityGender; birthDate: Date; birthDateLastUpdatedAt?: 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 UserOAuthProvider = Base & { provider: OAuth2Provider; providerId: string; displayName?: string; username?: string; email?: string; emailVerified: boolean; lastUsedAt?: 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", 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> | Endpoint<"POST", "/users/files/:userFileType", string, FormData> | UserBookingEndpoints | UserNotificationEndpoints | UserPostEndpoints; declare enum OAuth2Provider { Google = "google", Facebook = "facebook", Twitter = "twitter" } type AuthMethod = OAuth2Provider | "password"; type RecoveryResponse = { to: string; }; type AuthResponse = { user: User; accessToken: string; refreshToken: string; }; type AuthEndpoints = Endpoint<"POST", "/auth/sign-up", AuthResponse, CreateUserDto> | Endpoint<"POST", "/auth/sign-in", AuthResponse, SignInUserDto> | Endpoint<"POST", "/auth/sign-out", null, null> | Endpoint<"POST", "/auth/refresh-token", AuthResponse, null> | Endpoint<"POST", "/auth/recovery", RecoveryResponse, RecoveryDto> | Endpoint<"POST", "/auth/recovery/reset", null, RecoveryResetDto> | Endpoint<"GET", "/oauth2/:provider", void> | Endpoint<"GET", "/oauth2/:provider/callback", void> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Google}`, void> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Google}/callback`, void> | Endpoint<"POST", `/oauth2/${OAuth2Provider.Google}/one-tap`, AuthResponse, GoogleOneTapDto> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Facebook}`, void> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Facebook}/callback`, void> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Twitter}`, void> | Endpoint<"GET", `/oauth2/${OAuth2Provider.Twitter}/callback`, void> | Endpoint<"DELETE", "/oauth2/:provider", 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" } declare enum FeedType { Following = "following", Discover = "discover" } type FeedPost = UserPost | OrganizationEvent[]; type FeedEndpoints = Endpoint<"GET", "/feed/following", ArrayResult<FeedPost>, ArrayOptions<FeedPost>> | Endpoint<"GET", "/feed/discover", ArrayResult<FeedPost>, ArrayOptions<FeedPost>>; 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>; 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", Festival = "festival", HouseParty = "house_party", FriendsParty = "friends_party", Afterwork = "afterwork", DancingLunch = "dancing_lunch", Diner = "diner", Garden = "garden", AfterBeach = "after_beach", 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[]; types?: OrganizationEventType | OrganizationEventType[]; styles?: string | string[]; }; type SearchOrganizationEventsOptions = ArrayOptions<OrganizationEvent> & { q: string; }; type OrganizationEventCalendar = { [date: string]: OrganizationEvent[]; }; type OrganizationEventEndpoints = Endpoint<"GET", "/organizations/events/search", ArrayResult<OrganizationEvent>, SearchOrganizationEventsOptions> | Endpoint<"GET", "/organizations/events/calendar/:year/:month", OrganizationEventCalendar> | Endpoint<"GET", "/organizations/events", ArrayResult<OrganizationEvent>, OrganizationEventArrayOptions> | 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>; type OrganizationCustomer = UserProfile & { email?: string; phoneNumber?: string; firstName: string; lastName: string; fullName: string; birthDate: Date; metadata: OrganizationCustomerMetadata; }; type OrganizationCustomerMetadata = UserProfileMetadata & { bookingsCount: number; eventsAttendedCount: number; totalSpent: number; lastBookingAt?: Date; }; type OrganizationCustomersEndpoints = Endpoint<"GET", "/organizations/@:organizationSlug/customers", ArrayResult<OrganizationCustomer>, ArrayOptions<OrganizationCustomer>> | Endpoint<"GET", "/organizations/@:organizationSlug/customers/:username", OrganizationCustomer>; 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 OrganizationOrder = Omit<Order, "user"> & { customer: OrganizationCustomer; }; type OrganizationOrdersEndpoints = Endpoint<"GET", "/organizations/@:organizationSlug/orders", ArrayResult<OrganizationOrder>, ArrayOptions<OrganizationOrder>> | Endpoint<"GET", "/organizations/@:organizationSlug/orders/:orderId", OrganizationOrder> | Endpoint<"GET", "/organizations/@:organizationSlug/events/:eventSlug/orders", ArrayResult<OrganizationOrder>, ArrayOptions<OrganizationOrder>>; 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; declare enum OrganizationFileType { Avatar = "avatar", Banner = "banner" } 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<"POST", "/organizations/@:organizationSlug/files/:organizationFileType", string, FormData> | Endpoint<"GET", "/organizations/@:organizationSlug/billing/account", OrganizationBillingAccount> | Endpoint<"GET", "/organizations/@:organizationSlug/billing/link", void> | Endpoint<"GET", "/organizations/@:organizationSlug/billing/dashboard", void> | OrganizationEventEndpoints | OrganizationMembersEndpoints | OrganizationAnalyticsEndpoints | OrganizationCustomersEndpoints | OrganizationOrdersEndpoints; 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; }; type Endpoint<M extends Options["method"], Path extends string, Res, Body = undefined> = { method: M; path: Path; res: Res; body: Body; }; type Endpoints = ApiKeyEndpoints | AuthEndpoints | CareerEndpoints | ChannelEndpoints | ChannelMessageEndpoints | CurrenciesEndpoints | FeedEndpoints | HealthEndpoints | OrderEndpoints | OrganizationEndpoints | ProfileEndpoints | UserEndpoints | WebhookEndpoints | NotificationEndpoints; interface APIRequestOptions extends Options { apiKey?: string; accessToken?: string; } declare const request: <T>(url: string, options?: APIRequestOptions) => Promise<Response$1<APIResponse<T>>>; 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>>