jansathi-community-schema 0.31.0 → 0.33.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.
@@ -130,6 +130,30 @@ export declare const CROWDFUNDING_MAX_IMAGES = 5;
130
130
  * etc.). Kept off the wire; only the verifier and the creator see
131
131
  * these. */
132
132
  export declare const CROWDFUNDING_MAX_SUPPORTING_DOCS = 5;
133
+ /** Max proof documents the v0.33+ composer accepts. Typed + described
134
+ * per-document; the verifier reviews each one against the campaign's
135
+ * category-specific required-doc matrix. Set higher than
136
+ * `MAX_SUPPORTING_DOCS` because the typed flow expects multiple
137
+ * per-category (e.g. medical: hospital bill + diagnosis + doctor
138
+ * letter + insurance denial). */
139
+ export declare const CROWDFUNDING_MAX_PROOF_DOCS = 10;
140
+ /** Minimum proof documents required at submit time. Hard floor; the
141
+ * per-category required-type matrix is enforced separately. */
142
+ export declare const CROWDFUNDING_MIN_PROOF_DOCS = 1;
143
+ /** Min / max character length of the per-doc free-text description
144
+ * the creator writes alongside each proof upload. */
145
+ export declare const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MIN_CHARS = 3;
146
+ export declare const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MAX_CHARS = 200;
147
+ /** Current Terms & Conditions version. Bump when material clauses
148
+ * change (fee structure, dispute resolution, KYC obligations); the
149
+ * submit-for-review handler accepts only campaigns whose
150
+ * `acceptedTermsVersion` matches THIS string. The composer's T&C
151
+ * step renders the full body keyed by this version. */
152
+ export declare const CROWDFUNDING_TERMS_VERSION = "v1.0";
153
+ /** Days the creator has from approval to complete Razorpay Linked
154
+ * Account KYC. After this window a scheduled job auto-reverts the
155
+ * campaign to `rejected` with a "bank link deadline missed" reason. */
156
+ export declare const CROWDFUNDING_BANK_LINK_DEADLINE_DAYS = 30;
133
157
  /** Beneficiary fields. */
134
158
  export declare const CROWDFUNDING_BENEFICIARY_NAME_MAX_CHARS = 100;
135
159
  export declare const CROWDFUNDING_BENEFICIARY_RELATION_MAX_CHARS = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -139,6 +139,30 @@ export const CROWDFUNDING_MAX_IMAGES = 5;
139
139
  * etc.). Kept off the wire; only the verifier and the creator see
140
140
  * these. */
141
141
  export const CROWDFUNDING_MAX_SUPPORTING_DOCS = 5;
142
+ /** Max proof documents the v0.33+ composer accepts. Typed + described
143
+ * per-document; the verifier reviews each one against the campaign's
144
+ * category-specific required-doc matrix. Set higher than
145
+ * `MAX_SUPPORTING_DOCS` because the typed flow expects multiple
146
+ * per-category (e.g. medical: hospital bill + diagnosis + doctor
147
+ * letter + insurance denial). */
148
+ export const CROWDFUNDING_MAX_PROOF_DOCS = 10;
149
+ /** Minimum proof documents required at submit time. Hard floor; the
150
+ * per-category required-type matrix is enforced separately. */
151
+ export const CROWDFUNDING_MIN_PROOF_DOCS = 1;
152
+ /** Min / max character length of the per-doc free-text description
153
+ * the creator writes alongside each proof upload. */
154
+ export const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MIN_CHARS = 3;
155
+ export const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MAX_CHARS = 200;
156
+ /** Current Terms & Conditions version. Bump when material clauses
157
+ * change (fee structure, dispute resolution, KYC obligations); the
158
+ * submit-for-review handler accepts only campaigns whose
159
+ * `acceptedTermsVersion` matches THIS string. The composer's T&C
160
+ * step renders the full body keyed by this version. */
161
+ export const CROWDFUNDING_TERMS_VERSION = 'v1.0';
162
+ /** Days the creator has from approval to complete Razorpay Linked
163
+ * Account KYC. After this window a scheduled job auto-reverts the
164
+ * campaign to `rejected` with a "bank link deadline missed" reason. */
165
+ export const CROWDFUNDING_BANK_LINK_DEADLINE_DAYS = 30;
142
166
  /** Beneficiary fields. */
143
167
  export const CROWDFUNDING_BENEFICIARY_NAME_MAX_CHARS = 100;
