You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: boot_levels.go
    path of file: ./repos/corteza/extra/server-discovery/app
    
    the code of the file until where you have to start completion: package app

import (
	"context"
	"fmt"
	"github.com/cortezaproject/corteza/extra/server-discovery/indexer"
	"github.com/cortezaproject/corteza/extra/server-discovery/pkg/auth"
	"github.com/cortezaproject/corteza/extra/server-discovery/pkg/healthcheck"
	"github.com/cortezaproject/corteza/extra/server-discovery/searcher"
)

const (
	bootLevelWaiting = iota
	bootLevelSetup
	bootLevelStoreInitialized
	bootLevelProvisioned
	bootLevelServicesInitialized
	bootLevelActivated
)

// Setup configures all required services
func (app *CortezaDiscoveryApp) Setup() (err error) {
	app.lvl = bootLevelSetup

	hcd := healthcheck.Defaults()
	if app.Opt.Searcher.Enabled {
		hcd.Add(searcher.Healthcheck, "OpenSearch")
	}

	return nil
}

// InitStore initializes open search store and runs upgrade procedures
func (app *CortezaDiscoveryApp) InitStore(ctx context.C
    
func (app *CortezaDiscoveryApp) InitServices(ctx context.Context) (err error) {
	if app.lvl >= bootLevelServicesInitialized {
		return nil
	}

	if err = app.Provision(ctx); err != nil {
		return err
	}

	if auth.HttpTokenVerifier, err = auth.TokenVerifierMiddlewareWithSecretSigner(string(app.Opt.Searcher.JwtSecret)); err != nil {
		return fmt.Errorf("could not set token verifier")
	}

	if app.Opt.Indexer.Enabled {
		err = indexer.Initialize(ctx, app.Log, indexer.Config{
			Corteza: app.Opt.Corteza,
			ES:      app.Opt.ES,
			Indexer: app.Opt.Indexer,
		})
		if err != nil {
			return
		}
	}

	if app.Opt.Searcher.Enabled {
		err = searcher.Initialize(ctx, app.Log, searcher.Config{
			Corteza:    app.Opt.Corteza,
			ES:         app.Opt.ES,
			HttpServer: app.Opt.HTTPServer,
			Searcher:   app.Opt.Searcher,
		})
		if err != nil {
			return
		}
	}

	app.lvl = bootLevelServicesInitialized
	return
}