package v1 import ( "strings" "time" ufmt "gno.land/p/nt/ufmt/v0" u256 "gno.land/p/gnoswap/uint256" "gno.land/r/gnoswap/pool" ) // assertIsNotExpired ensures the transaction deadline has not passed. func assertIsNotExpired(deadline int64) { now := time.Now().Unix() if now > deadline { panic(makeErrorWithDetails( errExpired, ufmt.Sprintf("transaction too old, now(%d) > deadline(%d)", now, deadline), )) } } func assertIsValidSqrtPriceLimitX96(sqrtPriceLimitX96 string) { if sqrtPriceLimitX96 == "" { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("invalid sqrtPriceLimitX96: %s", sqrtPriceLimitX96), )) } _, err := u256.FromDecimal(sqrtPriceLimitX96) if err != nil { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("invalid sqrtPriceLimitX96: %s", sqrtPriceLimitX96), )) } } func assertIsValidSingleSwapRouteArrPath(routePaths, inputToken, outputToken string) { if routePaths == "" { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("invalid route: %s", routePaths), )) } if strings.Count(routePaths, ",") > 0 { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("invalid routePaths: %s", routePaths), )) } if strings.Count(routePaths, POOL_SEPARATOR) > 0 { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("invalid routePaths: %s", routePaths), )) } assertIsValidRoutePaths(routePaths, inputToken, outputToken) } func assertIsValidRoutePaths(routePaths, inputToken, outputToken string) { err := validateRoutePaths(routePaths, inputToken, outputToken) if err != nil { panic(err) } } func assertIsExistsPools(routePathArr string) { poolPaths, err := parsePoolPathsByRoutePathArr(routePathArr) if err != nil { panic(err) } for _, poolPath := range poolPaths { if !pool.ExistsPoolPath(poolPath) { panic(makeErrorWithDetails( errInvalidInput, ufmt.Sprintf("pool does not exist: %s", poolPath), )) } } } func assertIsRouterImplementation(caller address) { if caller != routerImplAddr { panic(makeErrorWithDetails( errUnAuthorizedCaller, ufmt.Sprintf("caller %s is not router implementation(%s)", caller, routerImplAddr), )) } }