144
168
  export const CROWDFUNDING_BENEFICIARY_RELATION_MAX_CHARS = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tunable constants shared across the community feature.\n *\n * Live here (not inline in feature code) so backend and every frontend\n * agree byte-for-byte on the same limits, paginations, and timeouts.\n * Bump versions of this package when these change.\n *\n * @module community-schema/constants\n */\n\n// ─── Pagination ─────────────────────────────────────────────────────────────\n\n/** Feed list default page size. */\nexport const FEED_PAGE_SIZE = 20;\n\n/** People list default page size. */\nexport const PEOPLE_PAGE_SIZE = 30;\n\n/** Comments per page on a single post. */\nexport const COMMENTS_PAGE_SIZE = 20;\n\n/** Replies per top-level comment loaded with the first comments page. */\nexport const REPLIES_PRELOAD_COUNT = 3;\n\n// ─── Post media limits ─────────────────────────────────────────────────────\n\n/** Max images per post. */\nexport const POST_MAX_IMAGES = 10;\n\n/** Max videos per post. */\nexport const POST_MAX_VIDEOS = 5;\n\n/** Max duration of a single video in seconds (10 min). */\nexport const POST_MAX_VIDEO_SECONDS = 10 * 60;\n\n/** Per-image hard cap (15 MB). The file service compresses to fit. */\nexport const POST_MAX_IMAGE_BYTES = 15 * 1024 * 1024;\n\n/** Per-video hard cap (200 MB). */\nexport const POST_MAX_VIDEO_BYTES = 200 * 1024 * 1024;\n\n// ─── Text limits ────────────────────────────────────────────────────────────\n\n/** Post body character cap. Long enough for long-form, short enough to\n * keep feed rendering snappy. */\nexport const POST_MAX_BODY_CHARS = 5000;\n\n/** Comment + reply body character cap. */\nexport const COMMENT_MAX_BODY_CHARS = 2000;\n\n/** Free-text bio on a public profile. */\nexport const PROFILE_MAX_BIO_CHARS = 280;\n\n// ─── Engagement ─────────────────────────────────────────────────────────────\n\n/** Window during which an author can edit their own post / comment, in ms. */\nexport const EDIT_GRACE_WINDOW_MS = 5 * 60 * 1000;\n\n// ─── Groups ─────────────────────────────────────────────────────────────────\n\n/** Max members in a single user-created group chat. */\nexport const GROUP_MAX_MEMBERS = 256;\n\n/** Group name length. */\nexport const GROUP_NAME_MAX_CHARS = 60;\nexport const GROUP_NAME_MIN_CHARS = 2;\n\n// ─── Communities ───────────────────────────────────────────────────────────\n\n/** Community name length. Same range as a group, with room for a real\n * topic title. */\nexport const COMMUNITY_NAME_MAX_CHARS = 60;\nexport const COMMUNITY_NAME_MIN_CHARS = 2;\n\n/** Slug is auto-generated from name on create (lowercase, hyphenated)\n * but the user may also pick one explicitly on the create form. Match\n * Reddit's vibes: 3-21 chars, lower alphanumeric + underscore + hyphen. */\nexport const COMMUNITY_SLUG_MAX_CHARS = 21;\nexport const COMMUNITY_SLUG_MIN_CHARS = 3;\n/** Slug character class — kept in lockstep with the regex enforced by\n * the create-body Zod schema and the backend's slug normaliser. */\nexport const COMMUNITY_SLUG_PATTERN = /^[a-z0-9_-]+$/;\n\n/** Description shown on the community card + header. */\nexport const COMMUNITY_DESCRIPTION_MAX_CHARS = 500;\n\n/** Communities discover + members + posts page sizes. */\nexport const COMMUNITIES_PAGE_SIZE = 20;\nexport const COMMUNITY_MEMBERS_PAGE_SIZE = 50;\n\n// ─── Community v2 (taxonomy + reach + tags + verification + designation) ──\n\n/** Max tags a community can carry. Tags are picked from a curated\n * enum (`COMMUNITY_TAG_VALUES`), not free text — keeps the picker\n * + discovery filters meaningful. */\nexport const COMMUNITY_MAX_TAGS = 10;\n\n/** Hyperlocal discovery radius. Set generously because GPS accuracy\n * is noisy on phones — 5 km usually covers a viewer's neighborhood\n * plus a buffer of adjacent localities. Single source of truth so\n * backend filter + frontend copy agree. */\nexport const COMMUNITY_HYPERLOCAL_RADIUS_KM = 5;\n\n/** Custom (free-text) designation length bounds — used when the\n * owner / admin types a designation that isn't in the preset enum.\n * The preset path takes precedence; custom is the fallback. */\nexport const COMMUNITY_DESIGNATION_CUSTOM_MIN_CHARS = 2;\nexport const COMMUNITY_DESIGNATION_CUSTOM_MAX_CHARS = 30;\n/** Alphanumeric + space + ampersand — covers natural English labels\n * (\"Vice Chairman\", \"Press & Media\") without opening the door to\n * punctuation soup. */\nexport const COMMUNITY_DESIGNATION_CUSTOM_PATTERN = /^[A-Za-z0-9 &]+$/;\n\n// ─── Polls ─────────────────────────────────────────────────────────────────\n\n/** Poll question (the \"What's your favourite Diwali sweet?\" prompt).\n * Twitter caps at 280; we match for a snappy feed read. */\nexport const POLL_QUESTION_MAX_CHARS = 280;\nexport const POLL_QUESTION_MIN_CHARS = 1;\n\n/** Per-option label length. Long enough for a phrase, short enough that\n * options stack readably in a feed card on a phone. */\nexport const POLL_OPTION_MAX_CHARS = 80;\nexport const POLL_OPTION_MIN_CHARS = 1;\n\n/** A poll must offer at least two options (else it's not a choice) and\n * at most six (more than that fragments votes and tanks readability —\n * matches Twitter's 4 / WhatsApp's 12 / our pick is the middle). */\nexport const POLL_MIN_OPTIONS = 2;\nexport const POLL_MAX_OPTIONS = 6;\n\n/** Duration bounds. Polls MUST have an expiry — open-ended polls go\n * stale and clutter feeds (see PoLLs spec discussion). The floor stops\n * accidental \"1 second\" polls; the ceiling caps a single poll's\n * visibility window so authors think about timing. */\nexport const POLL_MIN_DURATION_MS = 5 * 60 * 1000; // 5 minutes\nexport const POLL_MAX_DURATION_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\n\n/** Composer presets (the radio chips in the duration picker). Custom\n * date entry covers everything in between. Server still validates the\n * resolved `closesAt` against the bounds above. */\nexport const POLL_DURATION_PRESETS_MS = {\n oneDay: 24 * 60 * 60 * 1000,\n threeDays: 3 * 24 * 60 * 60 * 1000,\n sevenDays: 7 * 24 * 60 * 60 * 1000,\n fourteenDays: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\n/** Feed page size for polls when fetched as their own list (rare —\n * polls usually surface via the unified feed). Keeps memory bounded. */\nexport const POLLS_PAGE_SIZE = 20;\n\n// ─── Crowdfunding ──────────────────────────────────────────────────────────\n\n/** Min goal in ₹. Filters spam while staying low enough for genuine\n * community-level requests (small medical bills, school fees, etc.). */\nexport const CROWDFUNDING_MIN_GOAL_INR = 500;\n\n/** Max goal in ₹. v1 ceiling — high enough for real medical/disaster\n * cases, low enough to discourage professional-fundraising adoption\n * before we have escrow infrastructure. */\nexport const CROWDFUNDING_MAX_GOAL_INR = 25_00_000;\n\n/** Minimum campaign duration in days. Below this and there's not enough\n * time for verification + visibility. */\nexport const CROWDFUNDING_MIN_DURATION_DAYS = 7;\n\n/** Max campaign duration in days. Industry norm — active campaigns feel\n * urgent; stagnant ones don't. Creator can always re-launch a follow-up. */\nexport const CROWDFUNDING_MAX_DURATION_DAYS = 60;\n\n/** Title + body limits. Title is the card headline; body is the\n * scrollable story below the goal block. */\nexport const CROWDFUNDING_TITLE_MAX_CHARS = 120;\nexport const CROWDFUNDING_TITLE_MIN_CHARS = 5;\nexport const CROWDFUNDING_DESCRIPTION_MAX_CHARS = 4000;\nexport const CROWDFUNDING_DESCRIPTION_MIN_CHARS = 50;\n\n/** Max story images (different from supporting docs). */\nexport const CROWDFUNDING_MAX_IMAGES = 5;\n\n/** Max supporting documents (medical invoice, school admission letter,\n * etc.). Kept off the wire; only the verifier and the creator see\n * these. */\nexport const CROWDFUNDING_MAX_SUPPORTING_DOCS = 5;\n\n/** Beneficiary fields. */\nexport const CROWDFUNDING_BENEFICIARY_NAME_MAX_CHARS = 100;\nexport const CROWDFUNDING_BENEFICIARY_RELATION_MAX_CHARS = 50;\n\n/** Rejection reason length (verifier-supplied). */\nexport const CROWDFUNDING_REJECTION_REASON_MIN_CHARS = 10;\nexport const CROWDFUNDING_REJECTION_REASON_MAX_CHARS = 500;\n\n/** Identity-tier thresholds keyed to Indian regulatory practice:\n * ≤ 25k → Basic (UDP step 9 verified identity only)\n * 25k–2L → Standard (+ PAN + bank-holder-name match)\n * 2L–10L → Enhanced (+ Aadhaar last-4 + category supporting docs)\n * > 10L → Maximum (+ video KYC or in-person verification by\n * district leader)\n * ₹25k = PAN-mandatory threshold for cash deposits.\n * ₹2L = \"substantial money\" line for verification scrutiny.\n * ₹10L = mandatory video/in-person KYC tier in Indian fintech. */\nexport const CROWDFUNDING_TIER_STANDARD_INR = 25_000;\nexport const CROWDFUNDING_TIER_ENHANCED_INR = 2_00_000;\nexport const CROWDFUNDING_TIER_MAXIMUM_INR = 10_00_000;\n\n/** Max single self-attested donation amount. Capped at the campaign\n * ceiling — a single donor can't claim more than the entire goal. */\nexport const CROWDFUNDING_MAX_DONATION_INR = CROWDFUNDING_MAX_GOAL_INR;\n\n/** Listing page size when crowdfunding is fetched as its own list. */\nexport const CROWDFUNDING_PAGE_SIZE = 20;\n\n// ─── Platform-fee model ──────────────────────────────────────────────\n//\n// Two settlement paths the creator picks on the composer's Pricing step:\n//\n// • UPFRONT — a flat, scope-tiered fee paid via Razorpay before the\n// campaign goes to leader review. The amount depends only on the\n// reach (local / district / state / national / global) because\n// higher-reach campaigns burn more verifier + moderation work.\n// This is the rupee number the user sees on the \"Pay now\" button.\n//\n// • DEFERRED — the platform deducts 5 % of the COLLECTED amount at\n// disbursement. No money changes hands at submit time; the creator\n// accepts an \"I promise to pay\" attestation on the UI. Whatever\n// donors actually send becomes the basis for the deduction.\n//\n// These constants are the SINGLE SOURCE OF TRUTH consumed by the\n// frontend composer UI, the backend payment dispatcher, and the\n// disbursement pipeline. Changing a fee tier or the deferred rate\n// requires exactly one edit here followed by `npm publish` of this\n// package.\n//\n// NOTE: The flat upfront figures are GST-inclusive (the user sees one\n// final rupee number on the button). Internal accounting splits out\n// the GST component for invoicing — but on the wire and in this math\n// the figure is the total.\n\nimport type { CrowdfundingScope } from './crowdfunding.js';\n\n/**\n * Flat upfront platform-fee tiers, in INR rupees. Mapped on the\n * `CrowdfundingScope` axis so the same lookup serves the composer's\n * Pricing step UI, the backend Razorpay dispatcher, and any future\n * surface that needs to surface \"what would this campaign cost\".\n *\n * The numbers reflect the relative verifier load each tier represents:\n * a global campaign reaches every viewer in every area and demands\n * far more moderation than a single locality.\n */\nexport const CROWDFUNDING_UPFRONT_FEE_INR_BY_SCOPE = {\n local: 500,\n district: 1_000,\n state: 2_000,\n national: 5_000,\n global: 10_000,\n} as const satisfies Record<CrowdfundingScope, number>;\n\n/**\n * Deferred-billing rate. Applied at disbursement time to the actual\n * `verifiedAmountInr` collected by the campaign. Lives next to the\n * upfront map so future readers see both paths in one place.\n */\nexport const CROWDFUNDING_DEFERRED_FEE_RATE = 0.05;\n\n/**\n * Look up the flat upfront fee for a given scope. Pure function over\n * the constant map — the indirection exists so the call-sites read as\n * \"look up the fee\", not \"index a map\" (and so we have one place to\n * add validation if the scope ever loses a tier).\n */\nexport function getCrowdfundingUpfrontFee(scope: CrowdfundingScope): number {\n return CROWDFUNDING_UPFRONT_FEE_INR_BY_SCOPE[scope];\n}\n\n/**\n * Authoritative deferred-billing deduction — the rupee figure the\n * disbursement pipeline subtracts from `collectedInr` before paying\n * the rest to the creator. Returns 0 for non-positive / non-finite\n * input so the call-site doesn't have to guard.\n */\nexport function computeCrowdfundingDeferredFee(collectedInr: number): number {\n const safe = Number.isFinite(collectedInr) && collectedInr > 0 ? collectedInr : 0;\n return Math.round(safe * CROWDFUNDING_DEFERRED_FEE_RATE);\n}\n\n/**\n * Display-only \"what would this campaign owe if it hits the full\n * target\" estimate, surfaced on the Pricing step's Pay-later card so\n * the creator sees a concrete rupee preview before ticking the\n * promise. Same math as the disbursement deduction but parameterised\n * by the GOAL (an upper bound) instead of the realised collection.\n */\nexport function getCrowdfundingDeferredEstimate(goalInr: number): number {\n return computeCrowdfundingDeferredFee(goalInr);\n}\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tunable constants shared across the community feature.\n *\n * Live here (not inline in feature code) so backend and every frontend\n * agree byte-for-byte on the same limits, paginations, and timeouts.\n * Bump versions of this package when these change.\n *\n * @module community-schema/constants\n */\n\n// ─── Pagination ─────────────────────────────────────────────────────────────\n\n/** Feed list default page size. */\nexport const FEED_PAGE_SIZE = 20;\n\n/** People list default page size. */\nexport const PEOPLE_PAGE_SIZE = 30;\n\n/** Comments per page on a single post. */\nexport const COMMENTS_PAGE_SIZE = 20;\n\n/** Replies per top-level comment loaded with the first comments page. */\nexport const REPLIES_PRELOAD_COUNT = 3;\n\n// ─── Post media limits ─────────────────────────────────────────────────────\n\n/** Max images per post. */\nexport const POST_MAX_IMAGES = 10;\n\n/** Max videos per post. */\nexport const POST_MAX_VIDEOS = 5;\n\n/** Max duration of a single video in seconds (10 min). */\nexport const POST_MAX_VIDEO_SECONDS = 10 * 60;\n\n/** Per-image hard cap (15 MB). The file service compresses to fit. */\nexport const POST_MAX_IMAGE_BYTES = 15 * 1024 * 1024;\n\n/** Per-video hard cap (200 MB). */\nexport const POST_MAX_VIDEO_BYTES = 200 * 1024 * 1024;\n\n// ─── Text limits ────────────────────────────────────────────────────────────\n\n/** Post body character cap. Long enough for long-form, short enough to\n * keep feed rendering snappy. */\nexport const POST_MAX_BODY_CHARS = 5000;\n\n/** Comment + reply body character cap. */\nexport const COMMENT_MAX_BODY_CHARS = 2000;\n\n/** Free-text bio on a public profile. */\nexport const PROFILE_MAX_BIO_CHARS = 280;\n\n// ─── Engagement ─────────────────────────────────────────────────────────────\n\n/** Window during which an author can edit their own post / comment, in ms. */\nexport const EDIT_GRACE_WINDOW_MS = 5 * 60 * 1000;\n\n// ─── Groups ─────────────────────────────────────────────────────────────────\n\n/** Max members in a single user-created group chat. */\nexport const GROUP_MAX_MEMBERS = 256;\n\n/** Group name length. */\nexport const GROUP_NAME_MAX_CHARS = 60;\nexport const GROUP_NAME_MIN_CHARS = 2;\n\n// ─── Communities ───────────────────────────────────────────────────────────\n\n/** Community name length. Same range as a group, with room for a real\n * topic title. */\nexport const COMMUNITY_NAME_MAX_CHARS = 60;\nexport const COMMUNITY_NAME_MIN_CHARS = 2;\n\n/** Slug is auto-generated from name on create (lowercase, hyphenated)\n * but the user may also pick one explicitly on the create form. Match\n * Reddit's vibes: 3-21 chars, lower alphanumeric + underscore + hyphen. */\nexport const COMMUNITY_SLUG_MAX_CHARS = 21;\nexport const COMMUNITY_SLUG_MIN_CHARS = 3;\n/** Slug character class — kept in lockstep with the regex enforced by\n * the create-body Zod schema and the backend's slug normaliser. */\nexport const COMMUNITY_SLUG_PATTERN = /^[a-z0-9_-]+$/;\n\n/** Description shown on the community card + header. */\nexport const COMMUNITY_DESCRIPTION_MAX_CHARS = 500;\n\n/** Communities discover + members + posts page sizes. */\nexport const COMMUNITIES_PAGE_SIZE = 20;\nexport const COMMUNITY_MEMBERS_PAGE_SIZE = 50;\n\n// ─── Community v2 (taxonomy + reach + tags + verification + designation) ──\n\n/** Max tags a community can carry. Tags are picked from a curated\n * enum (`COMMUNITY_TAG_VALUES`), not free text — keeps the picker\n * + discovery filters meaningful. */\nexport const COMMUNITY_MAX_TAGS = 10;\n\n/** Hyperlocal discovery radius. Set generously because GPS accuracy\n * is noisy on phones — 5 km usually covers a viewer's neighborhood\n * plus a buffer of adjacent localities. Single source of truth so\n * backend filter + frontend copy agree. */\nexport const COMMUNITY_HYPERLOCAL_RADIUS_KM = 5;\n\n/** Custom (free-text) designation length bounds — used when the\n * owner / admin types a designation that isn't in the preset enum.\n * The preset path takes precedence; custom is the fallback. */\nexport const COMMUNITY_DESIGNATION_CUSTOM_MIN_CHARS = 2;\nexport const COMMUNITY_DESIGNATION_CUSTOM_MAX_CHARS = 30;\n/** Alphanumeric + space + ampersand — covers natural English labels\n * (\"Vice Chairman\", \"Press & Media\") without opening the door to\n * punctuation soup. */\nexport const COMMUNITY_DESIGNATION_CUSTOM_PATTERN = /^[A-Za-z0-9 &]+$/;\n\n// ─── Polls ─────────────────────────────────────────────────────────────────\n\n/** Poll question (the \"What's your favourite Diwali sweet?\" prompt).\n * Twitter caps at 280; we match for a snappy feed read. */\nexport const POLL_QUESTION_MAX_CHARS = 280;\nexport const POLL_QUESTION_MIN_CHARS = 1;\n\n/** Per-option label length. Long enough for a phrase, short enough that\n * options stack readably in a feed card on a phone. */\nexport const POLL_OPTION_MAX_CHARS = 80;\nexport const POLL_OPTION_MIN_CHARS = 1;\n\n/** A poll must offer at least two options (else it's not a choice) and\n * at most six (more than that fragments votes and tanks readability —\n * matches Twitter's 4 / WhatsApp's 12 / our pick is the middle). */\nexport const POLL_MIN_OPTIONS = 2;\nexport const POLL_MAX_OPTIONS = 6;\n\n/** Duration bounds. Polls MUST have an expiry — open-ended polls go\n * stale and clutter feeds (see PoLLs spec discussion). The floor stops\n * accidental \"1 second\" polls; the ceiling caps a single poll's\n * visibility window so authors think about timing. */\nexport const POLL_MIN_DURATION_MS = 5 * 60 * 1000; // 5 minutes\nexport const POLL_MAX_DURATION_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\n\n/** Composer presets (the radio chips in the duration picker). Custom\n * date entry covers everything in between. Server still validates the\n * resolved `closesAt` against the bounds above. */\nexport const POLL_DURATION_PRESETS_MS = {\n oneDay: 24 * 60 * 60 * 1000,\n threeDays: 3 * 24 * 60 * 60 * 1000,\n sevenDays: 7 * 24 * 60 * 60 * 1000,\n fourteenDays: 14 * 24 * 60 * 60 * 1000,\n} as const;\n\n/** Feed page size for polls when fetched as their own list (rare —\n * polls usually surface via the unified feed). Keeps memory bounded. */\nexport const POLLS_PAGE_SIZE = 20;\n\n// ─── Crowdfunding ──────────────────────────────────────────────────────────\n\n/** Min goal in ₹. Filters spam while staying low enough for genuine\n * community-level requests (small medical bills, school fees, etc.). */\nexport const CROWDFUNDING_MIN_GOAL_INR = 500;\n\n/** Max goal in ₹. v1 ceiling — high enough for real medical/disaster\n * cases, low enough to discourage professional-fundraising adoption\n * before we have escrow infrastructure. */\nexport const CROWDFUNDING_MAX_GOAL_INR = 25_00_000;\n\n/** Minimum campaign duration in days. Below this and there's not enough\n * time for verification + visibility. */\nexport const CROWDFUNDING_MIN_DURATION_DAYS = 7;\n\n/** Max campaign duration in days. Industry norm — active campaigns feel\n * urgent; stagnant ones don't. Creator can always re-launch a follow-up. */\nexport const CROWDFUNDING_MAX_DURATION_DAYS = 60;\n\n/** Title + body limits. Title is the card headline; body is the\n * scrollable story below the goal block. */\nexport const CROWDFUNDING_TITLE_MAX_CHARS = 120;\nexport const CROWDFUNDING_TITLE_MIN_CHARS = 5;\nexport const CROWDFUNDING_DESCRIPTION_MAX_CHARS = 4000;\nexport const CROWDFUNDING_DESCRIPTION_MIN_CHARS = 50;\n\n/** Max story images (different from supporting docs). */\nexport const CROWDFUNDING_MAX_IMAGES = 5;\n\n/** Max supporting documents (medical invoice, school admission letter,\n * etc.). Kept off the wire; only the verifier and the creator see\n * these. */\nexport const CROWDFUNDING_MAX_SUPPORTING_DOCS = 5;\n\n/** Max proof documents the v0.33+ composer accepts. Typed + described\n * per-document; the verifier reviews each one against the campaign's\n * category-specific required-doc matrix. Set higher than\n * `MAX_SUPPORTING_DOCS` because the typed flow expects multiple\n * per-category (e.g. medical: hospital bill + diagnosis + doctor\n * letter + insurance denial). */\nexport const CROWDFUNDING_MAX_PROOF_DOCS = 10;\n/** Minimum proof documents required at submit time. Hard floor; the\n * per-category required-type matrix is enforced separately. */\nexport const CROWDFUNDING_MIN_PROOF_DOCS = 1;\n/** Min / max character length of the per-doc free-text description\n * the creator writes alongside each proof upload. */\nexport const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MIN_CHARS = 3;\nexport const CROWDFUNDING_PROOF_DOC_DESCRIPTION_MAX_CHARS = 200;\n\n/** Current Terms & Conditions version. Bump when material clauses\n * change (fee structure, dispute resolution, KYC obligations); the\n * submit-for-review handler accepts only campaigns whose\n * `acceptedTermsVersion` matches THIS string. The composer's T&C\n * step renders the full body keyed by this version. */\nexport const CROWDFUNDING_TERMS_VERSION = 'v1.0';\n\n/** Days the creator has from approval to complete Razorpay Linked\n * Account KYC. After this window a scheduled job auto-reverts the\n * campaign to `rejected` with a \"bank link deadline missed\" reason. */\nexport const CROWDFUNDING_BANK_LINK_DEADLINE_DAYS = 30;\n\n/** Beneficiary fields. */\nexport const CROWDFUNDING_BENEFICIARY_NAME_MAX_CHARS = 100;\nexport const CROWDFUNDING_BENEFICIARY_RELATION_MAX_CHARS = 50;\n\n/** Rejection reason length (verifier-supplied). */\nexport const CROWDFUNDING_REJECTION_REASON_MIN_CHARS = 10;\nexport const CROWDFUNDING_REJECTION_REASON_MAX_CHARS = 500;\n\n/** Identity-tier thresholds keyed to Indian regulatory practice:\n * ≤ 25k → Basic (UDP step 9 verified identity only)\n * 25k–2L → Standard (+ PAN + bank-holder-name match)\n * 2L–10L → Enhanced (+ Aadhaar last-4 + category supporting docs)\n * > 10L → Maximum (+ video KYC or in-person verification by\n * district leader)\n * ₹25k = PAN-mandatory threshold for cash deposits.\n * ₹2L = \"substantial money\" line for verification scrutiny.\n * ₹10L = mandatory video/in-person KYC tier in Indian fintech. */\nexport const CROWDFUNDING_TIER_STANDARD_INR = 25_000;\nexport const CROWDFUNDING_TIER_ENHANCED_INR = 2_00_000;\nexport const CROWDFUNDING_TIER_MAXIMUM_INR = 10_00_000;\n\n/** Max single self-attested donation amount. Capped at the campaign\n * ceiling — a single donor can't claim more than the entire goal. */\nexport const CROWDFUNDING_MAX_DONATION_INR = CROWDFUNDING_MAX_GOAL_INR;\n\n/** Listing page size when crowdfunding is fetched as its own list. */\nexport const CROWDFUNDING_PAGE_SIZE = 20;\n\n// ─── Platform-fee model ──────────────────────────────────────────────\n//\n// Two settlement paths the creator picks on the composer's Pricing step:\n//\n// • UPFRONT — a flat, scope-tiered fee paid via Razorpay before the\n// campaign goes to leader review. The amount depends only on the\n// reach (local / district / state / national / global) because\n// higher-reach campaigns burn more verifier + moderation work.\n// This is the rupee number the user sees on the \"Pay now\" button.\n//\n// • DEFERRED — the platform deducts 5 % of the COLLECTED amount at\n// disbursement. No money changes hands at submit time; the creator\n// accepts an \"I promise to pay\" attestation on the UI. Whatever\n// donors actually send becomes the basis for the deduction.\n//\n// These constants are the SINGLE SOURCE OF TRUTH consumed by the\n// frontend composer UI, the backend payment dispatcher, and the\n// disbursement pipeline. Changing a fee tier or the deferred rate\n// requires exactly one edit here followed by `npm publish` of this\n// package.\n//\n// NOTE: The flat upfront figures are GST-inclusive (the user sees one\n// final rupee number on the button). Internal accounting splits out\n// the GST component for invoicing — but on the wire and in this math\n// the figure is the total.\n\nimport type { CrowdfundingScope } from './crowdfunding.js';\n\n/**\n * Flat upfront platform-fee tiers, in INR rupees. Mapped on the\n * `CrowdfundingScope` axis so the same lookup serves the composer's\n * Pricing step UI, the backend Razorpay dispatcher, and any future\n * surface that needs to surface \"what would this campaign cost\".\n *\n * The numbers reflect the relative verifier load each tier represents:\n * a global campaign reaches every viewer in every area and demands\n * far more moderation than a single locality.\n */\nexport const CROWDFUNDING_UPFRONT_FEE_INR_BY_SCOPE = {\n local: 500,\n district: 1_000,\n state: 2_000,\n national: 5_000,\n global: 10_000,\n} as const satisfies Record<CrowdfundingScope, number>;\n\n/**\n * Deferred-billing rate. Applied at disbursement time to the actual\n * `verifiedAmountInr` collected by the campaign. Lives next to the\n * upfront map so future readers see both paths in one place.\n */\nexport const CROWDFUNDING_DEFERRED_FEE_RATE = 0.05;\n\n/**\n * Look up the flat upfront fee for a given scope. Pure function over\n * the constant map — the indirection exists so the call-sites read as\n * \"look up the fee\", not \"index a map\" (and so we have one place to\n * add validation if the scope ever loses a tier).\n */\nexport function getCrowdfundingUpfrontFee(scope: CrowdfundingScope): number {\n return CROWDFUNDING_UPFRONT_FEE_INR_BY_SCOPE[scope];\n}\n\n/**\n * Authoritative deferred-billing deduction — the rupee figure the\n * disbursement pipeline subtracts from `collectedInr` before paying\n * the rest to the creator. Returns 0 for non-positive / non-finite\n * input so the call-site doesn't have to guard.\n */\nexport function computeCrowdfundingDeferredFee(collectedInr: number): number {\n const safe = Number.isFinite(collectedInr) && collectedInr > 0 ? collectedInr : 0;\n return Math.round(safe * CROWDFUNDING_DEFERRED_FEE_RATE);\n}\n\n/**\n * Display-only \"what would this campaign owe if it hits the full\n * target\" estimate, surfaced on the Pricing step's Pay-later card so\n * the creator sees a concrete rupee preview before ticking the\n * promise. Same math as the disbursement deduction but parameterised\n * by the GOAL (an upper bound) instead of the realised collection.\n */\nexport function getCrowdfundingDeferredEstimate(goalInr: number): number {\n return computeCrowdfundingDeferredFee(goalInr);\n}\n"]}
