package simulation

import (
	"math/rand"

	"github.com/cosmos/cosmos-sdk/baseapp"
	sdk "github.com/cosmos/cosmos-sdk/types"
	simtypes "github.com/cosmos/cosmos-sdk/types/simulation"

	"<%= ModulePath %>/x/<%= ModuleName %>/keeper"
	"<%= ModulePath %>/x/<%= ModuleName %>/types"
)

func SimulateMsg<%= MsgName.PascalCase %>(
	ak types.AuthKeeper,
	bk types.BankKeeper,
	k keeper.Keeper,
	txGen client.TxConfig,
) simtypes.Operation {
	return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,
	) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {
		simAccount, _ := simtypes.RandomAcc(r, accs)
		msg := &types.Msg<%= MsgName.PascalCase %>{
			<%= MsgSigner.UpperCamel %>: simAccount.Address.String(),
		}

		// TODO: Handle the <%= MsgName.PascalCase %> simulation

		return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "<%= MsgName.PascalCase %> simulation not implemented"), nil, nil
	}
}
