import {z} from 'zod' export type CreateApiItemIdCheckAccountArgs = {item_id: number}; export type CreateApiItemIdCheckAccountOptions = {baseUrl?: string | undefined, HTTPBearer?: string | undefined, fetch?: typeof fetch | undefined}; export const respSystemInfo = z.object({rate_limit: z.object({limit: z.number().int(), remaining: z.number().int(), reset: z.number().int(), bucket: z.string().optional()}), visitor_id: z.number().int(), time: z.number().int(), log_id: z.number().int()}); export const createApiItemIdCheckAccountResponse = z.object({status: z.string(), item: z.object({item_id: z.number().int(), item_state: z.string(), category_id: z.number().int(), published_date: z.number().int(), title: z.string(), description: z.string(), price: z.number().int(), update_stat_date: z.number().int(), refreshed_date: z.number().int(), edit_date: z.number().int(), view_count: z.number().int(), is_sticky: z.number().int(), item_origin: z.string(), extended_guarantee: z.number().int(), nsb: z.number().int(), allow_ask_discount: z.number().int(), title_en: z.string(), description_en: z.string(), email_type: z.string(), email_provider: z.string(), item_domain: z.string(), resale_item_origin: z.string(), user_allow_ask_discount: z.number().int(), max_discount_percent: z.number().int(), market_custom_title: z.string(), feedback_data: z.string(), category_title: z.string(), category_url: z.string(), require_temp_email: z.number().int(), available_temp_email: z.number().int(), check_button_enabled: z.number().int(), checker_enabled: z.number().int(), buy_without_validation: z.number().int(), has_guarantee: z.number().int(), require_video_recording: z.number().int(), can_be_resold: z.number().int(), login_type: z.string(), require_email_login_data: z.number().int(), category_prefix_id: z.number().int(), ask_user_id: z.unknown(), ask_item_id: z.unknown(), ask_date: z.unknown(), discount_price: z.unknown(), discount_accepted: z.unknown(), user_alerted: z.unknown(), message: z.unknown(), min_price: z.number().int(), priceWithSellerFee: z.number().int(), guarantee: z.object({duration: z.number().int(), class: z.string(), durationPhrase: z.string(), endDate: z.unknown(), active: z.unknown(), cancelled: z.unknown(), remainingTime: z.unknown()}), canViewLoginData: z.boolean(), canUpdateItemStats: z.boolean(), canReportItem: z.boolean(), canViewEmailLoginData: z.boolean(), showGetEmailCodeButton: z.boolean(), isPersonalAccount: z.boolean(), rub_price: z.number().int(), price_currency: z.string(), canValidateAccount: z.boolean(), canResellItemAfterPurchase: z.boolean(), isSmallExf: z.boolean(), account_last_activity: z.number().int(), canViewAccountLink: z.boolean(), accountLinks: z.array(z.object({link: z.string(), text: z.string(), iconClass: z.string()})), accountLink: z.string(), emailLoginUrl: z.string(), canChangePassword: z.boolean(), itemOriginPhrase: z.string(), visitorIsAuthor: z.boolean(), canAskDiscount: z.boolean(), tags: z.array(z.unknown()), customFields: z.array(z.unknown()), externalAuth: z.array(z.unknown()), isTrusted: z.boolean(), isBirthdayToday: z.boolean(), isIgnored: z.boolean(), deposit: z.number().int(), extraPrices: z.array(z.object({currency: z.string(), price: z.string()})), canViewAccountLoginAndTempEmail: z.boolean(), bumpSettings: z.object({canBumpItem: z.boolean(), canBumpItemGlobally: z.boolean(), shortErrorPhrase: z.unknown(), errorPhrase: z.unknown()}), canCheckGuarantee: z.boolean(), needToRequireVideoToViewLoginData: z.boolean(), descriptionHtml: z.string(), descriptionEnHtml: z.string(), descriptionPlain: z.string(), descriptionEnPlain: z.string(), seller: z.object({user_id: z.number().int(), username: z.string(), avatar_date: z.number().int(), is_banned: z.number().int(), display_style_group_id: z.number().int(), joined_date: z.number().int(), sold_items_count: z.number().int(), active_items_count: z.number().int(), restore_data: z.string(), restore_percents: z.unknown(), isOnline: z.boolean()})}), requireVideoRecording: z.boolean(), system_info: respSystemInfo}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Check Account * * POST /{item_id}/check-account */ export const createApiItemIdCheckAccount = async (args: CreateApiItemIdCheckAccountArgs, options?: CreateApiItemIdCheckAccountOptions) => { const {baseUrl = "https://api.lzt.market", fetch: fetchFn = fetch, HTTPBearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (HTTPBearer !== undefined) headers.set('authorization', `Bearer ${HTTPBearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/${encodeURIComponent(String(args.item_id))}/check-account${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(createApiItemIdCheckAccountResponse, await res.json()) };