@@ -100,21 +100,101 @@ export declare const crowdfundingScopeSchema: z.ZodEnum<{
100
100
  }>;
101
101
  export type CrowdfundingScope = z.infer<typeof crowdfundingScopeSchema>;
102
102
  /**
103
- * Lifecycle state. `submitted` is the verifier's queue; `active` is
104
- * publishable in the feed; the three `closed_*` are terminal end-states
105
- * with different reasons.
103
+ * Lifecycle state.
104
+ *
105
+ * draft creator is filling the composer
106
+ * submitted creator has accepted T&C and submitted; sits in
107
+ * the area-leader verifier queue
108
+ * awaiting_bank_link area leader has approved; creator must complete
109
+ * Razorpay Linked Account KYC before the campaign
110
+ * goes live. Inserted between `submitted` and
111
+ * `active` so the post-approval payment-setup gate
112
+ * is a first-class state, not a flag-on-active. A
113
+ * `bankLinkDeadlineAt` countdown auto-reverts the
114
+ * campaign to `rejected` if KYC isn't completed
115
+ * in time.
116
+ * rejected area leader rejected, OR bank-link deadline
117
+ * passed, OR Razorpay KYC failed permanently.
118
+ * Creator can edit + resubmit.
119
+ * active publishable in the feed; donations open
120
+ * closed_* terminal end-states with different reasons
106
121
  */
