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.
- package/dist/constants.d.ts +24 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +24 -0
- package/dist/constants.js.map +1 -1
- package/dist/crowdfunding.d.ts +326 -21
- package/dist/crowdfunding.d.ts.map +1 -1
- package/dist/crowdfunding.js +221 -20
- package/dist/crowdfunding.js.map +1 -1
- package/dist/feed.d.ts +104 -10
- package/dist/feed.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/notification.d.ts +37 -1
- package/dist/notification.d.ts.map +1 -1
- package/dist/notification.js +14 -0
- package/dist/notification.js.map +1 -1
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -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;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+EAA+E;AAE/E,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,8EAA8E;AAE9E,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,CAAC;AAE9C,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAErD,mCAAmC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,+EAA+E;AAE/E;kCACkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,yCAAyC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,+EAA+E;AAE/E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,+EAA+E;AAE/E,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,8EAA8E;AAE9E;mBACmB;AACnB,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;4EAE4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C;oEACoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAEtD,wDAAwD;AACxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,yDAAyD;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,6EAA6E;AAE7E;;sCAEsC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC;;;4CAG4C;AAC5C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;gEAEgE;AAChE,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AACzD;;wBAEwB;AACxB,MAAM,CAAC,MAAM,oCAAoC,GAAG,kBAAkB,CAAC;AAEvE,8EAA8E;AAE9E;4DAC4D;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;wDACwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;qEAEqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;uDAGuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAExE;;oDAEoD;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAC3B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAC;AAEX;yEACyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,8EAA8E;AAE9E;yEACyE;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;4CAE4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD;0CAC0C;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;6EAC6E;AAC7E,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAEjD;6CAC6C;AAC7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;aAEa;AACb,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAC3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,EAAE,CAAC;AAE9D,mDAAmD;AACnD,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC;AAC1D,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAE3D;;;;;;;;mEAQmE;AACnE,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,QAAQ,CAAC;AACvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAEvD;sEACsE;AACtE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AA8BzC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,MAAM;CACsC,CAAC;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,OAAO,qCAAqC,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,YAAoB;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,8BAA8B,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC","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"]}
|
package/dist/crowdfunding.d.ts
CHANGED
|
@@ -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.
|
|
104
|
-
*
|
|
105
|
-
*
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"crowdfunding.d.ts","sourceRoot":"","sources":["../src/crowdfunding.ts"],"names":[],"mappings":"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"}
|