@cliwant/mcp-sam-gov 0.3.0 → 1.0.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/LICENSE +21 -21
- package/README.ja.md +48 -16
- package/README.ko.md +48 -16
- package/README.md +226 -64
- package/dist/attachments.d.ts +63 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +576 -0
- package/dist/attachments.js.map +1 -0
- package/dist/bls.d.ts +267 -0
- package/dist/bls.d.ts.map +1 -0
- package/dist/bls.js +1549 -0
- package/dist/bls.js.map +1 -0
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +4 -0
- package/dist/cache.js.map +1 -1
- package/dist/census.d.ts +182 -0
- package/dist/census.d.ts.map +1 -0
- package/dist/census.js +576 -0
- package/dist/census.js.map +1 -0
- package/dist/ckan.d.ts +141 -0
- package/dist/ckan.d.ts.map +1 -0
- package/dist/ckan.js +393 -0
- package/dist/ckan.js.map +1 -0
- package/dist/clinicaltrials.d.ts +180 -0
- package/dist/clinicaltrials.d.ts.map +1 -0
- package/dist/clinicaltrials.js +730 -0
- package/dist/clinicaltrials.js.map +1 -0
- package/dist/cms.d.ts +140 -0
- package/dist/cms.d.ts.map +1 -0
- package/dist/cms.js +482 -0
- package/dist/cms.js.map +1 -0
- package/dist/coerce.d.ts +32 -0
- package/dist/coerce.d.ts.map +1 -0
- package/dist/coerce.js +50 -0
- package/dist/coerce.js.map +1 -0
- package/dist/datagov-catalog.d.ts +84 -0
- package/dist/datagov-catalog.d.ts.map +1 -0
- package/dist/datagov-catalog.js +233 -0
- package/dist/datagov-catalog.js.map +1 -0
- package/dist/datagov.d.ts +146 -0
- package/dist/datagov.d.ts.map +1 -0
- package/dist/datagov.js +689 -0
- package/dist/datagov.js.map +1 -0
- package/dist/datagovKey.d.ts +36 -0
- package/dist/datagovKey.d.ts.map +1 -0
- package/dist/datagovKey.js +60 -0
- package/dist/datagovKey.js.map +1 -0
- package/dist/datasource.d.ts +313 -0
- package/dist/datasource.d.ts.map +1 -0
- package/dist/datasource.js +551 -0
- package/dist/datasource.js.map +1 -0
- package/dist/disclosure.d.ts +55 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +57 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/ecfr.d.ts +4 -2
- package/dist/ecfr.d.ts.map +1 -1
- package/dist/ecfr.js +74 -1
- package/dist/ecfr.js.map +1 -1
- package/dist/echo.d.ts +143 -0
- package/dist/echo.d.ts.map +1 -0
- package/dist/echo.js +424 -0
- package/dist/echo.js.map +1 -0
- package/dist/edgar.d.ts +377 -0
- package/dist/edgar.d.ts.map +1 -0
- package/dist/edgar.js +2418 -0
- package/dist/edgar.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +69 -1
- package/dist/errors.js.map +1 -1
- package/dist/fac.d.ts +180 -0
- package/dist/fac.d.ts.map +1 -0
- package/dist/fac.js +416 -0
- package/dist/fac.js.map +1 -0
- package/dist/far.d.ts +170 -0
- package/dist/far.d.ts.map +1 -0
- package/dist/far.js +804 -0
- package/dist/far.js.map +1 -0
- package/dist/fdic.d.ts +599 -0
- package/dist/fdic.d.ts.map +1 -0
- package/dist/fdic.js +1624 -0
- package/dist/fdic.js.map +1 -0
- package/dist/federal-register.d.ts +139 -2
- package/dist/federal-register.d.ts.map +1 -1
- package/dist/federal-register.js +419 -3
- package/dist/federal-register.js.map +1 -1
- package/dist/fema.d.ts +181 -0
- package/dist/fema.d.ts.map +1 -0
- package/dist/fema.js +436 -0
- package/dist/fema.js.map +1 -0
- package/dist/fpds.d.ts +108 -0
- package/dist/fpds.d.ts.map +1 -0
- package/dist/fpds.js +519 -0
- package/dist/fpds.js.map +1 -0
- package/dist/gao.d.ts +64 -0
- package/dist/gao.d.ts.map +1 -0
- package/dist/gao.js +640 -0
- package/dist/gao.js.map +1 -0
- package/dist/govinfo.d.ts +111 -0
- package/dist/govinfo.d.ts.map +1 -0
- package/dist/govinfo.js +422 -0
- package/dist/govinfo.js.map +1 -0
- package/dist/grants.d.ts +27 -4
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +111 -6
- package/dist/grants.js.map +1 -1
- package/dist/gsa-csv.d.ts +249 -0
- package/dist/gsa-csv.d.ts.map +1 -0
- package/dist/gsa-csv.js +784 -0
- package/dist/gsa-csv.js.map +1 -0
- package/dist/integrity.d.ts +212 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +707 -0
- package/dist/integrity.js.map +1 -0
- package/dist/meta.d.ts +165 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +162 -0
- package/dist/meta.js.map +1 -0
- package/dist/nih.d.ts +117 -0
- package/dist/nih.d.ts.map +1 -0
- package/dist/nih.js +291 -0
- package/dist/nih.js.map +1 -0
- package/dist/nppes.d.ts +157 -0
- package/dist/nppes.d.ts.map +1 -0
- package/dist/nppes.js +648 -0
- package/dist/nppes.js.map +1 -0
- package/dist/nsf.d.ts +176 -0
- package/dist/nsf.d.ts.map +1 -0
- package/dist/nsf.js +554 -0
- package/dist/nsf.js.map +1 -0
- package/dist/nvd.d.ts +176 -0
- package/dist/nvd.d.ts.map +1 -0
- package/dist/nvd.js +912 -0
- package/dist/nvd.js.map +1 -0
- package/dist/ofac.d.ts +205 -0
- package/dist/ofac.d.ts.map +1 -0
- package/dist/ofac.js +919 -0
- package/dist/ofac.js.map +1 -0
- package/dist/pricing.d.ts +110 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +843 -0
- package/dist/pricing.js.map +1 -0
- package/dist/sam-gov/client.d.ts +60 -2
- package/dist/sam-gov/client.d.ts.map +1 -1
- package/dist/sam-gov/client.js +320 -54
- package/dist/sam-gov/client.js.map +1 -1
- package/dist/sam-gov/index.d.ts +1 -1
- package/dist/sam-gov/index.d.ts.map +1 -1
- package/dist/sam-gov/index.js +1 -1
- package/dist/sam-gov/index.js.map +1 -1
- package/dist/sam-gov/types.d.ts +24 -0
- package/dist/sam-gov/types.d.ts.map +1 -1
- package/dist/sba.d.ts +72 -0
- package/dist/sba.d.ts.map +1 -0
- package/dist/sba.js +281 -0
- package/dist/sba.js.map +1 -0
- package/dist/server.d.ts +14 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3889 -296
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +98 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +146 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/socrata.d.ts +157 -0
- package/dist/socrata.d.ts.map +1 -0
- package/dist/socrata.js +448 -0
- package/dist/socrata.js.map +1 -0
- package/dist/treasury.d.ts +143 -0
- package/dist/treasury.d.ts.map +1 -0
- package/dist/treasury.js +436 -0
- package/dist/treasury.js.map +1 -0
- package/dist/usaspending.d.ts +260 -65
- package/dist/usaspending.d.ts.map +1 -1
- package/dist/usaspending.js +1629 -201
- package/dist/usaspending.js.map +1 -1
- package/dist/usitc.d.ts +142 -0
- package/dist/usitc.d.ts.map +1 -0
- package/dist/usitc.js +339 -0
- package/dist/usitc.js.map +1 -0
- package/package.json +24 -2
- package/src/attachments.ts +652 -0
- package/src/bls.ts +1943 -0
- package/src/cache.ts +5 -0
- package/src/census.ts +735 -0
- package/src/ckan.ts +495 -0
- package/src/clinicaltrials.ts +923 -0
- package/src/cms.ts +634 -0
- package/src/coerce.ts +47 -0
- package/src/datagov-catalog.ts +296 -0
- package/src/datagov.ts +907 -0
- package/src/datagovKey.ts +68 -0
- package/src/datasource.ts +721 -0
- package/src/disclosure.ts +61 -0
- package/src/ecfr.ts +98 -1
- package/src/echo.ts +496 -0
- package/src/edgar.ts +3014 -0
- package/src/errors.ts +84 -1
- package/src/fac.ts +529 -0
- package/src/far.ts +1007 -0
- package/src/fdic.ts +2052 -0
- package/src/federal-register.ts +512 -3
- package/src/fema.ts +541 -0
- package/src/fpds.ts +620 -0
- package/src/gao.ts +744 -0
- package/src/govinfo.ts +497 -0
- package/src/grants.ts +139 -7
- package/src/gsa-csv.ts +992 -0
- package/src/integrity.ts +928 -0
- package/src/meta.ts +292 -0
- package/src/nih.ts +375 -0
- package/src/nppes.ts +834 -0
- package/src/nsf.ts +706 -0
- package/src/nvd.ts +1124 -0
- package/src/ofac.ts +1166 -0
- package/src/pricing.ts +1075 -0
- package/src/sam-gov/client.ts +345 -63
- package/src/sam-gov/index.ts +5 -1
- package/src/sam-gov/types.ts +22 -0
- package/src/sba.ts +357 -0
- package/src/server.ts +4551 -328
- package/src/snapshot.ts +192 -0
- package/src/socrata.ts +532 -0
- package/src/treasury.ts +575 -0
- package/src/usaspending.ts +1946 -214
- package/src/usitc.ts +420 -0
package/dist/far.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"far.js","sourceRoot":"","sources":["../src/far.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,IAAI,GAAG,0BAA0B,CAAC;AAKxC;;;;;;;;;GASG;AACH,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;QAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;KACvC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC;QACN,uEAAuE;SACtE,OAAO,CAAC,2DAA2D,EAAE,GAAG,CAAC;QAC1E,4BAA4B;SAC3B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;QACzB,mDAAmD;SAClD,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvB,uBAAuB;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAAC,GAAW;IACxC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;SACf,IAAI,EAAE;QACP,+EAA+E;QAC/E,8EAA8E;QAC9E,wEAAwE;SACvE,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC;SAC5C,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,iFAAiF;AACjF,SAAS,aAAa,CAAC,YAAoB;IACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB,CAAC,UAAsB;IAClD,OAAO;QACL,IAAI,EACF,oTAAoT;QACtT,iBAAiB,EAAE,0CAA0C;QAC7D,gBAAgB,EAAE;YAChB,0CAA0C;YAC1C,mCAAmC;YACnC,oCAAoC;SACrC;QACD,SAAS,EAAE,UAAU;KACtB,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,eAAe;IAI5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO;YACL,YAAY,EAAE,GAAG,EAAE,YAAY,IAAI,IAAI;YACvC,eAAe,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI;SAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC9B,WAAmB,EACnB,QAAgB;IAEhB,MAAM,GAAG,GAAG,GAAG,IAAI,sBAAsB,QAAQ,yBAAyB,WAAW,EAAE,CAAC;IACxF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,eAAe,QAAQ,IAAI,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,0EAA0E;YAC1E,0EAA0E;YAC1E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAIrC;IACC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;IAE7D,yEAAyE;IACzE,sEAAsE;IACtE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,oCAAoC,IAAI,CAAC,YAAY,qGAAqG;YACnK,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,iCAAiC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAE/C,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;IAC9D,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,gFAAgF;IAChF,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,mUAAmU;YAC5U,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,+BAA+B;SAClD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GACb,QAAQ,CAAC,YAAY,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ,CAAC,YAAY,CAAC;IAEvE,0EAA0E;IAC1E,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,iFAAiF;IACjF,qEAAqE;IACrE,wEAAwE;IACxE,IACE,QAAQ,CAAC,YAAY,KAAK,IAAI;QAC9B,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjD,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAChC,CAAC;QACD,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,2CAA2C,QAAQ,2CAA2C,QAAQ,CAAC,YAAY,gBAAgB,YAAY,iKAAiK,QAAQ,CAAC,YAAY,GAAG;YACjV,SAAS,EAAE,KAAK;YAChB,gBAAgB,EAAE,iCAAiC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,MAAM,SAAS,GAAG,GAAG,IAAI,sBAAsB,QAAQ,yBAAyB,YAAY,EAAE,CAAC;IAC/F,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,eAAe,QAAQ,IAAI,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;YACxC,2EAA2E;YAC3E,iEAAiE;YACjE,yEAAyE;YACzE,0EAA0E;YAC1E,+DAA+D;YAC/D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,gBAAgB,CAAC;oBACzB,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,4CAA4C,YAAY,WAAW,QAAQ,qJAAqJ;oBACzO,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,GAAG;oBACnB,gBAAgB,EAAE,iCAAiC;iBACpD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,4EAA4E;QAC5E,2EAA2E;QAC3E,kDAAkD;QAClD,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtE,MAAM,IAAI,gBAAgB,CAAC;gBACzB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oBAAoB,YAAY,gCAAgC,QAAQ,8IAA8I;gBAC/N,SAAS,EAAE,KAAK;gBAChB,cAAc,EAAE,GAAG;gBACnB,gBAAgB,EAAE,iCAAiC;aACpD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,0DAA0D;IAC1D,oDAAoD;IACpD,MAAM,OAAO,GACX,OAAO,IAAI,IAAI;QACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,YAAY,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAC3E,OAAO;QACT,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEvC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CACxB,oDAAoD,CACrD,CAAC;IACF,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE3C,wEAAwE;IACxE,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAGnC,CAAC;IACd,MAAM,IAAI,GAA2B,YAAY,IAAI,QAAQ,CAAC;IAE9D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE3B,2EAA2E;IAC3E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,YAAY,GAEL,IAAI,CAAC;IAChB,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,IAAI,mBAAmB,IAAI,YAAY,EAAE,CAAC;QACxC,6EAA6E;QAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtD,YAAY,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,oBAAoB,GAAG,IAAI,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,2BAA2B,WAAW,4BAA4B,YAAY,oMAAoM,IAAI,sBAAsB,QAAQ,yBAAyB,WAAW,oBAAoB,iDAAiD,WAAW,EAAE,IAAI,CAC/a,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,mBAAmB,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CACR,iOAAiO,CAClO,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,gFAAgF;IAChF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,oQAAoQ,CACrQ,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,iDAAiD,YAAY,EAAE,CAAC;IAEhF,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEzD,wBAAwB;IACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,YAAY;YACnB,CAAC,CAAC,YAAY,QAAQ,iDAAiD,QAAQ,CAAC,YAAY,oDAAoD,QAAQ,oDAAoD;YAC5M,CAAC,CAAC,8GAA8G,QAAQ,0CAA0C,CACrK,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,KAAK,CAAC,IAAI,CACR,yCAAyC,UAAU,yNAAyN,CAC7Q,CAAC;IAEF,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,IAAI,GAAG;QACX,YAAY;QACZ,IAAI;QACJ,UAAU;QACV,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,YAAY;QACZ,YAAY;QACZ,OAAO;QACP,0EAA0E;QAC1E,gEAAgE;QAChE,QAAQ;QACR,iBAAiB,EAAE,QAAQ,CAAC,YAAY;QACxC,oBAAoB,EAAE,QAAQ,CAAC,eAAe;QAC9C,SAAS;QACT,0EAA0E;QAC1E,eAAe;KAChB,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,EAAE;QACpB,MAAM,EAAE,qBAAqB;QAC7B,WAAW,EAAE,IAAI;QACjB,wCAAwC;QACxC,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,CAAC;QACjB,qEAAqE;QACrE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAClD,2EAA2E;QAC3E,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/D,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,kCAAkC;AAClC,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,kDAAkD;AAClD,mFAAmF;AACnF,kFAAkF;AAClF,+EAA+E;AAC/E,gFAAgF;AAChF,oEAAoE;AACpE,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,QAAQ,GAA2B;IACvC,WAAW,EACT,uFAAuF;IACzF,WAAW,EACT,uFAAuF;IACzF,WAAW,EACT,uFAAuF;IACzF,WAAW,EACT,2DAA2D;IAC7D,cAAc,EACZ,sFAAsF;IACxF,cAAc,EAAE,6CAA6C;IAC7D,cAAc,EAAE,8BAA8B;CAC/C,CAAC;AAEF,sFAAsF;AACtF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAuB7B;;;;;;;GAOG;AACH,KAAK,UAAU,OAAO,CACpB,KAAmB,EACnB,KAAa,EACb,MAA8C;IAE9C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,SAAS,CAAC;YACR,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO;YAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAKzC;IACC,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,oCAAoC;IAEhF,6EAA6E;IAC7E,gFAAgF;IAChF,gFAAgF;IAChF,gFAAgF;IAChF,iCAAiC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9C,8EAA8E;QAC9E,8EAA8E;QAC9E,qEAAqE;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAE7B,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,+EAA+E;IAC/E,+EAA+E;IAC/E,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,gBAAgB,CAAC;YACzB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,mVAAmV;YAC5V,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,+BAA+B;SAClD,CAAC,CAAC;IACL,CAAC;IASD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,OAAO,EACP,kBAAkB,EAClB,KAAK,EAAE,YAAY,EAAoB,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC;gBAChC,YAAY;gBACZ,QAAQ;gBACR,mBAAmB;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACnB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACjE,MAAM,GAAG,GAAc;gBACrB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,IAAI;aACL,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,GACR,CAAC,YAAY,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,MAAM,MAAM,GACV,CAAC,YAAY,gBAAgB;gBAC3B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO;gBACrB,CAAC,CAAC,CAAC,YAAY,KAAK;oBAClB,CAAC,CAAC,CAAC,CAAC,OAAO;oBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,0BAA0B;YAC1B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,OAAO;oBACL,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;iBAChC,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;QAChE,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACzC,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,wEAAwE;QAC/E,QAAQ;QACR,UAAU,EAAE,UAAU,CAAC,MAAM;QAC7B,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,GAAG;QACH,KAAK;QACL,IAAI;QACJ,KAAK;QACL,KAAK;KACN,CAAC;IAEF,+EAA+E;IAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,aAAa,OAAO,CAAC,MAAM,gCAAgC,kBAAkB,UAAU,OAAO,CAAC,MAAM,GAAG,KAAK,qIAAqI,CACnP,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,CAAC,MAAM,0CAA0C,QAAQ,kJAAkJ,CACzN,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,MAAM,kMAAkM,CACpN,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,EAAE,CAAC;QACzE,KAAK,CAAC,IAAI,CACR,gRAAgR,CACjR,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAE9D,OAAO,QAAQ,CAAC,IAAI,EAAE;QACpB,MAAM,EAAE,qDAAqD;QAC7D,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,6EAA6E;QAC7E,qEAAqE;QACrE,cAAc,EAAE,IAAI;QACpB,8EAA8E;QAC9E,yCAAyC;QACzC,QAAQ,EACN,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;QACrE,6EAA6E;QAC7E,yCAAyC;QACzC,QAAQ,EAAE,OAAO,CAAC,MAAM;YACtB,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACnE,CAAC,CAAC,SAAS;QACb,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AA+BD,4EAA4E;AAC5E,MAAM,aAAa,GAAoC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAsB5E;;;8EAG8E;AAC9E,SAAS,gBAAgB,CAAC,cAAsB,EAAE,OAAe;IAC/D,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,8EAA8E;IAC9E,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,IAAwB;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAkB,EAAE,cAAsB;IAC3D,OAAO;QACL,UAAU,EAAE,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/D,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;QAC1B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;QAC1B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;QACrB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;QAC1B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;QAC1B,SAAS,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI;KACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,GAAiB,EAAE,KAAa;IAC9C,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,OAAO,IAAI,UAAU,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,IAAoB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,IAAI,QAAQ,CAAC,SAAS;YAAE,OAAO,CAAC,mCAAmC;QACnE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,4EAA4E;QAC5E,wCAAwC;QACxC,IAAI,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;YAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAiB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAM/B;IACC,MAAM,KAAK,GAAmB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAClD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,4EAA4E;IAC5E,gFAAgF;IAChF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5C,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,QAAQ,GACZ,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,EAAE;YACf,OAAO;YACP,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,0EAA0E;QAC1E,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAAE,YAAY,GAAG,IAAI,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,0EAA0E;YAC1E,qEAAqE;YACrE,wEAAwE;YACxE,4EAA4E;YAC5E,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,MAAM,UAAU,GACd,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE;gBAC7C,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBAClD,eAAe,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,MAAM,CAAC;IAEX,8EAA8E;IAC9E,MAAM,OAAO,GAAG,cAAc;QAC5B,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC;QAC/B,CAAC,CAAC,YAAY,CAAC;IAEjB,4EAA4E;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,uEAAuE;IACvE,+EAA+E;IAC/E,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,8EAA8E;IAC9E,MAAM,SAAS,GAAG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE/D,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;IAEzC,6EAA6E;IAC7E,sEAAsE;IACtE,MAAM,aAAa,GACjB,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,IAAI,cAAc,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,oBAAoB,OAAO,CAAC,MAAM,oGAAoG,CACpJ,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,2EAA2E;IAC3E,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CACR,GAAG,eAAe,2CAA2C,aAAa,gFAAgF,aAAa,sBAAsB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,mDAAmD,CACnQ,CAAC;IACJ,CAAC;IACD,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9E,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CACR,GAAG,cAAc,CAAC,MAAM,oJAAoJ,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAC1P,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CACR,4JAA4J,CAC7J,CAAC;IACJ,CAAC;IACD,qFAAqF;IACrF,KAAK,CAAC,IAAI,CACR,yCAAyC,aAAa,sNAAsN,CAC7Q,CAAC;IAEF,+EAA+E;IAC/E,gFAAgF;IAChF,qDAAqD;IACrD,MAAM,eAAe,GAAG,oBAAoB,CAC1C,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CACpC,CAAC;IAEF,+EAA+E;IAC/E,4EAA4E;IAC5E,qFAAqF;IACrF,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,gBAAgB;QAChB,iBAAiB,EAAE,QAAQ,CAAC,YAAY;QACxC,eAAe;KAChB,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,SAAS;QAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,cAAc;QAAE,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE1D,OAAO,QAAQ,CAAC,IAAI,EAAE;QACpB,MAAM,EAAE,6BAA6B;QACrC,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,8EAA8E;QAC9E,8EAA8E;QAC9E,uEAAuE;QACvE,cAAc,EAAE,IAAI;QACpB,8EAA8E;QAC9E,2EAA2E;QAC3E,SAAS;QACT,cAAc;QACd,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;QACrB,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
package/dist/fdic.d.ts
ADDED
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FDIC BankFind Suite — keyless FDIC-insured-institution directory + regulated-
|
|
3
|
+
* entity financials (ADR-0028). The FIRST OFF-EDGAR entity source: an
|
|
4
|
+
* FDIC-insured-institution directory (`/banks/institutions`) + quarterly
|
|
5
|
+
* financial time-series (`/banks/financials`) for B2G counterparty / entity
|
|
6
|
+
* due-diligence. Source 22 → 23; tool snapshot 87 → 89. Fully PUBLIC, KEYLESS —
|
|
7
|
+
* no key param, no auth, no PII (institution NAME is an ORG name; the curated
|
|
8
|
+
* projections exclude every officer/contact field).
|
|
9
|
+
*
|
|
10
|
+
* R2 consumer — reuses the shipped `DataSource` port EXACTLY like ckan.ts /
|
|
11
|
+
* socrata.ts: `getJson` / `driftError` / `throughGate` (datasource.ts), `num`·
|
|
12
|
+
* `str` (coerce.ts), `withMeta` / `buildMeta` (meta.ts). It writes ZERO fetch /
|
|
13
|
+
* coercion / error / pagination code, and COPIES (does not import) the SSRF +
|
|
14
|
+
* honesty PATTERN.
|
|
15
|
+
* Directory: https://api.fdic.gov/banks/institutions?filters=…&search=…&fields=…
|
|
16
|
+
* Financials: https://api.fdic.gov/banks/financials?filters=CERT:<int>&fields=…
|
|
17
|
+
*
|
|
18
|
+
* SUCCESS envelope (live-verified 2026-07-13, SEC-style UA, HTTP 200 JSON):
|
|
19
|
+
* { "meta": { "total": <EXACT int>, "parameters": {…}, "index": { "name":…,
|
|
20
|
+
* "createTimestamp":… } }, "data": [ { "data": {<record>}, "score":… } ] }
|
|
21
|
+
* `meta.total` is the EXACT match count, STABLE across `offset` (honest exact-
|
|
22
|
+
* total pagination). Records are nested under `data[].data`. Two OTHER envelopes
|
|
23
|
+
* exist: a QUERY-ERROR `{ "errors":[{status,detail}] }` (HTTP 400) and a
|
|
24
|
+
* ROUTING `{ "message","statusCode" }` (HTTP 404) — both handled by the port's
|
|
25
|
+
* taxonomy (they THROW before the drift-guard ever runs).
|
|
26
|
+
*
|
|
27
|
+
* ★ SSRF GUARD (policy① — the central design risk). Fixed host `api.fdic.gov`,
|
|
28
|
+
* `https` only. The path is a FIXED endpoint constant the TOOL chooses
|
|
29
|
+
* (`institutions` | `financials`) — NO caller value on the path. Every param
|
|
30
|
+
* (`filters` / `search` / `fields` / `sort_by` / `sort_order` / `limit` /
|
|
31
|
+
* `offset` / `format`) goes through URLSearchParams, built server-side from
|
|
32
|
+
* allowlisted structured inputs with escaped values. Belt-and-suspenders builder
|
|
33
|
+
* assertion (mirrors ckan/socrata): `new URL(url).hostname === "api.fdic.gov"`
|
|
34
|
+
* and `protocol === "https:"` → else invalid_input. `limit`/`offset` are bounded
|
|
35
|
+
* ints (no unbounded paging). `redirect:"error"` on every getJson (a future 3xx
|
|
36
|
+
* off `api.fdic.gov` throws rather than being silently followed off-host).
|
|
37
|
+
*
|
|
38
|
+
* ★ HONESTY DESIGN (P1–P4; ADR §4 + the v2 review) — closing the landmines:
|
|
39
|
+
* (A/P4) filter-FIELD names are compile-time constants behind NAMED structured
|
|
40
|
+
* inputs; a caller can never supply a field name, so a typo'd field can never
|
|
41
|
+
* reach the wire as a false genuine-empty. Belt-and-suspenders: the builder
|
|
42
|
+
* asserts every emitted filter field ∈ its allowlist (institutions
|
|
43
|
+
* {STALP,ACTIVE,CERT}; financials {CERT}); every emitted SEARCH field ∈
|
|
44
|
+
* {NAME,CITY}; every sortBy ∈ the per-endpoint sort allowlist (a Set.has
|
|
45
|
+
* recheck behind the server's Zod enum) → an unknown sort field is
|
|
46
|
+
* invalid_input BEFORE fetch (live: `sort_by=NOTAFIELD` + a sort_order → HTTP
|
|
47
|
+
* 400, so the pre-fetch guard is load-bearing).
|
|
48
|
+
* ★M1 (BLOCKER) — `name`/`city` route through FDIC's full-text `search` param,
|
|
49
|
+
* NOT `filters=NAME/CITY:"…"`. The `filters` DSL treats NAME/CITY as
|
|
50
|
+
* case-sensitive EXACT-keyword (live: `filters=NAME:"chase"` → total 0 — a
|
|
51
|
+
* confident false-empty), whereas `search=NAME:chase` is a case-insensitive
|
|
52
|
+
* full-text token match (live: 43) that combines cleanly with `filters` (live:
|
|
53
|
+
* `search=NAME:first` + `filters=STALP:VA AND ACTIVE:1` → 9). We emit BOTH
|
|
54
|
+
* `filters=` (STALP/ACTIVE/CERT) and `search=` (NAME/CITY) when present.
|
|
55
|
+
* Disclosed in `_meta.notes`.
|
|
56
|
+
* ★M2 (v2 fix — the search value is UNQUOTED) — the `search` term is built
|
|
57
|
+
* `NAME:<escaped>` (NO surrounding quotes). Quoting a single token makes FDIC
|
|
58
|
+
* run a `match_phrase` that COLLAPSES recall to zero for real brand-name banks
|
|
59
|
+
* (live: `NAME:"Axos"`→0 but `NAME:Axos`→1 — Axos Bank CERT 35546 exists), the
|
|
60
|
+
* exact M1 false-empty class. The value is instead backslash-escaped for the
|
|
61
|
+
* UNQUOTED Lucene reserved chars the char-class allows (`( ) & / -` + `\`; see
|
|
62
|
+
* escapeSearch) — belt-and-suspenders on the Zod-bypass path. The `search`
|
|
63
|
+
* param is provably non-injectable for WIDENING (default-AND token semantics —
|
|
64
|
+
* `OR`/`&&` never form a union; live: `NAME:zzz OR STALP:VA`→0), so no quotes
|
|
65
|
+
* are needed for security either.
|
|
66
|
+
* ★S1 — a multi-word name/city `search` value is matched PER-TOKEN by FDIC's
|
|
67
|
+
* full-text index (may be BROADER than a literal substring — a record sharing
|
|
68
|
+
* only ONE token can match; live: `search=NAME:First Community`→225 incl.
|
|
69
|
+
* "First State Bank"). We disclose this in `_meta.notes` whenever a name/city
|
|
70
|
+
* value contains a space.
|
|
71
|
+
* (P1) EXACT total → honest pagination: `totalAvailable = num(meta.total)`
|
|
72
|
+
* (stable across offset); `records = data.map(d => d.data)`; `hasMore =
|
|
73
|
+
* offset + returned < totalAvailable`; `nextOffset`. Via withMeta/buildMeta.
|
|
74
|
+
* (P2) 3-envelope drift-guard: require `meta` object AND `data` Array AND
|
|
75
|
+
* `typeof meta.total === "number"` → else driftError (rejects the errors[] /
|
|
76
|
+
* message+statusCode shapes at HTTP 200). A non-JSON 200 body (json parse
|
|
77
|
+
* throw) → reclassified to driftError. The ONLY honest empty = HTTP 200 +
|
|
78
|
+
* `meta.total:0` + `data:[]` → returned:0, totalAvailable:0, complete:true.
|
|
79
|
+
* Everything else THROWS — never a fake-empty.
|
|
80
|
+
* (P3) $thousands→USD ×1000, null-never-0: FDIC publishes ASSET/DEP/NETINC in
|
|
81
|
+
* $thousands; `assetUSD = num(rec.ASSET) === null ? null : num(rec.ASSET) *
|
|
82
|
+
* 1000` (the null-guard PRECEDES the ×1000, so an absent value stays null,
|
|
83
|
+
* never 0). Disclosed in `_meta.notes`. CERT/REPDTE/ACTIVE via `num`;
|
|
84
|
+
* NAME/CITY/STALP/ID/ESTYMD via `str`.
|
|
85
|
+
* (B) Returned-fields disclosure: the union of keys across `data[].data`; any
|
|
86
|
+
* projected field absent from ALL records (when returned > 0) →
|
|
87
|
+
* `_meta.fieldsUnavailable` + a note (a field FDIC silently stops returning
|
|
88
|
+
* surfaces instead of vanishing).
|
|
89
|
+
* Snapshot-freshness: `meta.index.{name,createTimestamp}` → `_meta.notes`
|
|
90
|
+
* ("point-in-time snapshot, not a live-this-second read"; the institutions
|
|
91
|
+
* and financials indexes carry DIFFERENT snapshot times).
|
|
92
|
+
*
|
|
93
|
+
* ★ A1 — provenance `source` is set INLINE in each tool's withMeta partial (like
|
|
94
|
+
* ckan.ts). There is NO `fdic_` branch in server.ts's synthesizeDefaultMeta (both
|
|
95
|
+
* tools return a MetaBundle, so that switch is never consulted — it would be dead
|
|
96
|
+
* code shipping blank provenance).
|
|
97
|
+
*/
|
|
98
|
+
import { num } from "./coerce.js";
|
|
99
|
+
import { type MetaBundle } from "./meta.js";
|
|
100
|
+
export { num };
|
|
101
|
+
declare const INST_FILTER_FIELDS: ReadonlySet<string>;
|
|
102
|
+
declare const FIN_FILTER_FIELDS: ReadonlySet<string>;
|
|
103
|
+
declare const INST_SEARCH_FIELDS: ReadonlySet<string>;
|
|
104
|
+
/**
|
|
105
|
+
* ★M2 (v2 fix) — escape an UNQUOTED `search` value: backslash FIRST (so a
|
|
106
|
+
* pre-existing `\` becomes a literal `\\` and we never double-process the escapes
|
|
107
|
+
* we add), then backslash-escape the Lucene reserved chars the char-class ALLOWS
|
|
108
|
+
* and that are meaningful UNQUOTED — grouping `(` `)`, the boolean-forming `&`
|
|
109
|
+
* (`&&`), the regex delimiter `/`, and the prefix/NOT operator `-`. There are NO
|
|
110
|
+
* surrounding quotes: FDIC's `search` treats a quoted single token as a
|
|
111
|
+
* `match_phrase` that COLLAPSES recall to ZERO for real brand-name banks (live:
|
|
112
|
+
* `NAME:"Axos"`→0 but `NAME:Axos`→1) — the exact M1 false-empty class this design
|
|
113
|
+
* exists to prevent. Quotes are also gratuitous for security: the SSRF review
|
|
114
|
+
* proved the `search` param is non-injectable for WIDENING (default-AND token
|
|
115
|
+
* semantics — `OR`/`&&` never form a union; live: `NAME:zzz OR STALP:VA`→0 vs
|
|
116
|
+
* STALP:VA→5998), and a field-pivot needs `:`, which the Zod char-class rejects.
|
|
117
|
+
* So this escape is belt-and-suspenders for the Zod-bypass path (`:` and `"` are
|
|
118
|
+
* char-class-rejected on the validated path). Live-verified 2026-07-13 that the
|
|
119
|
+
* escape preserves recall (`Farmers & Merchants`→181, `First-Citizens`→85,
|
|
120
|
+
* `Mizuho Bank \(USA\)`→1). Exported for the direct-builder fault fixture.
|
|
121
|
+
*/
|
|
122
|
+
export declare function escapeSearch(v: string): string;
|
|
123
|
+
/** The filter-field allowlists, exported so the fault suite can drive the
|
|
124
|
+
* belt-and-suspenders field-guard directly (the tool functions only ever pass
|
|
125
|
+
* hardcoded fields, so this defense-in-depth check is otherwise unreachable). */
|
|
126
|
+
export { INST_FILTER_FIELDS, FIN_FILTER_FIELDS, INST_SEARCH_FIELDS };
|
|
127
|
+
/** A `filters` term `FIELD:VALUE` — asserts the field ∈ its allowlist (P4). A
|
|
128
|
+
* NON-NUMERIC value is DOUBLE-QUOTED; a numeric value stays bare. This quoting is
|
|
129
|
+
* LOAD-BEARING for correctness: the FDIC `filters` DSL is Lucene-style, so a
|
|
130
|
+
* BAREWORD state code that collides with a boolean operator is mis-parsed. Live-
|
|
131
|
+
* verified 2026-07-13: `PSTALP:OR` (Oregon, unquoted) → HTTP 400 parse_exception (a
|
|
132
|
+
* HARD-FAIL that throws, NOT an honest empty), whereas `PSTALP:"OR"` → 4289 rows.
|
|
133
|
+
* OR is the only 2-letter US state code that collides with a Lucene operator, but
|
|
134
|
+
* quoting is EQUIVALENT for every non-operator value (live: `STALP:CA` === `STALP:"CA"`
|
|
135
|
+
* === 1287; `PSTALP:CA`(failures) === 265; `PSTALP:CA`(history) === 35892) so it is
|
|
136
|
+
* uniformly safe for all state filters and fixes all 4 FDIC tools at once (they all
|
|
137
|
+
* call this). Numeric fields (CERT/CHANGECODE/FAILYR/EFFYEAR/ACTIVE) stay bare — the
|
|
138
|
+
* values are `^\d+$` by construction and a number never collides with an operator.
|
|
139
|
+
* The value is escaped backslash-first then `"` (defensive — `^[A-Z]{2}$`-constrained
|
|
140
|
+
* state values contain neither, and no other field routes a free string through here).
|
|
141
|
+
* This is the `filters`-DSL path ONLY; the `search` param (searchTerm/escapeSearch)
|
|
142
|
+
* is a DIFFERENT surface and stays correctly UNQUOTED (C116). Exported for the
|
|
143
|
+
* allowlist-bypass fault fixture (§7(b)). */
|
|
144
|
+
export declare function filterTerm(field: string, value: string, allowed: ReadonlySet<string>): string;
|
|
145
|
+
/** A `search` term `FIELD:<escaped>` (M1 route for NAME/CITY) — asserts the field
|
|
146
|
+
* ∈ the search allowlist and M2-escapes the value UNQUOTED (see escapeSearch: NO
|
|
147
|
+
* surrounding quotes — quotes collapse match_phrase recall → false-empties).
|
|
148
|
+
* Exported for the allowlist-bypass fault fixture (§7(b)). */
|
|
149
|
+
export declare function searchTerm(field: string, value: string): string;
|
|
150
|
+
/**
|
|
151
|
+
* Build the institutions `filters` string (STALP/ACTIVE/CERT only — NAME/CITY go
|
|
152
|
+
* through `search`, M1). Terms joined with ` AND `. Returns "" when there is no
|
|
153
|
+
* structured filter clause. Exported for the fault fixtures.
|
|
154
|
+
*/
|
|
155
|
+
export declare function buildInstFilters(inp: {
|
|
156
|
+
state?: string;
|
|
157
|
+
activeOnly?: boolean;
|
|
158
|
+
cert?: number;
|
|
159
|
+
}): string;
|
|
160
|
+
/**
|
|
161
|
+
* ★M1 + ★M2 — build the institutions `search` string (FDIC full-text; NAME/CITY
|
|
162
|
+
* only). Each value is char-class-validated at the server boundary, then here
|
|
163
|
+
* M2-escaped UNQUOTED (backslash-first; NO surrounding quotes — see escapeSearch).
|
|
164
|
+
* Terms joined with ` AND ` (live-verified: `search=NAME:first AND CITY:richmond`
|
|
165
|
+
* → both must match). Returns "" when neither is present. Exported for the M1/M2
|
|
166
|
+
* fault fixtures.
|
|
167
|
+
*/
|
|
168
|
+
export declare function buildInstSearch(inp: {
|
|
169
|
+
name?: string;
|
|
170
|
+
city?: string;
|
|
171
|
+
}): string;
|
|
172
|
+
/** Build the financials `filters` string — the sole filter is the numeric
|
|
173
|
+
* `CERT:<int>` (zero string inputs → zero injection surface). */
|
|
174
|
+
export declare function buildFinFilters(inp: {
|
|
175
|
+
cert: number;
|
|
176
|
+
}): string;
|
|
177
|
+
export type FdicInstitution = {
|
|
178
|
+
name: string | null;
|
|
179
|
+
city: string | null;
|
|
180
|
+
state: string | null;
|
|
181
|
+
cert: number | null;
|
|
182
|
+
assetUSD: number | null;
|
|
183
|
+
active: number | null;
|
|
184
|
+
establishedDate: string | null;
|
|
185
|
+
id: string | null;
|
|
186
|
+
};
|
|
187
|
+
export type FdicFinancials = {
|
|
188
|
+
cert: number | null;
|
|
189
|
+
reportDate: number | null;
|
|
190
|
+
assetUSD: number | null;
|
|
191
|
+
depositsUSD: number | null;
|
|
192
|
+
netIncomeUSD: number | null;
|
|
193
|
+
id: string | null;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Search the FDIC-insured-institution directory (`/banks/institutions`).
|
|
197
|
+
* Structured inputs: `state` (STALP filter), `activeOnly` (ACTIVE filter), `cert`
|
|
198
|
+
* (CERT filter) → the `filters` param; `name`/`city` → the full-text `search`
|
|
199
|
+
* param (M1; case-insensitive token match, UNQUOTED + M2-escaped). Plus
|
|
200
|
+
* `limit`/`offset`/`sortBy`/`sortOrder`. Fixed field projection.
|
|
201
|
+
*
|
|
202
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1); the 3-
|
|
203
|
+
* envelope drift-guard makes the ONLY honest empty `200 + total:0 + data:[]`,
|
|
204
|
+
* everything else THROWS (P2); ASSET is $thousands → whole USD ×1000 null-never-0
|
|
205
|
+
* (P3); a projected field absent from all records → fieldsUnavailable (B); the
|
|
206
|
+
* snapshot build time is disclosed. name/city search + multi-word per-token are
|
|
207
|
+
* disclosed (M1/S1).
|
|
208
|
+
*/
|
|
209
|
+
export declare function searchInstitutions(args: {
|
|
210
|
+
state?: string;
|
|
211
|
+
activeOnly?: boolean;
|
|
212
|
+
cert?: number;
|
|
213
|
+
name?: string;
|
|
214
|
+
city?: string;
|
|
215
|
+
limit?: number;
|
|
216
|
+
offset?: number;
|
|
217
|
+
sortBy?: string;
|
|
218
|
+
sortOrder?: string;
|
|
219
|
+
}): Promise<MetaBundle>;
|
|
220
|
+
/**
|
|
221
|
+
* Quarterly financial time-series for ONE FDIC-insured institution by `cert`
|
|
222
|
+
* (`/banks/financials`). The sole filter is the numeric `CERT:<int>` (zero string
|
|
223
|
+
* inputs → zero injection surface). `sortBy` defaults to REPDTE + `sortOrder`
|
|
224
|
+
* DESC → newest quarter first. Fixed field projection. Consumes the IDENTICAL
|
|
225
|
+
* fetch → 3-envelope guard → pagination machinery as tool 1.
|
|
226
|
+
*
|
|
227
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1; live: CERT
|
|
228
|
+
* 10363 → total 169, stable across offset); the 3-envelope drift-guard (P2);
|
|
229
|
+
* ASSET/DEP/NETINC $thousands → whole USD ×1000 null-never-0 (P3); the
|
|
230
|
+
* fieldsUnavailable disclosure (B); the snapshot build time is disclosed.
|
|
231
|
+
*/
|
|
232
|
+
export declare function institutionFinancials(args: {
|
|
233
|
+
cert: number;
|
|
234
|
+
limit?: number;
|
|
235
|
+
offset?: number;
|
|
236
|
+
sortBy?: string;
|
|
237
|
+
sortOrder?: string;
|
|
238
|
+
}): Promise<MetaBundle>;
|
|
239
|
+
declare const FDIC_FAILURES_FILTER_FIELDS: ReadonlySet<string>;
|
|
240
|
+
export { FDIC_FAILURES_FILTER_FIELDS };
|
|
241
|
+
/**
|
|
242
|
+
* Build the failures `filters` string — EXACT-KEY terms only: `state`→`PSTALP:<s>`
|
|
243
|
+
* (★F1), `failYear`→`FAILYR:<year>` (emit the integer's digits — FAILYR is a
|
|
244
|
+
* string field but the digits filter cleanly, live-verified), `cert`→`CERT:<int>`.
|
|
245
|
+
* There is NO name/city term (★F2 — /failures ignores `search` and NAME/CITY only
|
|
246
|
+
* filter as brittle exact-uppercase foot-guns). Terms joined with ` AND `. Returns
|
|
247
|
+
* "" when there is no structured filter clause. Exported for the fault fixtures.
|
|
248
|
+
*/
|
|
249
|
+
export declare function buildFailFilters(inp: {
|
|
250
|
+
state?: string;
|
|
251
|
+
failYear?: number;
|
|
252
|
+
cert?: number;
|
|
253
|
+
}): string;
|
|
254
|
+
/**
|
|
255
|
+
* ★F3 — normalize FDIC's `FAILDATE` (`M/D/YYYY`, e.g. `3/10/2023`) to ISO
|
|
256
|
+
* `YYYY-MM-DD`. Parse `^(\d{1,2})/(\d{1,2})/(\d{4})$`, then validate the calendar
|
|
257
|
+
* day with the EXACT 3-component Date.UTC round-trip (rejects JS's silent
|
|
258
|
+
* roll-overs like `2/30/2023`→Mar-02). On success → the padded ISO string
|
|
259
|
+
* (`normalized:true`). If the value does NOT match the pattern or fails the
|
|
260
|
+
* round-trip → surface the RAW upstream value UNCHANGED (`normalized:false`; NEVER
|
|
261
|
+
* null or fabricate a present date — the handler discloses the raw passthrough); a
|
|
262
|
+
* genuinely-absent value (null/undefined) → null. Live-confirmed 4115/4115 rows
|
|
263
|
+
* normalize (1934–2026), so the raw-passthrough branch is defensive-only. Exported
|
|
264
|
+
* for the fault fixtures.
|
|
265
|
+
*/
|
|
266
|
+
export declare function normFailDate(raw: unknown): {
|
|
267
|
+
value: string | null;
|
|
268
|
+
normalized: boolean;
|
|
269
|
+
};
|
|
270
|
+
export type FdicFailure = {
|
|
271
|
+
name: string | null;
|
|
272
|
+
cert: number | null;
|
|
273
|
+
failDate: string | null;
|
|
274
|
+
failYear: string | null;
|
|
275
|
+
city: string | null;
|
|
276
|
+
state: string | null;
|
|
277
|
+
resolutionType: string | null;
|
|
278
|
+
resolutionFund: string | null;
|
|
279
|
+
estimatedLossUSD: number | null;
|
|
280
|
+
depositsUSD: number | null;
|
|
281
|
+
assetsUSD: number | null;
|
|
282
|
+
id: string | null;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Historical FDIC bank failures / assistance transactions (`/banks/failures`).
|
|
286
|
+
* Exact-key structured inputs: `state` (→ PSTALP filter, ★F1), `failYear` (→
|
|
287
|
+
* FAILYR), `cert` (→ CERT) → the `filters` param; plus `limit`/`offset`/`sortBy`/
|
|
288
|
+
* `sortOrder` (default FAILDATE DESC → most-recent failures first). Fixed field
|
|
289
|
+
* projection. NO name/city filter and NEVER a `search=` param (★F2). Consumes the
|
|
290
|
+
* IDENTICAL fetch → 3-envelope guard → pagination machinery as tools 1 & 2.
|
|
291
|
+
*
|
|
292
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1); the 3-
|
|
293
|
+
* envelope drift-guard makes the ONLY honest empty `200 + total:0 + data:[]`,
|
|
294
|
+
* everything else THROWS (P2); COST/QBFDEP/QBFASSET are $thousands → whole USD
|
|
295
|
+
* ×1000 null-never-0 (P3; genuine 0 stays 0, negative = a net recovery, absent →
|
|
296
|
+
* null); failDate normalized M/D/YYYY→ISO (unrecognized → raw + disclosed, never
|
|
297
|
+
* nulled/fabricated); a projected field absent from all records → fieldsUnavailable
|
|
298
|
+
* (B); the snapshot build time is disclosed.
|
|
299
|
+
*/
|
|
300
|
+
export declare function bankFailures(args: {
|
|
301
|
+
state?: string;
|
|
302
|
+
failYear?: number;
|
|
303
|
+
cert?: number;
|
|
304
|
+
limit?: number;
|
|
305
|
+
offset?: number;
|
|
306
|
+
sortBy?: string;
|
|
307
|
+
sortOrder?: string;
|
|
308
|
+
}): Promise<MetaBundle>;
|
|
309
|
+
declare const FDIC_HISTORY_FILTER_FIELDS: ReadonlySet<string>;
|
|
310
|
+
export { FDIC_HISTORY_FILTER_FIELDS };
|
|
311
|
+
/**
|
|
312
|
+
* Build the history `filters` string — EXACT-KEY terms only: `cert`→`CERT:<int>`
|
|
313
|
+
* (the PRIMARY lookup), `changeCode`→`CHANGECODE:<int>`, `effYear`→`EFFYEAR:<year>`
|
|
314
|
+
* (emit the integer's digits — EFFYEAR is a string field but the digits filter
|
|
315
|
+
* cleanly, live-verified), `state`→`PSTALP:<state>` (★F1-analog — PSTALP, NEVER
|
|
316
|
+
* STALP). There is NO name/city term (★F2-analog — /history's `search` param
|
|
317
|
+
* returns 0 for INSTNAME; this tool never emits `search=`). Terms joined with
|
|
318
|
+
* ` AND `. Returns "" when there is no structured filter clause. Exported for the
|
|
319
|
+
* fault fixtures.
|
|
320
|
+
*/
|
|
321
|
+
export declare function buildHistFilters(inp: {
|
|
322
|
+
cert?: number;
|
|
323
|
+
changeCode?: number;
|
|
324
|
+
effYear?: number;
|
|
325
|
+
state?: string;
|
|
326
|
+
}): string;
|
|
327
|
+
/**
|
|
328
|
+
* ★Q2 — normalize FDIC's `EFFDATE`/`PROCDATE` (`YYYY-MM-DDT00:00:00`, e.g.
|
|
329
|
+
* `2002-07-01T00:00:00`) to ISO `YYYY-MM-DD`. Match
|
|
330
|
+
* `^(\d{4})-(\d{2})-(\d{2})T00:00:00$`, extract y/m/d, then validate the calendar
|
|
331
|
+
* day with the EXACT 3-component Date.UTC round-trip (`getUTCFullYear/Month+1/Date`
|
|
332
|
+
* all match — rejects JS's silent roll-overs). On success → the ISO date
|
|
333
|
+
* (`normalized:true`; the month/day are already zero-padded by the `\d{2}` capture).
|
|
334
|
+
* If the value does NOT match the pattern or fails the round-trip → surface the RAW
|
|
335
|
+
* upstream value UNCHANGED (`normalized:false`; NEVER null or fabricate a present
|
|
336
|
+
* date — the handler discloses the raw passthrough); a genuinely-absent value
|
|
337
|
+
* (null/undefined/"") → str-coerced (null for absent, "" preserved). Live-confirmed
|
|
338
|
+
* 0/2000 nulls and 0 non-`T00:00:00` and old rows (1782 → `1782-01-01T00:00:00`)
|
|
339
|
+
* conform, so the raw-passthrough branch is defensive-only. The `9999-12-31T00:00:00`
|
|
340
|
+
* sentinel round-trips fine to `9999-12-31` (disclosed by the handler's sentinel
|
|
341
|
+
* note). Exported for the fault fixtures.
|
|
342
|
+
*/
|
|
343
|
+
export declare function normHistDate(raw: unknown): {
|
|
344
|
+
value: string | null;
|
|
345
|
+
normalized: boolean;
|
|
346
|
+
};
|
|
347
|
+
export type FdicHistory = {
|
|
348
|
+
cert: number | null;
|
|
349
|
+
instName: string | null;
|
|
350
|
+
state: string | null;
|
|
351
|
+
changeCode: number | null;
|
|
352
|
+
changeDescription: string | null;
|
|
353
|
+
effectiveDate: string | null;
|
|
354
|
+
processDate: string | null;
|
|
355
|
+
effYear: string | null;
|
|
356
|
+
transNum: number | null;
|
|
357
|
+
acquirerCert: number | null;
|
|
358
|
+
acquirerName: string | null;
|
|
359
|
+
outgoingCert: number | null;
|
|
360
|
+
outgoingName: string | null;
|
|
361
|
+
survivingCert: number | null;
|
|
362
|
+
survivingName: string | null;
|
|
363
|
+
id: string | null;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Institution-level structural-change event log (`/banks/history`). Exact-key
|
|
367
|
+
* structured inputs: `cert` (→ CERT filter, the PRIMARY lookup), `changeCode` (→
|
|
368
|
+
* CHANGECODE), `effYear` (→ EFFYEAR), `state` (→ PSTALP filter, ★F1-analog) → the
|
|
369
|
+
* `filters` param; plus `limit`/`offset`/`sortBy`/`sortOrder` (default EFFDATE DESC
|
|
370
|
+
* → newest structural change first). Fixed field projection. NO name/city filter and
|
|
371
|
+
* NEVER a `search=` param (★F2-analog). Consumes the IDENTICAL fetch → 3-envelope
|
|
372
|
+
* guard → pagination machinery as tools 1–3.
|
|
373
|
+
*
|
|
374
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1; live: CERT 3510
|
|
375
|
+
* → total 13794, stable across offset); the 3-envelope drift-guard makes the ONLY
|
|
376
|
+
* honest empty `200 + total:0 + data:[]`, everything else THROWS (P2); changeDescription
|
|
377
|
+
* is FDIC's co-served CHANGECODE_DESC passed through verbatim (Q1, never hand-mapped);
|
|
378
|
+
* effectiveDate/processDate normalized YYYY-MM-DDT00:00:00→ISO (unrecognized → raw +
|
|
379
|
+
* disclosed, never nulled/fabricated; 9999-* sentinel disclosed) (Q2); the ACQ_/OUT_/
|
|
380
|
+
* SUR_ counterparty CERT-triad is null-never-0 and uses *_CERT not *_UNINUM's 0
|
|
381
|
+
* sentinel (Q3); a projected always-present field absent from all records →
|
|
382
|
+
* fieldsUnavailable (B); the snapshot build time is disclosed.
|
|
383
|
+
*/
|
|
384
|
+
export declare function institutionHistory(args: {
|
|
385
|
+
cert?: number;
|
|
386
|
+
changeCode?: number;
|
|
387
|
+
effYear?: number;
|
|
388
|
+
state?: string;
|
|
389
|
+
limit?: number;
|
|
390
|
+
offset?: number;
|
|
391
|
+
sortBy?: string;
|
|
392
|
+
sortOrder?: string;
|
|
393
|
+
}): Promise<MetaBundle>;
|
|
394
|
+
declare const FDIC_SUMMARY_FILTER_FIELDS: ReadonlySet<string>;
|
|
395
|
+
export { FDIC_SUMMARY_FILTER_FIELDS };
|
|
396
|
+
/**
|
|
397
|
+
* ★CRUX-1 (S2) — derive the geographic SCOPE from the raw STALP, using the explicit
|
|
398
|
+
* roll-up set (a fixed 4-element discriminator, NOT a fragile numeric threshold).
|
|
399
|
+
* A non-roll-up value (incl. null / any future/unknown STALP) falls through to
|
|
400
|
+
* "jurisdiction" and is surfaced by the ALWAYS-projected raw STNAME/STALP/STNUM — a
|
|
401
|
+
* caller can always see the literal label, never a silently-mislabeled aggregate.
|
|
402
|
+
* Exported for the fault fixtures.
|
|
403
|
+
*/
|
|
404
|
+
export declare function scopeOf(stalp: string | null): string;
|
|
405
|
+
/**
|
|
406
|
+
* ★CRUX-1b (S1) — map the raw CB_SI charter code to a readable class. An UNMAPPED
|
|
407
|
+
* value returns the raw code (never fabricated); a genuinely-absent (null) value stays
|
|
408
|
+
* null. Exported for the fault fixtures.
|
|
409
|
+
*/
|
|
410
|
+
export declare function charterClassOf(code: string | null): string | null;
|
|
411
|
+
/**
|
|
412
|
+
* Build the summary `filters` string — EXACT-KEY terms only: `year`→`YEAR:<int>`
|
|
413
|
+
* (numeric → emitted BARE by filterTerm; a non-int is guarded pre-fetch by Zod .int()),
|
|
414
|
+
* `state`→`STALP:"<code>"` (★S2 — STALP is the /summary state field, NOT PSTALP;
|
|
415
|
+
* C118-double-quoted so Oregon `STALP:"OR"` is Lucene-operator-safe), `charterClass`
|
|
416
|
+
* →`CB_SI:"<v>"` (quoted). There is NO name/city term (★/summary's `search` is a no-op
|
|
417
|
+
* that returns the whole year — this tool never emits `search=`). Terms joined with
|
|
418
|
+
* ` AND `. Returns "" when there is no structured filter clause. Exported for the fault
|
|
419
|
+
* fixtures.
|
|
420
|
+
*/
|
|
421
|
+
export declare function buildSummaryFilters(inp: {
|
|
422
|
+
year?: number;
|
|
423
|
+
state?: string;
|
|
424
|
+
charterClass?: string;
|
|
425
|
+
}): string;
|
|
426
|
+
export type FdicIndustrySummary = {
|
|
427
|
+
year: number | null;
|
|
428
|
+
charterClass: string | null;
|
|
429
|
+
charterClassCode: string | null;
|
|
430
|
+
geography: string | null;
|
|
431
|
+
stateCode: string | null;
|
|
432
|
+
stateFips: string | null;
|
|
433
|
+
scope: string;
|
|
434
|
+
isRollup: boolean;
|
|
435
|
+
institutionCount: number | null;
|
|
436
|
+
officeCount: number | null;
|
|
437
|
+
branchCount: number | null;
|
|
438
|
+
employeeCount: number | null;
|
|
439
|
+
totalAssetsUSD: number | null;
|
|
440
|
+
totalDepositsUSD: number | null;
|
|
441
|
+
netIncomeUSD: number | null;
|
|
442
|
+
totalEquityUSD: number | null;
|
|
443
|
+
netInterestIncomeUSD: number | null;
|
|
444
|
+
id: string | null;
|
|
445
|
+
};
|
|
446
|
+
/**
|
|
447
|
+
* FDIC industry & state banking-sector ANNUAL aggregates (`/banks/summary`) — the
|
|
448
|
+
* FIRST aggregate/statistical FDIC tool. Exact-key structured inputs (all optional,
|
|
449
|
+
* AND-combined): `year` (→ YEAR filter), `state` (→ STALP filter, ★S2 — STALP NOT
|
|
450
|
+
* PSTALP; accepts a jurisdiction code OR a roll-up code USA/US/OT/PI), `charterClass`
|
|
451
|
+
* (→ CB_SI filter; CB/SI) → the `filters` param; plus `limit`/`offset`/`sortBy`/
|
|
452
|
+
* `sortOrder` (default YEAR DESC → newest aggregate year first). Fixed field
|
|
453
|
+
* projection. NO name/city filter and NEVER a `search=` param. Consumes the IDENTICAL
|
|
454
|
+
* fetch → 3-envelope guard → pagination machinery as tools 1–4.
|
|
455
|
+
*
|
|
456
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1; live YEAR:2023 →
|
|
457
|
+
* 121, stable across offset); the 3-envelope drift-guard makes the ONLY honest empty
|
|
458
|
+
* `200 + total:0 + data:[]`, everything else THROWS (P2); money (ASSET/DEP/NETINC/EQ/
|
|
459
|
+
* NIM) is $thousands → whole USD ×1000 null-never-0, counts (BANKS/OFFICES/BRANCHES/
|
|
460
|
+
* NUMEMP) pass through un-scaled (P3; a genuine 0 stays 0, absent → null); ★NIM is net
|
|
461
|
+
* interest INCOME (scaled + relabeled netInterestIncomeUSD), NOT the margin ratio (S4);
|
|
462
|
+
* ★scope/isRollup are derived per row from the explicit roll-up STALP set so a roll-up
|
|
463
|
+
* never masquerades as a state (S2); charterClass is derived from CB_SI (S1); a
|
|
464
|
+
* projected field absent from all records → fieldsUnavailable (B); the snapshot build
|
|
465
|
+
* time is disclosed.
|
|
466
|
+
*/
|
|
467
|
+
export declare function industrySummary(args: {
|
|
468
|
+
year?: number;
|
|
469
|
+
state?: string;
|
|
470
|
+
charterClass?: string;
|
|
471
|
+
limit?: number;
|
|
472
|
+
offset?: number;
|
|
473
|
+
sortBy?: string;
|
|
474
|
+
sortOrder?: string;
|
|
475
|
+
}): Promise<MetaBundle>;
|
|
476
|
+
type RatioUnit = "percent" | "usd-thousands";
|
|
477
|
+
type RatioNotReported = "null" | "zero-sentinel-when-CBLR";
|
|
478
|
+
type RatioEntry = {
|
|
479
|
+
code: string;
|
|
480
|
+
outputKey: string;
|
|
481
|
+
label: string;
|
|
482
|
+
unit: RatioUnit;
|
|
483
|
+
notReported: RatioNotReported;
|
|
484
|
+
};
|
|
485
|
+
declare const RATIO_CATALOG: readonly RatioEntry[];
|
|
486
|
+
export { RATIO_CATALOG };
|
|
487
|
+
declare const RATIO_FILTER_FIELDS: ReadonlySet<string>;
|
|
488
|
+
export { RATIO_FILTER_FIELDS };
|
|
489
|
+
/**
|
|
490
|
+
* Build the risk-ratio `filters` string — `cert`→`CERT:<int>` (REQUIRED, numeric →
|
|
491
|
+
* bare) + optional `reportDate`→`REPDTE:<int>` (numeric → bare, a YYYYMMDD quarter-end).
|
|
492
|
+
* Both fields are on RATIO_FILTER_FIELDS (NOT FIN_FILTER_FIELDS, which is {CERT} and
|
|
493
|
+
* would throw on REPDTE — S1). Terms joined with ` AND `. Exported for the fault fixtures.
|
|
494
|
+
*/
|
|
495
|
+
export declare function buildRatioFilters(inp: {
|
|
496
|
+
cert: number;
|
|
497
|
+
reportDate?: number;
|
|
498
|
+
}): string;
|
|
499
|
+
/**
|
|
500
|
+
* ★M1 — detect the Community Bank Leverage Ratio framework via FDIC's OWN `CBLRIND`
|
|
501
|
+
* flag (CBLRIND===1). A CBLR filer does NOT report risk-based capital ratios: FDIC
|
|
502
|
+
* returns RBCRWAJ as a LITERAL 0 sentinel (not null) and RBC1RWAJ as null. Detection is
|
|
503
|
+
* strictly the flag — NO derived/recomputed ratio, NO blanket 0→null. Exported for the
|
|
504
|
+
* fault fixture. (num maps a string/number/null CBLRIND consistently; an absent CBLRIND
|
|
505
|
+
* → null → not CBLR → the ratios pass through verbatim.)
|
|
506
|
+
*/
|
|
507
|
+
export declare function isCblrFramework(rec: Record<string, unknown>): boolean;
|
|
508
|
+
export type FdicRiskRatios = {
|
|
509
|
+
cert: number | null;
|
|
510
|
+
reportDate: number | null;
|
|
511
|
+
cblrFramework: boolean;
|
|
512
|
+
returnOnAssetsPct: number | null;
|
|
513
|
+
preTaxReturnOnAssetsPct: number | null;
|
|
514
|
+
returnOnEquityPct: number | null;
|
|
515
|
+
netInterestMarginPct: number | null;
|
|
516
|
+
efficiencyRatioPct: number | null;
|
|
517
|
+
netChargeOffsToLoansPct: number | null;
|
|
518
|
+
leverageRatioPct: number | null;
|
|
519
|
+
tier1RiskBasedCapitalRatioPct: number | null;
|
|
520
|
+
totalRiskBasedCapitalRatioPct: number | null;
|
|
521
|
+
tier1CapitalUSD: number | null;
|
|
522
|
+
id: string | null;
|
|
523
|
+
};
|
|
524
|
+
/**
|
|
525
|
+
* FDIC counterparty RISK RATIOS for ONE institution by `cert` (`/banks/financials` —
|
|
526
|
+
* the ALREADY-wired endpoint; NO new endpoint constant). Structured inputs: `cert`
|
|
527
|
+
* (REQUIRED → CERT), optional `reportDate` (→ REPDTE, a YYYYMMDD quarter-end), plus
|
|
528
|
+
* `limit`/`offset`/`sortBy` (allowlist {REPDTE,ROA,ROE,RBCRWAJ,EEFFR}, default REPDTE)/
|
|
529
|
+
* `sortOrder` (default DESC → newest quarter first). Consumes the IDENTICAL fetch →
|
|
530
|
+
* 3-envelope guard → pagination machinery as tools 1–5.
|
|
531
|
+
*
|
|
532
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1); the 3-envelope
|
|
533
|
+
* drift-guard makes the ONLY honest empty `200 + total:0 + data:[]`, everything else
|
|
534
|
+
* THROWS (P2); ★P3 percent ratios surfaced VERBATIM via num (null-never-0, NO scale, NO
|
|
535
|
+
* recompute), the ONE $-amount (RBCT1J) via thousandsToUsd → tier1CapitalUSD; ★M1 the
|
|
536
|
+
* CBLR risk-based capital ratios map to null (never the 0 sentinel) with a per-row
|
|
537
|
+
* cblrFramework flag; a projected field absent from all records → fieldsUnavailable (B);
|
|
538
|
+
* the snapshot build time is disclosed.
|
|
539
|
+
*/
|
|
540
|
+
export declare function riskRatios(args: {
|
|
541
|
+
cert: number;
|
|
542
|
+
reportDate?: number;
|
|
543
|
+
limit?: number;
|
|
544
|
+
offset?: number;
|
|
545
|
+
sortBy?: string;
|
|
546
|
+
sortOrder?: string;
|
|
547
|
+
}): Promise<MetaBundle>;
|
|
548
|
+
declare const SOD_FILTER_FIELDS: ReadonlySet<string>;
|
|
549
|
+
export { SOD_FILTER_FIELDS };
|
|
550
|
+
/**
|
|
551
|
+
* Build the /sod `filters` string — `cert`→`CERT:<int>` (numeric → bare), `state`→
|
|
552
|
+
* `STALPBR:"<code>"` (★C118 non-numeric → DOUBLE-QUOTED; Oregon `STALPBR:"OR"` is
|
|
553
|
+
* operator-safe), `year`→`YEAR:<int>` (numeric → bare). All fields on SOD_FILTER_FIELDS
|
|
554
|
+
* (★S1). Terms joined with ` AND `. Returns "" when there is no structured filter clause.
|
|
555
|
+
* Exported for the fault fixtures.
|
|
556
|
+
*/
|
|
557
|
+
export declare function buildSodFilters(inp: {
|
|
558
|
+
cert?: number;
|
|
559
|
+
state?: string;
|
|
560
|
+
year?: number;
|
|
561
|
+
}): string;
|
|
562
|
+
export type FdicBranchDeposit = {
|
|
563
|
+
cert: number | null;
|
|
564
|
+
institutionName: string | null;
|
|
565
|
+
branchNumber: number | null;
|
|
566
|
+
branchName: string | null;
|
|
567
|
+
city: string | null;
|
|
568
|
+
state: string | null;
|
|
569
|
+
zip: string | null;
|
|
570
|
+
address: string | null;
|
|
571
|
+
depositsUSD: number | null;
|
|
572
|
+
year: number | null;
|
|
573
|
+
id: string | null;
|
|
574
|
+
};
|
|
575
|
+
/**
|
|
576
|
+
* FDIC branch-deposit footprint (`/banks/sod`, Summary of Deposits). Structured inputs
|
|
577
|
+
* (all optional, AND-combined; ≥1 recommended): `cert` (→ CERT), `state` (→ STALPBR,
|
|
578
|
+
* ★C118-quoted), `year` (→ YEAR), plus `limit`/`offset`/`sortBy` (allowlist
|
|
579
|
+
* {YEAR,DEPSUMBR}, default YEAR)/`sortOrder` (default DESC → newest snapshot first).
|
|
580
|
+
* Consumes the IDENTICAL fetch → 3-envelope guard → pagination machinery as tools 1–6.
|
|
581
|
+
*
|
|
582
|
+
* HONESTY: EXACT `meta.total` → exact totalAvailable + hasMore (P1; live: CERT 10004 →
|
|
583
|
+
* 74, STALPBR:"OR" → 31093); the 3-envelope drift-guard makes the ONLY honest empty
|
|
584
|
+
* `200 + total:0 + data:[]`, everything else THROWS (P2); ★the /sod false-empty landmine
|
|
585
|
+
* (a bad filter field → silent total:0) is neutralized by the S1 allowlist-by-
|
|
586
|
+
* construction; DEPSUMBR is $thousands → whole USD ×1000 null-never-0 (P3; a genuine 0
|
|
587
|
+
* stays 0, absent → null); a projected field absent from all records → fieldsUnavailable
|
|
588
|
+
* (B); the DISTINCT annual snapshot build time is disclosed.
|
|
589
|
+
*/
|
|
590
|
+
export declare function branchDeposits(args: {
|
|
591
|
+
cert?: number;
|
|
592
|
+
state?: string;
|
|
593
|
+
year?: number;
|
|
594
|
+
limit?: number;
|
|
595
|
+
offset?: number;
|
|
596
|
+
sortBy?: string;
|
|
597
|
+
sortOrder?: string;
|
|
598
|
+
}): Promise<MetaBundle>;
|
|
599
|
+
//# sourceMappingURL=fdic.d.ts.map
|