107
- export declare const CROWDFUNDING_STATUS_VALUES: readonly ["draft", "submitted", "rejected", "active", "closed_success", "closed_timeout", "closed_by_creator"];
122
+ export declare const CROWDFUNDING_STATUS_VALUES: readonly ["draft", "submitted", "awaiting_bank_link", "rejected", "active", "closed_success", "closed_timeout", "closed_by_creator"];
108
123
  export declare const crowdfundingStatusSchema: z.ZodEnum<{
109
124
  active: "active";
110
125
  draft: "draft";
111
126
  submitted: "submitted";
127
+ awaiting_bank_link: "awaiting_bank_link";
112
128
  rejected: "rejected";
113
129
  closed_success: "closed_success";
114
130
  closed_timeout: "closed_timeout";
115
131
  closed_by_creator: "closed_by_creator";
116
132
  }>;
117
133
  export type CrowdfundingStatus = z.infer<typeof crowdfundingStatusSchema>;
134
+ /**
135
+ * Proof document types — drives the doc-picker UI in the composer's
136
+ * Proof Documents step (added in v0.33) AND the verifier's per-category
137
+ * expected-doc checklist. The composer narrows the picker by category;
138
+ * the verifier sees the full list with the user-supplied type label so
139
+ * they can match the doc to the cause narrative.
140
+ *
141
+ * Per-category required-minimum mapping lives in the composer (frontend)
142
+ * and is enforced at submit by the backend. The set here is the union of
143
+ * what the renderer can offer across categories; some types (e.g.
144
+ * 12a_certificate) are only useful when audience === organization, and
145
+ * the renderer hides them otherwise.
146
+ */
147
+ export declare const CROWDFUNDING_PROOF_DOC_TYPE_VALUES: readonly ["hospital_bill", "diagnosis_report", "doctor_letter", "prescription", "insurance_denial", "admission_letter", "fee_schedule", "scholarship_letter", "supporters_signed_letter", "project_proposal", "beneficiaries_list", "relief_org_letter", "affected_area_photos", "government_notification", "org_registration_certificate", "certificate_12a", "certificate_80g", "certificate_fcra", "identity_proof", "address_proof", "photo", "video", "other"];
148
+ export declare const crowdfundingProofDocTypeSchema: z.ZodEnum<{
149
+ other: "other";
150
+ hospital_bill: "hospital_bill";
151
+ diagnosis_report: "diagnosis_report";
152
+ doctor_letter: "doctor_letter";
153
+ prescription: "prescription";
154
+ insurance_denial: "insurance_denial";
155
+ admission_letter: "admission_letter";
156
+ fee_schedule: "fee_schedule";
157
+ scholarship_letter: "scholarship_letter";
158
+ supporters_signed_letter: "supporters_signed_letter";
159
+ project_proposal: "project_proposal";
160
+ beneficiaries_list: "beneficiaries_list";
161
+ relief_org_letter: "relief_org_letter";
162
+ affected_area_photos: "affected_area_photos";
163
+ government_notification: "government_notification";
164
+ org_registration_certificate: "org_registration_certificate";
165
+ certificate_12a: "certificate_12a";
166
+ certificate_80g: "certificate_80g";
167
+ certificate_fcra: "certificate_fcra";
168
+ identity_proof: "identity_proof";
169
+ address_proof: "address_proof";
170
+ photo: "photo";
171
+ video: "video";
172
+ }>;
173
+ export type CrowdfundingProofDocType = z.infer<typeof crowdfundingProofDocTypeSchema>;
174
+ /**
175
+ * Razorpay Linked Account onboarding state, mirrored onto the campaign.
176
+ *
177
+ * not_started - default; creator hasn't started bank-linking yet
178
+ * created - linked account created via Razorpay API; KYC URL
179
+ * has been issued to the creator
180
+ * under_review - creator has submitted KYC; Razorpay is reviewing
181
+ * (typically 1-3 business days)
182
+ * activated - KYC approved; campaign moves to `active`
183
+ * rejected - KYC rejected; creator must update documents and
184
+ * retry
185
+ * suspended - account was activated but later suspended (fraud,
186
+ * ToS violation, etc.); campaign halted pending review
187
+ */
188
+ export declare const CROWDFUNDING_RAZORPAY_ACCOUNT_STATUS_VALUES: readonly ["not_started", "created", "under_review", "activated", "rejected", "suspended"];
189
+ export declare const crowdfundingRazorpayAccountStatusSchema: z.ZodEnum<{
190
+ rejected: "rejected";
191
+ not_started: "not_started";
192
+ created: "created";
193
+ under_review: "under_review";
194
+ activated: "activated";
195
+ suspended: "suspended";
196
+ }>;
197
+ export type CrowdfundingRazorpayAccountStatus = z.infer<typeof crowdfundingRazorpayAccountStatusSchema>;
118
198
  /**
119
199
  * Per-donation verification state. `pending` = attested but no
120
200
  * receipt. `verified` = receipt uploaded (creator confirmation
@@ -200,15 +280,84 @@ export type CrowdfundingVerification = z.infer<typeof crowdfundingVerificationSc
200
280
  * dialog. The full account number, IFSC, PAN, Aadhaar, supporting
201
281
  * docs etc. are kept server-side; only what's needed for the donor
202
282
  * to send money + recognise the recipient is exposed.
283
+ *
284
+ * In v0.33 the platform shifted from "direct UPI to creator" to
285
+ * "Razorpay Linked Account split-payment", so every field on this
286
+ * shape is now OPTIONAL — a Linked-Account campaign carries an
287
+ * activated `razorpayLinkedAccountId` (on the campaign root) and
288
+ * surfaces a Razorpay-hosted checkout, not a UPI QR. Legacy campaigns
289
+ * created before v0.33 still carry these fields; the donor card
290
+ * renders the QR + bank info when present, the Razorpay flow when not.
203
291
  */
