[{"data":1,"prerenderedAt":1226},["ShallowReactive",2],{"content-\u002Fdocs\u002Fapi\u002Fshared-types":3},{"id":4,"title":5,"body":6,"description":16,"extension":1219,"meta":1220,"navigation":1221,"path":1222,"seo":1223,"stem":1224,"__hash__":1225},"docs\u002Fdocs\u002Fapi\u002Fshared-types.md","Types",{"type":7,"value":8,"toc":1217},"minimark",[9,13,17,416,419,1213],[10,11,5],"h1",{"id":12},"types",[14,15,16],"p",{},"All types listed below are exported from the core entry:",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-ts shiki shiki-themes github-light github-dark","import type {\n  AbstractSchema,\n  ApiErrorDetails,\n  ApiErrorEnvelope,\n  ArrayItem,\n  ArrayPath,\n  CoercionEntry,\n  CoercionRegistry,\n  CoercionResult,\n  CurrentValueContext,\n  CurrentValueWithContext,\n  CustomDirectiveRegisterAssignerFn,\n  DeepPartial,\n  DefaultValuesResponse,\n  DefaultValuesShape,\n  FieldState,\n  FieldStateLeaf,\n  FieldStateMap,\n  FieldStateMapEntry,\n  FlatPath,\n  FormErrorRecord,\n  FormErrorsSurface,\n  FormKey,\n  FormMeta,\n  FormStorage,\n  FormStorageKind,\n  GenericForm,\n  HandleSubmit,\n  HistoryConfig,\n  IsTuple,\n  MetaTrackerValue,\n  NestedReadType,\n  NestedType,\n  OnError,\n  OnInvalidSubmitPolicy,\n  OnSubmit,\n  ParseApiErrorsOptions,\n  ParseApiErrorsResult,\n  PendingValidationStatus,\n  PersistConfig,\n  PersistConfigOptions,\n  PersistIncludeMode,\n  ReactiveValidationStatus,\n  RegisterDirective,\n  RegisterFlatPath,\n  RegisterTransform,\n  RegisterValue,\n  SetValueCallback,\n  SetValuePayload,\n  SettledValidationStatus,\n  SlimPrimitiveKind,\n  SubmitHandler,\n  Unset,\n  UseFormReturnType,\n  UseFormConfiguration,\n  ValidateOn,\n  ValidateOnConfig,\n  ValidationError,\n  ValidationResponse,\n  ValidationResponseWithoutValue,\n  WriteShape,\n} from 'attaform'\n","ts","",[25,26,27,43,49,55,61,67,73,79,85,91,97,103,109,115,121,127,133,139,145,151,157,163,169,175,181,187,193,199,205,211,217,223,229,235,241,247,253,259,265,271,277,283,289,295,301,307,313,319,325,331,337,343,349,355,361,367,373,379,385,391,397,403],"code",{"__ignoreMap":23},[28,29,32,36,39],"span",{"class":30,"line":31},"line",1,[28,33,35],{"class":34},"szBVR","import",[28,37,38],{"class":34}," type",[28,40,42],{"class":41},"sVt8B"," {\n",[28,44,46],{"class":30,"line":45},2,[28,47,48],{"class":41},"  AbstractSchema,\n",[28,50,52],{"class":30,"line":51},3,[28,53,54],{"class":41},"  ApiErrorDetails,\n",[28,56,58],{"class":30,"line":57},4,[28,59,60],{"class":41},"  ApiErrorEnvelope,\n",[28,62,64],{"class":30,"line":63},5,[28,65,66],{"class":41},"  ArrayItem,\n",[28,68,70],{"class":30,"line":69},6,[28,71,72],{"class":41},"  ArrayPath,\n",[28,74,76],{"class":30,"line":75},7,[28,77,78],{"class":41},"  CoercionEntry,\n",[28,80,82],{"class":30,"line":81},8,[28,83,84],{"class":41},"  CoercionRegistry,\n",[28,86,88],{"class":30,"line":87},9,[28,89,90],{"class":41},"  CoercionResult,\n",[28,92,94],{"class":30,"line":93},10,[28,95,96],{"class":41},"  CurrentValueContext,\n",[28,98,100],{"class":30,"line":99},11,[28,101,102],{"class":41},"  CurrentValueWithContext,\n",[28,104,106],{"class":30,"line":105},12,[28,107,108],{"class":41},"  CustomDirectiveRegisterAssignerFn,\n",[28,110,112],{"class":30,"line":111},13,[28,113,114],{"class":41},"  DeepPartial,\n",[28,116,118],{"class":30,"line":117},14,[28,119,120],{"class":41},"  DefaultValuesResponse,\n",[28,122,124],{"class":30,"line":123},15,[28,125,126],{"class":41},"  DefaultValuesShape,\n",[28,128,130],{"class":30,"line":129},16,[28,131,132],{"class":41},"  FieldState,\n",[28,134,136],{"class":30,"line":135},17,[28,137,138],{"class":41},"  FieldStateLeaf,\n",[28,140,142],{"class":30,"line":141},18,[28,143,144],{"class":41},"  FieldStateMap,\n",[28,146,148],{"class":30,"line":147},19,[28,149,150],{"class":41},"  FieldStateMapEntry,\n",[28,152,154],{"class":30,"line":153},20,[28,155,156],{"class":41},"  FlatPath,\n",[28,158,160],{"class":30,"line":159},21,[28,161,162],{"class":41},"  FormErrorRecord,\n",[28,164,166],{"class":30,"line":165},22,[28,167,168],{"class":41},"  FormErrorsSurface,\n",[28,170,172],{"class":30,"line":171},23,[28,173,174],{"class":41},"  FormKey,\n",[28,176,178],{"class":30,"line":177},24,[28,179,180],{"class":41},"  FormMeta,\n",[28,182,184],{"class":30,"line":183},25,[28,185,186],{"class":41},"  FormStorage,\n",[28,188,190],{"class":30,"line":189},26,[28,191,192],{"class":41},"  FormStorageKind,\n",[28,194,196],{"class":30,"line":195},27,[28,197,198],{"class":41},"  GenericForm,\n",[28,200,202],{"class":30,"line":201},28,[28,203,204],{"class":41},"  HandleSubmit,\n",[28,206,208],{"class":30,"line":207},29,[28,209,210],{"class":41},"  HistoryConfig,\n",[28,212,214],{"class":30,"line":213},30,[28,215,216],{"class":41},"  IsTuple,\n",[28,218,220],{"class":30,"line":219},31,[28,221,222],{"class":41},"  MetaTrackerValue,\n",[28,224,226],{"class":30,"line":225},32,[28,227,228],{"class":41},"  NestedReadType,\n",[28,230,232],{"class":30,"line":231},33,[28,233,234],{"class":41},"  NestedType,\n",[28,236,238],{"class":30,"line":237},34,[28,239,240],{"class":41},"  OnError,\n",[28,242,244],{"class":30,"line":243},35,[28,245,246],{"class":41},"  OnInvalidSubmitPolicy,\n",[28,248,250],{"class":30,"line":249},36,[28,251,252],{"class":41},"  OnSubmit,\n",[28,254,256],{"class":30,"line":255},37,[28,257,258],{"class":41},"  ParseApiErrorsOptions,\n",[28,260,262],{"class":30,"line":261},38,[28,263,264],{"class":41},"  ParseApiErrorsResult,\n",[28,266,268],{"class":30,"line":267},39,[28,269,270],{"class":41},"  PendingValidationStatus,\n",[28,272,274],{"class":30,"line":273},40,[28,275,276],{"class":41},"  PersistConfig,\n",[28,278,280],{"class":30,"line":279},41,[28,281,282],{"class":41},"  PersistConfigOptions,\n",[28,284,286],{"class":30,"line":285},42,[28,287,288],{"class":41},"  PersistIncludeMode,\n",[28,290,292],{"class":30,"line":291},43,[28,293,294],{"class":41},"  ReactiveValidationStatus,\n",[28,296,298],{"class":30,"line":297},44,[28,299,300],{"class":41},"  RegisterDirective,\n",[28,302,304],{"class":30,"line":303},45,[28,305,306],{"class":41},"  RegisterFlatPath,\n",[28,308,310],{"class":30,"line":309},46,[28,311,312],{"class":41},"  RegisterTransform,\n",[28,314,316],{"class":30,"line":315},47,[28,317,318],{"class":41},"  RegisterValue,\n",[28,320,322],{"class":30,"line":321},48,[28,323,324],{"class":41},"  SetValueCallback,\n",[28,326,328],{"class":30,"line":327},49,[28,329,330],{"class":41},"  SetValuePayload,\n",[28,332,334],{"class":30,"line":333},50,[28,335,336],{"class":41},"  SettledValidationStatus,\n",[28,338,340],{"class":30,"line":339},51,[28,341,342],{"class":41},"  SlimPrimitiveKind,\n",[28,344,346],{"class":30,"line":345},52,[28,347,348],{"class":41},"  SubmitHandler,\n",[28,350,352],{"class":30,"line":351},53,[28,353,354],{"class":41},"  Unset,\n",[28,356,358],{"class":30,"line":357},54,[28,359,360],{"class":41},"  UseFormReturnType,\n",[28,362,364],{"class":30,"line":363},55,[28,365,366],{"class":41},"  UseFormConfiguration,\n",[28,368,370],{"class":30,"line":369},56,[28,371,372],{"class":41},"  ValidateOn,\n",[28,374,376],{"class":30,"line":375},57,[28,377,378],{"class":41},"  ValidateOnConfig,\n",[28,380,382],{"class":30,"line":381},58,[28,383,384],{"class":41},"  ValidationError,\n",[28,386,388],{"class":30,"line":387},59,[28,389,390],{"class":41},"  ValidationResponse,\n",[28,392,394],{"class":30,"line":393},60,[28,395,396],{"class":41},"  ValidationResponseWithoutValue,\n",[28,398,400],{"class":30,"line":399},61,[28,401,402],{"class":41},"  WriteShape,\n",[28,404,406,409,412],{"class":30,"line":405},62,[28,407,408],{"class":41},"} ",[28,410,411],{"class":34},"from",[28,413,415],{"class":414},"sZZnC"," 'attaform'\n",[14,417,418],{},"The ones you'll touch most:",[420,421,422,432,452,483,539,588,606,633,669,679,697,707,717,782,801,833,852,888,908,938,961,980,1018,1036,1067,1121,1145,1161,1173,1188],"ul",{},[423,424,425,431],"li",{},[426,427,428],"strong",{},[25,429,430],{},"FlatPath\u003CForm>"," — union of every addressable path for the\nform. Dotted strings.",[423,433,434,439,440,443,444,447,448,451],{},[426,435,436],{},[25,437,438],{},"NestedType\u003CForm, Path>"," — the strict leaf type at ",[25,441,442],{},"Path",".\nUsed for write-side APIs (",[25,445,446],{},"setValue"," value argument) and for\nthe path-form callback's ",[25,449,450],{},"prev"," (the runtime auto-defaults the\nslot before invoking the callback).",[423,453,454,459,460,463,464,467,468,471,472,471,475,478,479,482],{},[426,455,456],{},[25,457,458],{},"NestedReadType\u003CForm, Path>"," — the read-side leaf type. Walks\nthe path tracking whether a numeric segment was crossed; once\ntainted, all subsequent results are ",[25,461,462],{},"T | undefined",". Tuple\npositions stay strict. Composed with ",[25,465,466],{},"WriteShape\u003C...>"," (see\nbelow) at the call site for ",[25,469,470],{},"register",", ",[25,473,474],{},"values",[25,476,477],{},"fields",",\nand ",[25,480,481],{},"toRef",".",[423,484,485,490,491,494,495,498,499,502,503,506,507,510,511,471,514,471,517,520,521,510,524,471,527,530,531,534,535,538],{},[426,486,487],{},[25,488,489],{},"WriteShape\u003CT>"," — recursive mapped type that widens primitive-\nliteral leaves to their primitive supertype. ",[25,492,493],{},"'red' | 'green'"," →\n",[25,496,497],{},"string","; ",[25,500,501],{},"42"," → ",[25,504,505],{},"number","; nested objects recurse; tuples\npreserve positions; unbounded arrays widen elements; ",[25,508,509],{},"Date",",\n",[25,512,513],{},"RegExp",[25,515,516],{},"Map",[25,518,519],{},"Set",", and functions pass through unchanged.\nApplied to read surfaces that observe storage (",[25,522,523],{},"form.values",[25,525,526],{},"form.fields.\u003Cpath>.value",[25,528,529],{},"register.innerRef","). NOT applied\nto ",[25,532,533],{},"handleSubmit"," or ",[25,536,537],{},"validate*()"," payloads — those run after\nvalidation, so the strict zod-inferred shape is honest there.",[423,540,541,546,547,549,550,553,554,471,556,510,558,471,561,564,565,471,568,570,571,574,575,471,577,579,580,583,584,587],{},[426,542,543],{},[25,544,545],{},"DefaultValuesShape\u003CT>"," — ",[25,548,489],{}," plus the ",[25,551,552],{},"unset","\nsentinel admitted at every primitive leaf (",[25,555,497],{},[25,557,505],{},[25,559,560],{},"boolean",[25,562,563],{},"bigint","). Applied to the write surfaces that accept\nintent (",[25,566,567],{},"defaultValues",[25,569,446],{},"'s value, ",[25,572,573],{},"reset","'s argument,\nfield-array helpers). Non-primitive leaves (",[25,576,509],{},[25,578,513],{},",\netc.) stay strict — ",[25,581,582],{},"defaultValues: { joinedAt: unset }"," against\n",[25,585,586],{},"z.date()"," is a type error.",[423,589,590,595,596,599,600,602,603,482],{},[426,591,592],{},[25,593,594],{},"Unset"," — the brand-typed ",[25,597,598],{},"unique symbol"," flavor of the\n",[25,601,552],{}," sentinel for type-level usage. The runtime symbol is\nexported alongside under the same name from ",[25,604,605],{},"attaform",[423,607,608,546,613,616,617,620,621,624,625,628,629,632],{},[426,609,610],{},[25,611,612],{},"IsTuple\u003CT>",[25,614,615],{},"true"," for tuples (literal ",[25,618,619],{},"length","), ",[25,622,623],{},"false","\nfor unbounded arrays (",[25,626,627],{},"length: number","). Used internally by\n",[25,630,631],{},"NestedReadType"," to decide whether to taint past a numeric\nsegment.",[423,634,635,640,641,644,645,648,649,651,652,655,656,658,659,661,662,665,666,482],{},[426,636,637],{},[25,638,639],{},"SetValuePayload\u003CWrite, Read = Write>"," — union of ",[25,642,643],{},"Write"," and\n",[25,646,647],{},"SetValueCallback\u003CRead>",". The whole-form ",[25,650,446],{}," parameterises\nboth to ",[25,653,654],{},"WriteShape\u003CForm>"," (",[25,657,450],{}," matches ",[25,660,523],{},"); the\npath-form parameterises ",[25,663,664],{},"Read"," to ",[25,667,668],{},"NonNullable\u003CNestedType\u003CF, P>>",[423,670,671,546,675,678],{},[426,672,673],{},[25,674,647],{},[25,676,677],{},"(prev: Read) => Read",". The\ncallback's return shape matches its input shape; runtime\nmergeStructural completes any structural gaps.",[423,680,681,546,686,688,689,692,693,696],{},[426,682,683],{},[25,684,685],{},"ArrayPath\u003CForm>",[25,687,430],{}," filtered to array-leaf\npaths. Used by ",[25,690,691],{},"append"," \u002F ",[25,694,695],{},"remove"," \u002F etc.",[423,698,699,704,705,482],{},[426,700,701],{},[25,702,703],{},"ArrayItem\u003CForm, Path>"," — the element type of the array at\n",[25,706,442],{},[423,708,709,546,714,482],{},[426,710,711],{},[25,712,713],{},"ValidationError",[25,715,716],{},"{ path: readonly Segment[]; message: string; formKey: FormKey }",[423,718,719,724,725,728,729,692,732,735,736,620,739,692,742,692,745,748,749,752,753,692,756,655,759,620,762,765,766,620,769,471,772,471,775,778,779,781],{},[426,720,721],{},[25,722,723],{},"FieldStateLeaf\u003CValue>"," — runtime shape of a single\n",[25,726,727],{},"form.fields.\u003Cpath>"," read: ",[25,730,731],{},"value",[25,733,734],{},"original"," (typed\n",[25,737,738],{},"Value",[25,740,741],{},"pristine",[25,743,744],{},"dirty",[25,746,747],{},"blank"," (booleans), ",[25,750,751],{},"focused"," \u002F\n",[25,754,755],{},"blurred",[25,757,758],{},"touched",[25,760,761],{},"boolean | null",[25,763,764],{},"errors","\n(",[25,767,768],{},"readonly ValidationError[]",[25,770,771],{},"path",[25,773,774],{},"isConnected",[25,776,777],{},"updatedAt",".\nSchema fields with names matching these leaf keys at depth ≥ 2\nare shadowed by the leaf — bracket-access via ",[25,780,481],{}," is the\nworkaround.",[423,783,784,789,790,793,794,471,796,471,798,800],{},[426,785,786],{},[25,787,788],{},"FieldStateMap\u003CForm>"," — the recursive type behind\n",[25,791,792],{},"form.fields",". Top-level fields and nested objects are\nreachable via dot-descent; leaf keys (",[25,795,731],{},[25,797,744],{},[25,799,764],{},",\n…) read off the FieldStateLeaf at the current path.",[423,802,803,808,809,692,812,752,815,818,819,821,822,825,826,655,829,832],{},[426,804,805],{},[25,806,807],{},"FieldState\u003CValue = unknown>"," — richer per-field type kept for\ntype-level utility code: ",[25,810,811],{},"currentValue",[25,813,814],{},"originalValue",[25,816,817],{},"previousValue"," (typed ",[25,820,738],{},"), the same flag set as\n",[25,823,824],{},"FieldStateLeaf",", plus ",[25,827,828],{},"meta",[25,830,831],{},"MetaTrackerValue","). Returned by no\ncurrent public API directly; useful when type-narrowing or\nbuilding higher-order helpers.",[423,834,835,546,840,843,844,847,848,851],{},[426,836,837],{},[25,838,839],{},"ValidateOn",[25,841,842],{},"'change' | 'blur' | 'submit'",". The trigger for\nper-field validation. Default ",[25,845,846],{},"'change'",". ",[25,849,850],{},"'submit'"," opts out of\nlive validation entirely (submit is the only validator).",[423,853,854,859,860,863,864,867,868,870,871,874,875,878,879,881,882,692,885,887],{},[426,855,856],{},[25,857,858],{},"ValidateOnConfig"," — discriminated union over ",[25,861,862],{},"validateOn"," that\nenforces ",[25,865,866],{},"debounceMs"," is only valid with ",[25,869,846],{},". The public\n",[25,872,873],{},"useForm"," signature intersects ",[25,876,877],{},"UseFormConfiguration"," with this so\npairing ",[25,880,866],{}," with ",[25,883,884],{},"'blur'",[25,886,850],{}," is a TS error\nrather than a silent runtime drop.",[423,889,890,546,895,898,899,902,903,482],{},[426,891,892],{},[25,893,894],{},"RegisterTransform",[25,896,897],{},"(value: unknown) => unknown",". Element of\n",[25,900,901],{},"register(path, { transforms: [...] })",". Generic-erased so a\npersonal library of transforms plugs into any path. See\n",[904,905,907],"a",{"href":906},"\u002Fdocs\u002Fapi\u002Fcore#transforms--registerpath--transforms-","Transforms",[423,909,910,546,915,918,919,471,922,925,926,929,930,933,934,937],{},[426,911,912],{},[25,913,914],{},"CoercionEntry\u003CI, O>",[25,916,917],{},"{ input: I; output: O; transform: (value) => CoercionResult\u003CO> }","\nwhere ",[25,920,921],{},"I",[25,923,924],{},"O"," extend ",[25,927,928],{},"SlimPrimitiveKind",". One coercion rule. Author\nwith ",[25,931,932],{},"defineCoercion(...)"," for narrowed ",[25,935,936],{},"transform"," parameter typing.",[423,939,940,546,945,948,949,952,953,956,957,960],{},[426,941,942],{},[25,943,944],{},"CoercionRegistry",[25,946,947],{},"readonly CoercionEntry[]",". The shape\nconsumed by ",[25,950,951],{},"useForm({ coerce })"," and ",[25,954,955],{},"defaults.coerce",". Spread\n",[25,958,959],{},"defaultCoercionRules"," to extend rather than replace.",[423,962,963,546,968,971,972,975,976,979],{},[426,964,965],{},[25,966,967],{},"CoercionResult\u003CO>",[25,969,970],{},"{ coerced: true; value: O } | { coerced: false }",".\nReturned by a ",[25,973,974],{},"CoercionEntry.transform",". Returning ",[25,977,978],{},"{ coerced: false }","\nsignals \"this rule doesn't apply\" — the write passes through\nuntouched.",[423,981,982,987,988,991,992,471,995,471,998,471,1001,1004,1005,471,1008,1011,1012,1014,1015,482],{},[426,983,984],{},[25,985,986],{},"FormMeta"," — the shape of ",[25,989,990],{},"form.meta",": form-level flags\n(",[25,993,994],{},"isDirty",[25,996,997],{},"isValid",[25,999,1000],{},"isSubmitting",[25,1002,1003],{},"isValidating","), counters\n(",[25,1006,1007],{},"submitCount",[25,1009,1010],{},"historySize","), the flat ",[25,1013,764],{}," aggregate, and\nthe per-mount ",[25,1016,1017],{},"instanceId",[423,1019,1020,987,1025,1028,1029,1032,1033,482],{},[426,1021,1022],{},[25,1023,1024],{},"FormErrorsSurface\u003CF>",[25,1026,1027],{},"form.errors",". Drillable\ncallable Proxy; per-leaf ",[25,1030,1031],{},"ValidationError[] | undefined",". Replaces\nthe pre-0.14 flat-record shape ",[25,1034,1035],{},"Partial\u003CRecord\u003CFlatPath\u003CF>, ValidationError[]>>",[423,1037,1038,1043,1044,471,1047,471,1050,510,1053,471,1056,471,1059,1062,1063,482],{},[426,1039,1040],{},[25,1041,1042],{},"AbstractSchema"," — the schema contract (6 methods:\n",[25,1045,1046],{},"fingerprint",[25,1048,1049],{},"getDefaultValues",[25,1051,1052],{},"getDefaultAtPath",[25,1054,1055],{},"getSchemasAtPath",[25,1057,1058],{},"validateAtPath",[25,1060,1061],{},"getSlimPrimitiveTypesAtPath",").\nSee ",[904,1064,1066],{"href":1065},"\u002Fdocs\u002Frecipes\u002Fcustom-adapter","custom-adapter recipe",[423,1068,1069,1073,1074,1077,1078,471,1081,510,1084,471,1087,471,1090,471,1093,471,1096,510,1099,471,1102,471,1105,471,1108,471,1111,471,1114,1117,1118,482],{},[426,1070,1071],{},[25,1072,928],{}," — the set of primitive ",[25,1075,1076],{},"typeof","-style\nkinds the slim-write contract recognises: ",[25,1079,1080],{},"'string'",[25,1082,1083],{},"'number'",[25,1085,1086],{},"'boolean'",[25,1088,1089],{},"'bigint'",[25,1091,1092],{},"'date'",[25,1094,1095],{},"'null'",[25,1097,1098],{},"'undefined'",[25,1100,1101],{},"'object'",[25,1103,1104],{},"'array'",[25,1106,1107],{},"'symbol'",[25,1109,1110],{},"'function'",[25,1112,1113],{},"'map'",[25,1115,1116],{},"'set'",".\nReturned by ",[25,1119,1120],{},"AbstractSchema.getSlimPrimitiveTypesAtPath(path)",[423,1122,1123,1127,1128,510,1130,471,1133,471,1135,471,1138,1140,1141,1144],{},[426,1124,1125],{},[25,1126,831],{}," — per-leaf metadata: ",[25,1129,777],{},[25,1131,1132],{},"rawValue",[25,1134,774],{},[25,1136,1137],{},"formKey",[25,1139,771],{},". Read from\n",[25,1142,1143],{},"FieldState.meta"," when type-narrowing through that surface.",[423,1146,1147,1152,1153,1156,1157,1160],{},[426,1148,1149],{},[25,1150,1151],{},"RegisterDirective"," — the union of every ",[25,1154,1155],{},"v-register","\ndirective variant (text input, select, checkbox, radio, dynamic).\nMost consumers use this only when augmenting Vue's ",[25,1158,1159],{},"GlobalDirectives","\nmanually; the Nuxt module wires it automatically.",[423,1162,1163,1168,1169,1172],{},[426,1164,1165],{},[25,1166,1167],{},"CustomDirectiveRegisterAssignerFn"," — function shape for\ncustom assigners installed via the exported ",[25,1170,1171],{},"assignKey"," symbol.",[423,1174,1175,1180,1181,1184,1185,1187],{},[426,1176,1177],{},[25,1178,1179],{},"RegisterFlatPath\u003CForm>"," — the path-constraint type used by\n",[25,1182,1183],{},"register(path)",". Consumers wrapping ",[25,1186,470],{}," in higher-order\nhelpers can re-use it to type their wrapper's path parameter.",[423,1189,1190,1195,1196,510,1199,471,1202,471,1205,1208,1209,482],{},[426,1191,1192],{},[25,1193,1194],{},"FormStorage"," — the storage contract (4 methods: ",[25,1197,1198],{},"getItem",[25,1200,1201],{},"setItem",[25,1203,1204],{},"removeItem",[25,1206,1207],{},"listKeys","). See\n",[904,1210,1212],{"href":1211},"\u002Fdocs\u002Frecipes\u002Fpersistence","persistence recipe",[1214,1215,1216],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":23,"searchDepth":45,"depth":45,"links":1218},[],"md",{},true,"\u002Fdocs\u002Fapi\u002Fshared-types",{"title":5,"description":16},"docs\u002Fapi\u002Fshared-types","UVaZNO9W7V7M6Ml-MKkY9ceKja67HLJ4abRQWYbHwDo",1777934136102]