tryClaim
Claims the shared prompt surface for type.
A busy surface is waited out for up to a second: a claim that never becomes a prompt is released within milliseconds, so the wait turns most collisions into a granted claim. The gap cannot clear in that window, so it refuses immediately. Do not block latency-sensitive UI on the result.
Return
false when the surface is still held after the wait, or the gap for type has not elapsed. Callers must not show their prompt, and must release an unused claim with onClaimCancelled.