204
292
  export declare const crowdfundingPaymentSchema: z.ZodObject<{
205
- upiQrUrl: z.ZodString;
293
+ upiQrUrl: z.ZodOptional<z.ZodString>;
206
294
  upiId: z.ZodOptional<z.ZodString>;
207
- bankAccountLast4: z.ZodString;
208
- bankAccountHolderName: z.ZodString;
295
+ bankAccountLast4: z.ZodOptional<z.ZodString>;
296
+ bankAccountHolderName: z.ZodOptional<z.ZodString>;
209
297
  bankName: z.ZodOptional<z.ZodString>;
210
298
  }, z.core.$strip>;
211
299
  export type CrowdfundingPayment = z.infer<typeof crowdfundingPaymentSchema>;
300
+ /**
301
+ * A single proof document attached by the creator. Multiple instances
302
+ * carried in `proofDocuments` on the campaign; each one has its own
303
+ * type label + free-text description so the verifier sees "Hospital
304
+ * bill: AIIMS Delhi, June 2026 — ₹1.2L" not just "doc-1.pdf".
305
+ */
306
+ export declare const crowdfundingProofDocumentWireSchema: z.ZodObject<{
307
+ url: z.ZodString;
308
+ type: z.ZodEnum<{
309
+ other: "other";
310
+ hospital_bill: "hospital_bill";
311
+ diagnosis_report: "diagnosis_report";
312
+ doctor_letter: "doctor_letter";
313
+ prescription: "prescription";
314
+ insurance_denial: "insurance_denial";
315
+ admission_letter: "admission_letter";
316
+ fee_schedule: "fee_schedule";
317
+ scholarship_letter: "scholarship_letter";
318
+ supporters_signed_letter: "supporters_signed_letter";
319
+ project_proposal: "project_proposal";
320
+ beneficiaries_list: "beneficiaries_list";
321
+ relief_org_letter: "relief_org_letter";
322
+ affected_area_photos: "affected_area_photos";
323
+ government_notification: "government_notification";
324
+ org_registration_certificate: "org_registration_certificate";
325
+ certificate_12a: "certificate_12a";
326
+ certificate_80g: "certificate_80g";
327
+ certificate_fcra: "certificate_fcra";
328
+ identity_proof: "identity_proof";
329
+ address_proof: "address_proof";
330
+ photo: "photo";
331
+ video: "video";
332
+ }>;
333
+ description: z.ZodString;
334
+ uploadedAt: z.ZodString;
335
+ }, z.core.$strip>;
336
+ export type CrowdfundingProofDocumentWire = z.infer<typeof crowdfundingProofDocumentWireSchema>;
337
+ /**
338
+ * Razorpay Linked Account surface mirrored onto the campaign. Set by
339
+ * the post-approval bank-linking flow; absent while the campaign is in
340
+ * `draft` / `submitted` / `rejected`.
341
+ *
342
+ * Only the STATUS metadata surfaces on the wire — the linked-account
343
+ * id itself stays server-side (used to route disbursements via
344
+ * Razorpay Route, never needed by clients).
345
+ */
346
+ export declare const crowdfundingRazorpayAccountWireSchema: z.ZodObject<{
347
+ status: z.ZodEnum<{
348
+ rejected: "rejected";
349
+ not_started: "not_started";
350
+ created: "created";
351
+ under_review: "under_review";
352
+ activated: "activated";
353
+ suspended: "suspended";
354
+ }>;
355
+ activatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
356
+ rejectionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
357
+ onboardingUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
358
+ deadlineAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
359
+ }, z.core.$strip>;
360
+ export type CrowdfundingRazorpayAccountWire = z.infer<typeof crowdfundingRazorpayAccountWireSchema>;
212
361
  /**
213
362
  * The card-renderable wire shape. Mirrors the engagement + author +
214
363
  * area-lineage shape of other feed kinds so the existing
@@ -326,22 +475,69 @@ export declare const crowdfundingFeedItemSchema: z.ZodObject<{
326
475
  rejectionReason: z.ZodOptional<z.ZodString>;
327
476
  }, z.core.$strip>;
328
477
  payment: z.ZodObject<{
329
- upiQrUrl: z.ZodString;
478
+ upiQrUrl: z.ZodOptional<z.ZodString>;
330
479
  upiId: z.ZodOptional<z.ZodString>;
331
- bankAccountLast4: z.ZodString;
332
- bankAccountHolderName: z.ZodString;
480
+ bankAccountLast4: z.ZodOptional<z.ZodString>;
481
+ bankAccountHolderName: z.ZodOptional<z.ZodString>;
333
482
  bankName: z.ZodOptional<z.ZodString>;
334
483
  }, z.core.$strip>;
484
+ razorpayAccount: z.ZodOptional<z.ZodObject<{
485
+ status: z.ZodEnum<{
486
+ rejected: "rejected";
487
+ not_started: "not_started";
488
+ created: "created";
489
+ under_review: "under_review";
490
+ activated: "activated";
491
+ suspended: "suspended";
492
+ }>;
493
+ activatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
494
+ rejectionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
495
+ onboardingUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
496
+ deadlineAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
497
+ }, z.core.$strip>>;
498
+ proofDocuments: z.ZodOptional<z.ZodArray<z.ZodObject<{
499
+ url: z.ZodString;
500
+ type: z.ZodEnum<{
501
+ other: "other";
502
+ hospital_bill: "hospital_bill";
503
+ diagnosis_report: "diagnosis_report";
504
+ doctor_letter: "doctor_letter";
505
+ prescription: "prescription";
506
+ insurance_denial: "insurance_denial";
507
+ admission_letter: "admission_letter";
508
+ fee_schedule: "fee_schedule";
509
+ scholarship_letter: "scholarship_letter";
510
+ supporters_signed_letter: "supporters_signed_letter";
511
+ project_proposal: "project_proposal";
512
+ beneficiaries_list: "beneficiaries_list";
513
+ relief_org_letter: "relief_org_letter";
514
+ affected_area_photos: "affected_area_photos";
515
+ government_notification: "government_notification";
516
+ org_registration_certificate: "org_registration_certificate";
517
+ certificate_12a: "certificate_12a";
518
+ certificate_80g: "certificate_80g";
519
+ certificate_fcra: "certificate_fcra";
520
+ identity_proof: "identity_proof";
521
+ address_proof: "address_proof";
522
+ photo: "photo";
523
+ video: "video";
524
+ }>;
525
+ description: z.ZodString;
526
+ uploadedAt: z.ZodString;
527
+ }, z.core.$strip>>>;
335
528
  status: z.ZodEnum<{
336
529
  active: "active";
337
530
  draft: "draft";
338
531
  submitted: "submitted";
532
+ awaiting_bank_link: "awaiting_bank_link";
339
533
  rejected: "rejected";
340
534
  closed_success: "closed_success";
341
535
  closed_timeout: "closed_timeout";
342
536
  closed_by_creator: "closed_by_creator";
343
537
  }>;
344
538
  closedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
539
+ termsAcceptedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
540
+ termsVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
345
541
  feeBillingMode: z.ZodOptional<z.ZodEnum<{
346
542
  upfront: "upfront";
347
543
  deferred: "deferred";
@@ -495,22 +691,69 @@ export declare const communityCrowdfundingWireSchema: z.ZodObject<{
495
691
  rejectionReason: z.ZodOptional<z.ZodString>;
496
692
  }, z.core.$strip>;
497
693
  payment: z.ZodObject<{
498
- upiQrUrl: z.ZodString;
694
+ upiQrUrl: z.ZodOptional<z.ZodString>;
499
695
  upiId: z.ZodOptional<z.ZodString>;
500
- bankAccountLast4: z.ZodString;
501
- bankAccountHolderName: z.ZodString;
696
+ bankAccountLast4: z.ZodOptional<z.ZodString>;
697
+ bankAccountHolderName: z.ZodOptional<z.ZodString>;
502
698
  bankName: z.ZodOptional<z.ZodString>;
503
699
  }, z.core.$strip>;
700
+ razorpayAccount: z.ZodOptional<z.ZodObject<{
701
+ status: z.ZodEnum<{
702
+ rejected: "rejected";
703
+ not_started: "not_started";
704
+ created: "created";
705
+ under_review: "under_review";
706
+ activated: "activated";
707
+ suspended: "suspended";
708
+ }>;
709
+ activatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
710
+ rejectionReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
711
+ onboardingUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
712
+ deadlineAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
713
+ }, z.core.$strip>>;
714
+ proofDocuments: z.ZodOptional<z.ZodArray<z.ZodObject<{
715
+ url: z.ZodString;
716
+ type: z.ZodEnum<{
717
+ other: "other";
718
+ hospital_bill: "hospital_bill";
719
+ diagnosis_report: "diagnosis_report";
720
+ doctor_letter: "doctor_letter";
721
+ prescription: "prescription";
722
+ insurance_denial: "insurance_denial";
723
+ admission_letter: "admission_letter";
724
+ fee_schedule: "fee_schedule";
725
+ scholarship_letter: "scholarship_letter";
726
+ supporters_signed_letter: "supporters_signed_letter";
727
+ project_proposal: "project_proposal";
728
+ beneficiaries_list: "beneficiaries_list";
729
+ relief_org_letter: "relief_org_letter";
730
+ affected_area_photos: "affected_area_photos";
731
+ government_notification: "government_notification";
732
+ org_registration_certificate: "org_registration_certificate";
733
+ certificate_12a: "certificate_12a";
734
+ certificate_80g: "certificate_80g";
735
+ certificate_fcra: "certificate_fcra";
736
+ identity_proof: "identity_proof";
737
+ address_proof: "address_proof";
738
+ photo: "photo";
739
+ video: "video";
740
+ }>;
741
+ description: z.ZodString;
742
+ uploadedAt: z.ZodString;
743
+ }, z.core.$strip>>>;
504
744
  status: z.ZodEnum<{
505
745
  active: "active";
506
746
  draft: "draft";
507
747
  submitted: "submitted";
748
+ awaiting_bank_link: "awaiting_bank_link";
508
749
  rejected: "rejected";
509
750
  closed_success: "closed_success";
510
751
  closed_timeout: "closed_timeout";
511
752
  closed_by_creator: "closed_by_creator";
512
753
  }>;
513
754
  closedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
755
+ termsAcceptedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
756
+ termsVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
514
757
  feeBillingMode: z.ZodOptional<z.ZodEnum<{
515
758
  upfront: "upfront";
516
759
  deferred: "deferred";
@@ -636,15 +879,46 @@ export declare const createCrowdfundingBodySchema: z.ZodObject<{
636
879
  national: "national";
637
880
  global: "global";
638
881
  }>;
639
- upiQrUrl: z.ZodString;
882
+ upiQrUrl: z.ZodOptional<z.ZodString>;
640
883
  upiId: z.ZodOptional<z.ZodString>;
641
- bankAccountNumber: z.ZodString;
642
- bankAccountHolderName: z.ZodString;
643
- ifsc: z.ZodString;
884
+ bankAccountNumber: z.ZodOptional<z.ZodString>;
885
+ bankAccountHolderName: z.ZodOptional<z.ZodString>;
886
+ ifsc: z.ZodOptional<z.ZodString>;
644
887
  bankName: z.ZodOptional<z.ZodString>;
645
888
  pan: z.ZodOptional<z.ZodString>;
646
889
  aadhaarLast4: z.ZodOptional<z.ZodString>;
647
890
  supportingDocs: z.ZodOptional<z.ZodArray<z.ZodString>>;
891
+ proofDocuments: z.ZodOptional<z.ZodArray<z.ZodObject<{
892
+ url: z.ZodString;
893
+ type: z.ZodEnum<{
894
+ other: "other";
895
+ hospital_bill: "hospital_bill";
896
+ diagnosis_report: "diagnosis_report";
897
+ doctor_letter: "doctor_letter";
898
+ prescription: "prescription";
899
+ insurance_denial: "insurance_denial";
900
+ admission_letter: "admission_letter";
901
+ fee_schedule: "fee_schedule";
902
+ scholarship_letter: "scholarship_letter";
903
+ supporters_signed_letter: "supporters_signed_letter";
904
+ project_proposal: "project_proposal";
905
+ beneficiaries_list: "beneficiaries_list";
906
+ relief_org_letter: "relief_org_letter";
907
+ affected_area_photos: "affected_area_photos";
908
+ government_notification: "government_notification";
909
+ org_registration_certificate: "org_registration_certificate";
910
+ certificate_12a: "certificate_12a";
911
+ certificate_80g: "certificate_80g";
912
+ certificate_fcra: "certificate_fcra";
913
+ identity_proof: "identity_proof";
914
+ address_proof: "address_proof";
915
+ photo: "photo";
916
+ video: "video";
917
+ }>;
918
+ description: z.ZodString;
919
+ uploadedAt: z.ZodOptional<z.ZodString>;
920
+ }, z.core.$strip>>>;
921
+ termsVersion: z.ZodOptional<z.ZodString>;
648
922
  communityId: z.ZodOptional<z.ZodString>;
649
923
  feeBillingMode: z.ZodOptional<z.ZodEnum<{
650
924
  upfront: "upfront";
@@ -712,15 +986,46 @@ export declare const updateCrowdfundingBodySchema: z.ZodObject<{
712
986
  national: "national";
713
987
  global: "global";
714
988
  }>>;
715
- upiQrUrl: z.ZodOptional<z.ZodString>;
989
+ upiQrUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
716
990
  upiId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
717
- bankAccountNumber: z.ZodOptional<z.ZodString>;
718
- bankAccountHolderName: z.ZodOptional<z.ZodString>;
719
- ifsc: z.ZodOptional<z.ZodString>;
991
+ bankAccountNumber: z.ZodOptional<z.ZodOptional<z.ZodString>>;
992
+ bankAccountHolderName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
993
+ ifsc: z.ZodOptional<z.ZodOptional<z.ZodString>>;
720
994
  bankName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
721
995
  pan: z.ZodOptional<z.ZodOptional<z.ZodString>>;
722
996
  aadhaarLast4: z.ZodOptional<z.ZodOptional<z.ZodString>>;
723
997
  supportingDocs: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
998
+ proofDocuments: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
999
+ url: z.ZodString;
1000
+ type: z.ZodEnum<{
1001
+ other: "other";
1002
+ hospital_bill: "hospital_bill";
1003
+ diagnosis_report: "diagnosis_report";
1004
+ doctor_letter: "doctor_letter";
1005
+ prescription: "prescription";
1006
+ insurance_denial: "insurance_denial";
1007
+ admission_letter: "admission_letter";
1008
+ fee_schedule: "fee_schedule";
1009
+ scholarship_letter: "scholarship_letter";
1010
+ supporters_signed_letter: "supporters_signed_letter";
1011
+ project_proposal: "project_proposal";
1012
+ beneficiaries_list: "beneficiaries_list";
1013
+ relief_org_letter: "relief_org_letter";
1014
+ affected_area_photos: "affected_area_photos";
1015
+ government_notification: "government_notification";
1016
+ org_registration_certificate: "org_registration_certificate";
1017
+ certificate_12a: "certificate_12a";
1018
+ certificate_80g: "certificate_80g";
1019
+ certificate_fcra: "certificate_fcra";
1020
+ identity_proof: "identity_proof";
1021
+ address_proof: "address_proof";
1022
+ photo: "photo";
1023
+ video: "video";
1024
+ }>;
1025
+ description: z.ZodString;
1026
+ uploadedAt: z.ZodOptional<z.ZodString>;
1027
+ }, z.core.$strip>>>>;
1028
+ termsVersion: z.ZodOptional<z.ZodOptional<z.ZodString>>;
724
1029
  communityId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
725
1030
  feeBillingMode: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
726
1031
  upfront: "upfront";
@@ -1 +1 @@
1
- {"version":3,"file":"crowdfunding.d.ts","sourceRoot":"","sources":["../src/crowdfunding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crowdfunding.d.ts","sourceRoot":"","sources":["../src/crowdfunding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,2PAwB/B,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,oEAM/B,CAAC;AACX,eAAO,MAAM,0BAA0B;;;;;;EAAuC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,4DAM/B,CAAC;AACX,eAAO,MAAM,yBAAyB;;;;;;EAAuC,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;EAAuC,CAAC;AAC/E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,+DAM5B,CAAC;AACX,eAAO,MAAM,uBAAuB;;;;;;EAAoC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,sIAS7B,CAAC;AACX,eAAO,MAAM,wBAAwB;;;;;;;;;EAAqC,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kCAAkC,qcA8BrC,CAAC;AACX,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;EAA6C,CAAC;AACzF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2CAA2C,2FAO9C,CAAC;AACX,eAAO,MAAM,uCAAuC;;;;;;;EAEnD,CAAC;AACF,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CACrD,OAAO,uCAAuC,CAC/C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,8CAA+C,CAAC;AAC/F,eAAO,MAAM,+BAA+B;;;;EAA6C,CAAC;AAC1F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oCAAoC,kCAAmC,CAAC;AACrF,eAAO,MAAM,gCAAgC;;;EAA+C,CAAC;AAC7F,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sCAAsC,0CAA2C,CAAC;AAC/F,eAAO,MAAM,kCAAkC;;;;EAAiD,CAAC;AACjG,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAI9F;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;iBAczC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,yBAAyB;;;;;;iBAepC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa9C,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAEhG;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;iBAgBhD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAIpG;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuKrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA6B,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAIxF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;iBA0BzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAItF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4IvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AACnF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;iBAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;iBAMvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAIlF;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC;;;;iBAM/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG;;;;GAIG;AACH,eAAO,MAAM,mCAAmC;;iBAE9C,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAIhG,eAAO,MAAM,oCAAoC;;;;;;;;iBAI/C,CAAC;AACH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAElG;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC;;;;;;;;iBAIjD,CAAC;AACH,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC"}