Symptom
Anchoring a TypeScript static class property whose value is an arrow function fails to resolve:
error: hubs/staking.md :: packages/shared-resources/src/utils/NansenPointsTiers.ts > NansenPointsTiersUtils > getTierStakingBalanceRequirement
`getTierStakingBalanceRequirement` not found (claim has no stored hash to match against)
Repro (minimal)
export class Utils {
static works(x: number): number { // resolves: Utils > works
return x
}
static fails = (x: number): number => { // "not found": Utils > fails
return x
}
}
file.ts > Utils > works resolves; file.ts > Utils > fails errors. surf suggest on a file whose class members are all arrow properties reports "no unanchored public symbols found", so the members are invisible to suggest too.
Real-world hit
Dogfooding on the superapp monorepo (surf 0.8.0), writing a staking hub:
packages/shared-resources/src/utils/StakeUtils.ts > StakeUtils > parse — static parse(...) {} method syntax → resolves fine.
packages/shared-resources/src/utils/NansenPointsTiers.ts > NansenPointsTiersUtils > getTierStakingBalanceRequirement — static getTierStakingBalanceRequirement = (tier) => {...} property syntax → unresolvable.
Same class shape, same call sites, only the declaration syntax differs. The static-arrow-property style is common in TS codebases (it's what Biome/TS class-property idiom produces), so hub authors will hit this on exactly the utility classes they most want to anchor.
Prior art
Workaround
Anchor the whole class (file.ts > NansenPointsTiersUtils) — works but over-scopes the span, so any edit to unrelated members re-triggers verification.
Symptom
Anchoring a TypeScript static class property whose value is an arrow function fails to resolve:
Repro (minimal)
file.ts > Utils > worksresolves;file.ts > Utils > failserrors.surf suggeston a file whose class members are all arrow properties reports "no unanchored public symbols found", so the members are invisible to suggest too.Real-world hit
Dogfooding on the superapp monorepo (surf 0.8.0), writing a staking hub:
packages/shared-resources/src/utils/StakeUtils.ts > StakeUtils > parse—static parse(...) {}method syntax → resolves fine.packages/shared-resources/src/utils/NansenPointsTiers.ts > NansenPointsTiersUtils > getTierStakingBalanceRequirement—static getTierStakingBalanceRequirement = (tier) => {...}property syntax → unresolvable.Same class shape, same call sites, only the declaration syntax differs. The static-arrow-property style is common in TS codebases (it's what Biome/TS class-property idiom produces), so hub authors will hit this on exactly the utility classes they most want to anchor.
Prior art
Workaround
Anchor the whole class (
file.ts > NansenPointsTiersUtils) — works but over-scopes the span, so any edit to unrelated members re-triggers verification.