@mohasinac/appkit 4.18.0 → 4.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +3 -1
- package/dist/_internal/client/features/lottery/LotteryPullForm.js +3 -1
- package/dist/_internal/shared/features/lottery/config-form.d.ts +58 -0
- package/dist/_internal/shared/features/lottery/config-form.js +71 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.js +3 -0
- package/dist/features/account/schemas/index.d.ts +23 -0
- package/dist/features/account/schemas/index.js +21 -0
- package/dist/features/admin/components/AdminSiteSettingsView.js +8 -6
- package/dist/features/admin/components/AdminUserEditorView.js +14 -12
- package/dist/features/admin/schemas/admin-user-form.d.ts +82 -0
- package/dist/features/admin/schemas/admin-user-form.js +102 -0
- package/dist/features/admin/schemas/site-settings-form.d.ts +309 -0
- package/dist/features/admin/schemas/site-settings-form.js +159 -0
- package/dist/features/auctions/components/PlaceBidFormClient.js +3 -2
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +4 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/schemas/registry.d.ts +682 -0
- package/dist/schemas/registry.js +22 -0
- package/package.json +1 -1
|
@@ -6,6 +6,8 @@ import { useQueryClient } from "@tanstack/react-query";
|
|
|
6
6
|
import { Avatar, Button, ConfirmDeleteModal, Div, Form, FormActions, Heading, Input, Row, Select, SideDrawer, Span, Stack, StackedViewShell, Text, Textarea, Toggle, useToast } from "../../../ui";
|
|
7
7
|
import { apiClient } from "../../../http";
|
|
8
8
|
import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
|
|
9
|
+
import { adminUserUpdateSchema } from "../schemas/admin-user-form";
|
|
10
|
+
import { FormErrorSummary } from "../../../ui/forms/FormErrorSummary";
|
|
9
11
|
const ROLE_OPTIONS = [
|
|
10
12
|
{ label: "User (buyer)", value: "user" },
|
|
11
13
|
{ label: "Seller", value: "seller" },
|
|
@@ -237,18 +239,18 @@ export function AdminUserEditorView({ open, onClose, userId, displayName, photoU
|
|
|
237
239
|
const renderAdminNotesSection = () => (_jsx(Textarea, { label: "Admin notes (optional)", value: adminNotes, onChange: (e) => setAdminNotes(e.target.value), rows: 3, placeholder: "Internal notes about this user\u2026" }));
|
|
238
240
|
const renderActionsSection = () => (_jsxs(FormActions, { align: "right", children: [_jsx(Button, { type: "button", variant: "danger", onClick: () => setDeleteOpen(true), disabled: !userId, children: "Delete user" }), _jsx(Button, { type: "button", variant: "secondary", onClick: onClose, children: "Cancel" }), _jsx(Button, { type: "submit", isLoading: saveMutation.isPending, disabled: !userId || saveMutation.isPending, children: "Save changes" })] }));
|
|
239
241
|
const renderModerationSection = () => (_jsxs(Stack, { border: "default", as: "section", gap: "sm", className: "border-t", padding: "t-md", children: [_jsx(Heading, { level: 3, className: "mb-3", color: "muted", size: "sm", weight: "semibold", children: "Moderation" }), _jsx(HardBanPanel, { userId: userId, isHardBanned: isHardBanned, currentHardBanReason: currentHardBanReason, showHardBanForm: showHardBanForm, setShowHardBanForm: setShowHardBanForm, hardBanReasonInput: hardBanReasonInput, setHardBanReasonInput: setHardBanReasonInput, hardBanPending: hardBanMutation.isPending, unbanPending: unbanMutation.isPending, onHardBan: (reason) => hardBanMutation.mutate(reason), onUnban: () => unbanMutation.mutate() }), _jsx(SoftBanPanel, { userId: userId, softBans: softBans, showAddSoftBan: showAddSoftBan, setShowAddSoftBan: setShowAddSoftBan, softBanAction: softBanAction, setSoftBanAction: setSoftBanAction, softBanReason: softBanReason, setSoftBanReason: setSoftBanReason, softBanExpiry: softBanExpiry, setSoftBanExpiry: setSoftBanExpiry, softBanPending: softBanMutation.isPending, liftPending: liftSoftBanMutation.isPending, onAddSoftBan: (payload) => softBanMutation.mutate(payload), onLiftSoftBan: (action) => liftSoftBanMutation.mutate(action) })] }));
|
|
240
|
-
return (_jsxs(_Fragment, { children: [_jsx(SideDrawer, { isOpen: open, onClose: onClose, title: displayName ? `Manage: ${displayName}` : "Manage User", children:
|
|
242
|
+
return (_jsxs(_Fragment, { children: [_jsx(SideDrawer, { isOpen: open, onClose: onClose, title: displayName ? `Manage: ${displayName}` : "Manage User", children: _jsxs(Form, { schema: adminUserUpdateSchema, onSubmit: (e) => {
|
|
241
243
|
e.preventDefault();
|
|
242
244
|
saveMutation.mutate();
|
|
243
|
-
}, padding: "md", children: _jsx(StackedViewShell, { portal: "admin", className: "space-y-4", sections: [
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
245
|
+
}, padding: "md", children: [_jsx(FormErrorSummary, {}), _jsx(StackedViewShell, { portal: "admin", className: "space-y-4", sections: [
|
|
246
|
+
renderAvatarHeader,
|
|
247
|
+
renderInfoCard,
|
|
248
|
+
renderRoleSection,
|
|
249
|
+
renderEmailVerifiedSection,
|
|
250
|
+
renderIsTesterSection,
|
|
251
|
+
renderProfileSection,
|
|
252
|
+
renderAdminNotesSection,
|
|
253
|
+
renderActionsSection,
|
|
254
|
+
renderModerationSection,
|
|
255
|
+
] })] }) }), _jsx(ConfirmDeleteModal, { isOpen: deleteOpen, onClose: () => setDeleteOpen(false), onConfirm: () => deleteMutation.mutate(), isDeleting: deleteMutation.isPending, title: `Delete ${displayName ?? "user"}?`, message: "This action cannot be undone. The user's account and all associated data will be permanently removed.", confirmText: "Delete user", variant: "danger" })] }));
|
|
254
256
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const adminUserUpdateSchema: z.ZodObject<{
|
|
3
|
+
displayName: z.ZodOptional<z.ZodString>;
|
|
4
|
+
phoneNumber: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
5
|
+
isTester: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
canTestAdmin: z.ZodOptional<z.ZodBoolean>;
|
|
7
|
+
adminNotes: z.ZodOptional<z.ZodString>;
|
|
8
|
+
publicProfile: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../..").FirestoreValue, z.ZodTypeDef, import("../../..").FirestoreValue>>>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
displayName?: string | undefined;
|
|
11
|
+
adminNotes?: string | undefined;
|
|
12
|
+
phoneNumber?: string | undefined;
|
|
13
|
+
isTester?: boolean | undefined;
|
|
14
|
+
canTestAdmin?: boolean | undefined;
|
|
15
|
+
publicProfile?: Record<string, import("../../..").FirestoreValue> | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
displayName?: string | undefined;
|
|
18
|
+
adminNotes?: string | undefined;
|
|
19
|
+
phoneNumber?: string | undefined;
|
|
20
|
+
isTester?: boolean | undefined;
|
|
21
|
+
canTestAdmin?: boolean | undefined;
|
|
22
|
+
publicProfile?: Record<string, import("../../..").FirestoreValue> | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export type AdminUserUpdateValues = z.infer<typeof adminUserUpdateSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* A store's WhatsApp Business connection.
|
|
27
|
+
*
|
|
28
|
+
* `accessToken` is optional because the form shows a masked placeholder and
|
|
29
|
+
* only sends the field when the seller types a NEW value — so "absent" means
|
|
30
|
+
* "unchanged", not "clear it". The `.min(20)` therefore applies only to a real
|
|
31
|
+
* replacement, and is there because a truncated token fails silently at sync
|
|
32
|
+
* time rather than on save.
|
|
33
|
+
*/
|
|
34
|
+
export declare const whatsappSettingsSchema: z.ZodObject<{
|
|
35
|
+
catalogSyncEnabled: z.ZodBoolean;
|
|
36
|
+
phoneNumber: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
37
|
+
wabaId: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
38
|
+
catalogId: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
39
|
+
accessToken: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
catalogSyncEnabled: boolean;
|
|
42
|
+
phoneNumber?: string | undefined;
|
|
43
|
+
accessToken?: string | undefined;
|
|
44
|
+
wabaId?: string | undefined;
|
|
45
|
+
catalogId?: string | undefined;
|
|
46
|
+
}, {
|
|
47
|
+
catalogSyncEnabled: boolean;
|
|
48
|
+
phoneNumber?: string | undefined;
|
|
49
|
+
accessToken?: string | undefined;
|
|
50
|
+
wabaId?: string | undefined;
|
|
51
|
+
catalogId?: string | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
export type WhatsappSettingsValues = z.infer<typeof whatsappSettingsSchema>;
|
|
54
|
+
/**
|
|
55
|
+
* A buyer's lottery entry.
|
|
56
|
+
*
|
|
57
|
+
* `purchasedItemNumber` was `parseInt(itemNumber, 10)` — `NaN` for anything
|
|
58
|
+
* non-numeric — and `paymentTime` was `new Date(...)`, which yields
|
|
59
|
+
* `Invalid Date` and then throws on `.toISOString()`. Both are coerced and
|
|
60
|
+
* checked here so the failure is an inline message rather than a crash or a
|
|
61
|
+
* `NaN` written to the entry.
|
|
62
|
+
*/
|
|
63
|
+
export declare const lotteryPullSchema: z.ZodObject<{
|
|
64
|
+
sourceType: z.ZodEnum<["event", "product"]>;
|
|
65
|
+
transactionId: z.ZodString;
|
|
66
|
+
paymentTime: z.ZodEffects<z.ZodString, string, string>;
|
|
67
|
+
purchasedItemNumber: z.ZodNumber;
|
|
68
|
+
userPhone: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
69
|
+
}, "strip", z.ZodTypeAny, {
|
|
70
|
+
transactionId: string;
|
|
71
|
+
sourceType: "event" | "product";
|
|
72
|
+
paymentTime: string;
|
|
73
|
+
purchasedItemNumber: number;
|
|
74
|
+
userPhone?: string | undefined;
|
|
75
|
+
}, {
|
|
76
|
+
transactionId: string;
|
|
77
|
+
sourceType: "event" | "product";
|
|
78
|
+
paymentTime: string;
|
|
79
|
+
purchasedItemNumber: number;
|
|
80
|
+
userPhone?: string | undefined;
|
|
81
|
+
}>;
|
|
82
|
+
export type LotteryPullValues = z.infer<typeof lotteryPullSchema>;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Three more forms, each writing something with a blast radius.
|
|
3
|
+
*
|
|
4
|
+
* `AdminUserEditorView` edits another person's account — `displayName`
|
|
5
|
+
* and `phoneNumber` are PII, encrypted at rest, and neither was checked.
|
|
6
|
+
* `isTester`/`canTestAdmin` are the flags Recurrent Root Cause #38 was
|
|
7
|
+
* about: the list endpoint dropped them, the editor defaulted them to
|
|
8
|
+
* false, and saving any unrelated field silently stripped a real
|
|
9
|
+
* tester's access.
|
|
10
|
+
*
|
|
11
|
+
* `SellerWhatsAppSettingsView` writes `accessToken` — a live Meta
|
|
12
|
+
* credential — plus the WABA and catalog ids the sync runs against. A
|
|
13
|
+
* malformed id there fails at sync time, hours later, with no obvious
|
|
14
|
+
* cause.
|
|
15
|
+
*
|
|
16
|
+
* `LotteryPullForm` is a buyer-facing entry: a transaction id, a payment
|
|
17
|
+
* time and an item number, all parsed with a bare `parseInt` and a `new
|
|
18
|
+
* Date(...)` that yields `Invalid Date` on anything unparseable.
|
|
19
|
+
*
|
|
20
|
+
* EXPORTS:
|
|
21
|
+
* adminUserUpdateSchema, whatsappSettingsSchema, lotteryPullSchema,
|
|
22
|
+
* and their inferred value types
|
|
23
|
+
*
|
|
24
|
+
* @tag domain:admin,whatsapp,lottery
|
|
25
|
+
* @tag layer:schema
|
|
26
|
+
* @tag pattern:none
|
|
27
|
+
* @tag access:isomorphic
|
|
28
|
+
* @tag consumers:AdminUserEditorView,SellerWhatsAppSettingsView,LotteryPullForm
|
|
29
|
+
* @tag sideEffects:none
|
|
30
|
+
*/
|
|
31
|
+
import { z } from "zod";
|
|
32
|
+
import { annotate } from "../../shell/field-ui-meta";
|
|
33
|
+
import { firestoreValueSchema } from "../../../schemas/firestore-value";
|
|
34
|
+
const PHONE_RE = /^(\+?91[-\s]?)?[6-9]\d{9}$/;
|
|
35
|
+
export const adminUserUpdateSchema = z.object({
|
|
36
|
+
displayName: annotate(z.string().trim().min(1).max(120).optional(), {
|
|
37
|
+
section: "profile", sectionLabel: "Profile", sectionRequired: true, quick: true, order: 1, row: "pair",
|
|
38
|
+
}),
|
|
39
|
+
phoneNumber: annotate(z.string().trim().regex(PHONE_RE, "Enter a 10-digit Indian mobile number.").optional().or(z.literal("")), { section: "profile", order: 2, row: "pair" }),
|
|
40
|
+
/*
|
|
41
|
+
* The tester flags. Kept OPTIONAL rather than defaulted, deliberately: a
|
|
42
|
+
* PATCH that omits them must leave them alone. Defaulting either to `false`
|
|
43
|
+
* here would reproduce Root Cause #38 in the schema layer — the editor
|
|
44
|
+
* already did exactly that from the list row.
|
|
45
|
+
*/
|
|
46
|
+
isTester: annotate(z.boolean().optional(), {
|
|
47
|
+
section: "access", sectionLabel: "Access", order: 1, row: "quarter",
|
|
48
|
+
}),
|
|
49
|
+
canTestAdmin: annotate(z.boolean().optional(), {
|
|
50
|
+
section: "access", order: 2, row: "quarter",
|
|
51
|
+
}),
|
|
52
|
+
adminNotes: annotate(z.string().trim().max(2000).optional(), {
|
|
53
|
+
section: "access", order: 3, row: "full", kind: "textarea",
|
|
54
|
+
help: "Internal only — never shown to the user.",
|
|
55
|
+
}),
|
|
56
|
+
// Open: the public profile carries per-user social links and bio fields that
|
|
57
|
+
// are added over time, and a closed shape would strip a newly-added one.
|
|
58
|
+
publicProfile: annotate(z.record(firestoreValueSchema).optional(), {
|
|
59
|
+
section: "access", order: 4, row: "full", kind: "list",
|
|
60
|
+
}),
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* A store's WhatsApp Business connection.
|
|
64
|
+
*
|
|
65
|
+
* `accessToken` is optional because the form shows a masked placeholder and
|
|
66
|
+
* only sends the field when the seller types a NEW value — so "absent" means
|
|
67
|
+
* "unchanged", not "clear it". The `.min(20)` therefore applies only to a real
|
|
68
|
+
* replacement, and is there because a truncated token fails silently at sync
|
|
69
|
+
* time rather than on save.
|
|
70
|
+
*/
|
|
71
|
+
export const whatsappSettingsSchema = z.object({
|
|
72
|
+
catalogSyncEnabled: annotate(z.boolean(), {
|
|
73
|
+
section: "sync", sectionLabel: "Catalog sync", sectionRequired: true, quick: true, order: 1, row: "quarter",
|
|
74
|
+
}),
|
|
75
|
+
phoneNumber: annotate(z.string().trim().regex(PHONE_RE, "Enter the 10-digit WhatsApp Business number.").optional().or(z.literal("")), { section: "connection", sectionLabel: "Connection", order: 1, row: "pair" }),
|
|
76
|
+
// Meta ids are numeric strings; a pasted URL or a stray space is the usual
|
|
77
|
+
// mistake and produces a sync that never runs.
|
|
78
|
+
wabaId: annotate(z.string().trim().regex(/^\d{5,32}$/, "A WABA ID is a numeric id, not a URL.").optional().or(z.literal("")), { section: "connection", order: 2, row: "pair" }),
|
|
79
|
+
catalogId: annotate(z.string().trim().regex(/^\d{5,32}$/, "A catalog ID is a numeric id, not a URL.").optional().or(z.literal("")), { section: "connection", order: 3, row: "pair" }),
|
|
80
|
+
accessToken: annotate(z.string().trim().min(20, "That access token looks truncated.").optional().or(z.literal("")), { section: "connection", order: 4, row: "full", help: "Leave blank to keep the current token." }),
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* A buyer's lottery entry.
|
|
84
|
+
*
|
|
85
|
+
* `purchasedItemNumber` was `parseInt(itemNumber, 10)` — `NaN` for anything
|
|
86
|
+
* non-numeric — and `paymentTime` was `new Date(...)`, which yields
|
|
87
|
+
* `Invalid Date` and then throws on `.toISOString()`. Both are coerced and
|
|
88
|
+
* checked here so the failure is an inline message rather than a crash or a
|
|
89
|
+
* `NaN` written to the entry.
|
|
90
|
+
*/
|
|
91
|
+
export const lotteryPullSchema = z.object({
|
|
92
|
+
sourceType: annotate(z.enum(["event", "product"]), {
|
|
93
|
+
section: "entry", sectionLabel: "Entry", sectionRequired: true, quick: true, order: 1, row: "pair",
|
|
94
|
+
}),
|
|
95
|
+
transactionId: annotate(z.string().trim().min(4, "Enter the payment reference from your app.").max(120), { section: "entry", quick: true, order: 2, row: "pair" }),
|
|
96
|
+
paymentTime: annotate(z.string().trim().min(1, "When did you pay?").refine((v) => !Number.isNaN(Date.parse(v)), "That isn't a valid date and time."), { section: "entry", quick: true, order: 3, row: "pair", kind: "date" }),
|
|
97
|
+
purchasedItemNumber: annotate(z.coerce
|
|
98
|
+
.number({ invalid_type_error: "Enter the slot number you bought." })
|
|
99
|
+
.int("A slot number is a whole number.")
|
|
100
|
+
.min(1, "Slot numbers start at 1."), { section: "entry", quick: true, order: 4, row: "pair", kind: "number" }),
|
|
101
|
+
userPhone: annotate(z.string().trim().regex(PHONE_RE, "Enter a 10-digit Indian mobile number.").optional().or(z.literal("")), { section: "entry", order: 5, row: "pair" }),
|
|
102
|
+
});
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const siteSettingsFormSchema: z.ZodObject<{
|
|
3
|
+
announcementBar: z.ZodOptional<z.ZodObject<{
|
|
4
|
+
message: z.ZodOptional<z.ZodString>;
|
|
5
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
7
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
8
|
+
message: z.ZodOptional<z.ZodString>;
|
|
9
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
11
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
12
|
+
message: z.ZodOptional<z.ZodString>;
|
|
13
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
15
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
16
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
18
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
19
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
21
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
22
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
23
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
25
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
26
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
27
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
29
|
+
commissions: z.ZodOptional<z.ZodObject<{
|
|
30
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
38
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
46
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
54
|
+
laborRate: z.ZodOptional<z.ZodObject<{
|
|
55
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
57
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
58
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
59
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
61
|
+
emi: z.ZodOptional<z.ZodObject<{
|
|
62
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
63
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
65
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
66
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
67
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
68
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
70
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
74
|
+
gst: z.ZodOptional<z.ZodObject<{
|
|
75
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
76
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
78
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
79
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
81
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
82
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
84
|
+
auctionConfig: z.ZodOptional<z.ZodObject<{
|
|
85
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
88
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
91
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
92
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
94
|
+
seo: z.ZodOptional<z.ZodObject<{
|
|
95
|
+
title: z.ZodOptional<z.ZodString>;
|
|
96
|
+
description: z.ZodOptional<z.ZodString>;
|
|
97
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
98
|
+
title: z.ZodOptional<z.ZodString>;
|
|
99
|
+
description: z.ZodOptional<z.ZodString>;
|
|
100
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
101
|
+
title: z.ZodOptional<z.ZodString>;
|
|
102
|
+
description: z.ZodOptional<z.ZodString>;
|
|
103
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
104
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
105
|
+
announcementBar: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
message: z.ZodOptional<z.ZodString>;
|
|
107
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
108
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
109
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
110
|
+
message: z.ZodOptional<z.ZodString>;
|
|
111
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
113
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
114
|
+
message: z.ZodOptional<z.ZodString>;
|
|
115
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
116
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
117
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
118
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
119
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
120
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
121
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
122
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
123
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
124
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
125
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
126
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
127
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
128
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
129
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
131
|
+
commissions: z.ZodOptional<z.ZodObject<{
|
|
132
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
135
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
138
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
139
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
140
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
141
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
142
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
143
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
144
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
148
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
149
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
150
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
151
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
152
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
153
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
154
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
155
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
156
|
+
laborRate: z.ZodOptional<z.ZodObject<{
|
|
157
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
158
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
159
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
161
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
162
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
163
|
+
emi: z.ZodOptional<z.ZodObject<{
|
|
164
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
166
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
167
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
168
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
169
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
170
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
172
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
173
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
174
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
175
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
176
|
+
gst: z.ZodOptional<z.ZodObject<{
|
|
177
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
178
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
179
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
180
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
181
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
182
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
183
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
184
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
185
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
186
|
+
auctionConfig: z.ZodOptional<z.ZodObject<{
|
|
187
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
188
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
189
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
190
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
191
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
192
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
193
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
194
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
195
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
196
|
+
seo: z.ZodOptional<z.ZodObject<{
|
|
197
|
+
title: z.ZodOptional<z.ZodString>;
|
|
198
|
+
description: z.ZodOptional<z.ZodString>;
|
|
199
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
200
|
+
title: z.ZodOptional<z.ZodString>;
|
|
201
|
+
description: z.ZodOptional<z.ZodString>;
|
|
202
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
203
|
+
title: z.ZodOptional<z.ZodString>;
|
|
204
|
+
description: z.ZodOptional<z.ZodString>;
|
|
205
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
206
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
207
|
+
announcementBar: z.ZodOptional<z.ZodObject<{
|
|
208
|
+
message: z.ZodOptional<z.ZodString>;
|
|
209
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
210
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
211
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
212
|
+
message: z.ZodOptional<z.ZodString>;
|
|
213
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
214
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
215
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
216
|
+
message: z.ZodOptional<z.ZodString>;
|
|
217
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
218
|
+
link: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
219
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
220
|
+
contact: z.ZodOptional<z.ZodObject<{
|
|
221
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
222
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
223
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
224
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
225
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
226
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
227
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
228
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
229
|
+
email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
230
|
+
supportEmail: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
231
|
+
phone: z.ZodOptional<z.ZodString>;
|
|
232
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
233
|
+
commissions: z.ZodOptional<z.ZodObject<{
|
|
234
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
235
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
236
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
237
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
238
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
239
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
240
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
241
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
242
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
243
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
244
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
245
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
246
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
247
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
248
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
249
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
250
|
+
platformFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
251
|
+
gatewayFeePercent: z.ZodOptional<z.ZodNumber>;
|
|
252
|
+
platformFeeMax: z.ZodOptional<z.ZodNumber>;
|
|
253
|
+
minPayoutAmount: z.ZodOptional<z.ZodNumber>;
|
|
254
|
+
payoutHoldDays: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
codHandlingFee: z.ZodOptional<z.ZodNumber>;
|
|
256
|
+
codDepositPercent: z.ZodOptional<z.ZodNumber>;
|
|
257
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
258
|
+
laborRate: z.ZodOptional<z.ZodObject<{
|
|
259
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
260
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
261
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
262
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
263
|
+
hourlyRate: z.ZodOptional<z.ZodNumber>;
|
|
264
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
265
|
+
emi: z.ZodOptional<z.ZodObject<{
|
|
266
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
267
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
268
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
269
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
270
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
271
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
272
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
273
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
274
|
+
surchargePercent: z.ZodOptional<z.ZodNumber>;
|
|
275
|
+
surchargeSellerSharePercent: z.ZodOptional<z.ZodNumber>;
|
|
276
|
+
minOrderAmount: z.ZodOptional<z.ZodNumber>;
|
|
277
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
278
|
+
gst: z.ZodOptional<z.ZodObject<{
|
|
279
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
280
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
281
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
282
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
283
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
284
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
285
|
+
gstin: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
286
|
+
ratePercent: z.ZodOptional<z.ZodNumber>;
|
|
287
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
288
|
+
auctionConfig: z.ZodOptional<z.ZodObject<{
|
|
289
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
290
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
291
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
292
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
293
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
294
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
295
|
+
minBidIncrement: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
extensionMinutes: z.ZodOptional<z.ZodNumber>;
|
|
297
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
298
|
+
seo: z.ZodOptional<z.ZodObject<{
|
|
299
|
+
title: z.ZodOptional<z.ZodString>;
|
|
300
|
+
description: z.ZodOptional<z.ZodString>;
|
|
301
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
302
|
+
title: z.ZodOptional<z.ZodString>;
|
|
303
|
+
description: z.ZodOptional<z.ZodString>;
|
|
304
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
305
|
+
title: z.ZodOptional<z.ZodString>;
|
|
306
|
+
description: z.ZodOptional<z.ZodString>;
|
|
307
|
+
}, z.ZodTypeAny, "passthrough">>>;
|
|
308
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
309
|
+
export type SiteSettingsFormValues = z.infer<typeof siteSettingsFormSchema>;
|