package simulation // import ( // "fmt" // "math/rand" // "sort" // "strings" // "github.com/cosmos/cosmos-sdk/codec" // sdk "github.com/cosmos/cosmos-sdk/types" // "github.com/cosmos/cosmos-sdk/types/module" // "github.com/cosmos/cosmos-sdk/x/simulation" // "github.com/kava-labs/kava/x/swap/types" // ) // var ( // //nolint // accs []simulation.Account // consistentPools = [2][2]string{{"ukava", "usdx"}, {"bnb", "xrp"}} // ) // // GenSwapFee generates a random SwapFee in range [0.01, 1.00] // func GenSwapFee(r *rand.Rand) sdk.Dec { // min := int(1) // max := int(100) // percentage := int64(r.Intn(int(max)-min) + min) // return sdk.NewDec(percentage).Quo(sdk.NewDec(100)) // } // // GenAllowedPools generates random allowed pools // func GenAllowedPools(r *rand.Rand) types.AllowedPools { // var pools types.AllowedPools // // Generate a set [1, 10] of random pools // numRandPools := (r.Intn(10) + 1) // for i := 0; i < numRandPools; i++ { // tokenA, tokenB := genTokenDenoms(r) // for strings.Compare(tokenA, tokenB) == 0 { // tokenA, tokenB = genTokenDenoms(r) // } // newPool := types.NewAllowedPool(tokenA, tokenB) // pools = append(pools, newPool) // } // // Append consistent pools // for i := 0; i < len(consistentPools); i++ { // tokenA := consistentPools[i][0] // tokenB := consistentPools[i][1] // newPool := types.NewAllowedPool(tokenA, tokenB) // pools = append(pools, newPool) // } // return pools // } // func genTokenDenoms(r *rand.Rand) (string, string) { // tokenA := genTokenDenom(r) // tokenB := genTokenDenom(r) // for strings.Compare(tokenA, tokenB) == 0 { // tokenA = genTokenDenom(r) // } // tokens := []string{tokenA, tokenB} // sort.Strings(tokens) // return tokens[0], tokens[1] // } // func genTokenDenom(r *rand.Rand) string { // denom := strings.ToLower(simulation.RandStringOfLength(r, 3)) // for err := sdk.ValidateDenom(denom); err != nil; { // denom = strings.ToLower(simulation.RandStringOfLength(r, 3)) // } // return denom // } // // RandomizedGenState generates a random GenesisState // func RandomizedGenState(simState *module.SimulationState) { // accs = simState.Accounts // swapGenesis := loadRandomSwapGenState(simState) // fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, swapGenesis)) // simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(swapGenesis) // } // func loadRandomSwapGenState(simState *module.SimulationState) types.GenesisState { // pools := GenAllowedPools(simState.Rand) // swapFee := GenSwapFee(simState.Rand) // swapGenesis := types.GenesisState{ // Params: types.Params{ // AllowedPools: pools, // SwapFee: swapFee, // }, // } // if err := swapGenesis.Validate(); err != nil { // panic(err) // } // return swapGenesis // }