1package emission23import (4 ufmt "gno.land/p/nt/ufmt/v0"5)67func assertDefaultInitialPoolExists() {8 if defaultInitialPoolChecker == nil {9 panic(makeErrorWithDetails(errInvalidEmissionStart, "default initial pool checker is not registered"))10 }1112 if !defaultInitialPoolChecker(DefaultInitialPoolTierPath) {13 panic(makeErrorWithDetails(errInvalidEmissionStart, "default initial pool does not exist: "+DefaultInitialPoolTierPath))14 }15}1617// validateDistributionTarget returns an error if the given distribution target is invalid.18func validateDistributionTarget(target int) error {19 validTargets := map[int]bool{20 LIQUIDITY_STAKER: false,21 DEVOPS: false,22 COMMUNITY_POOL: false,23 GOV_STAKER: false,24 }2526 if _, ok := validTargets[target]; !ok {27 return makeErrorWithDetails(28 errInvalidEmissionTarget,29 ufmt.Sprintf("invalid target(%d)", target),30 )31 }3233 return nil34}3536// assertValidDistributionTarget panics if the given distribution target is invalid.37// Kept for internal invariant checks.38func assertValidDistributionTarget(target int) {39 if err := validateDistributionTarget(target); err != nil {40 panic(err)41 }42}4344// assertValidDistributionPct ensures the sum of all distribution percentages equals 10000 (100%).45// Panics if the sum does not equal exactly 10000 basis points.46func assertValidDistributionPct(liquidityStakerPct, devOpsPct, communityPoolPct, govStakerPct int64) {47 // Validate individual percentages are non-negative and reasonable48 percentages := []int64{liquidityStakerPct, devOpsPct, communityPoolPct, govStakerPct}49 for i, pct := range percentages {50 if pct < 0 {51 panic(makeErrorWithDetails(52 errInvalidEmissionPct,53 ufmt.Sprintf("percentage %d cannot be negative: %d", i+1, pct),54 ))55 }5657 if pct > 10000 {58 panic(makeErrorWithDetails(59 errInvalidEmissionPct,60 ufmt.Sprintf("percentage %d cannot exceed 100%%: %d", i+1, pct),61 ))62 }63 }6465 sum := liquidityStakerPct + devOpsPct + communityPoolPct + govStakerPct66 if sum != 10000 {67 panic(makeErrorWithDetails(68 errInvalidEmissionPct,69 ufmt.Sprintf("sum of percentages must be 10000, got %d", sum),70 ))71 }72}73Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.