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: admin.go
    path of file: ./repos/pocketbase/mails
    
    the code of the file until where you have to start completion: package mails

import (
	"fmt"
	"net/mail"

	"github.com/pocketbase/pocketbase/core"
	"github.com/pocketbase/pocketbase/mails/templates"
	"github.com/pocketbase/pocketbase/models"
	"github.com/pocketbase/pocketbase/tokens"
	"github.com/pocketbase/pocketbase/tools/mailer"
	"github.com/pocketbase/pocketbase/tools/rest"
)

// SendAdminPasswordReset sends a password reset request email to the specified admin.
func SendAdminPasswordReset(app core.App, admin *models.Admin) error {
	token, tokenErr := tokens.NewAdminResetPasswordToken(app, admin)
	if tokenErr != nil {
		return tokenErr
	}

	actionUrl, urlErr := rest.NormalizeUrl(fmt.Sprintf(
		"%s/_/#/confirm-password-reset/%s",
		app.Settings().Meta.AppUrl,
		token,
	))
	if urlErr != nil {
		return urlErr
	}

	params := struct {
		AppName   string
		AppUrl    string
		Admin     *mode
    
func SendAdminPasswordReset(app core.App, admin *models.Admin) error {
	token, tokenErr := tokens.NewAdminResetPasswordToken(app, admin)
	if tokenErr != nil {
		return tokenErr
	}

	actionUrl, urlErr := rest.NormalizeUrl(fmt.Sprintf(
		"%s/_/#/confirm-password-reset/%s",
		app.Settings().Meta.AppUrl,
		token,
	))
	if urlErr != nil {
		return urlErr
	}

	params := struct {
		AppName   string
		AppUrl    string
		Admin     *models.Admin
		Token     string
		ActionUrl string
	}{
		AppName:   app.Settings().Meta.AppName,
		AppUrl:    app.Settings().Meta.AppUrl,
		Admin:     admin,
		Token:     token,
		ActionUrl: actionUrl,
	}

	mailClient := app.NewMailClient()

	// resolve body template
	body, renderErr := resolveTemplateContent(params, templates.Layout, templates.AdminPasswordResetBody)
	if renderErr != nil {
		return renderErr
	}

	message := &mailer.Message{
		From: mail.Address{
			Name:    app.Settings().Meta.SenderName,
			Address: app.Settings().Meta.SenderAddress,
		},
		To:      []mail.Address{{Address: admin.Email}},
		Subject: "Reset admin password",
		HTML:    body,
	}

	event := new(core.MailerAdminEvent)
	event.MailClient = mailClient
	event.Message = message
	event.Admin = admin
	event.Meta = map[string]any{"token": token}

	return app.OnMailerBeforeAdminResetPasswordSend().Trigger(event, func(e *core.MailerAdminEvent) error {
		if err := e.MailClient.Send(e.Message); err != nil {
			return err
		}

		return app.OnMailerAfterAdminResetPasswordSend().Trigger(e)
	})
}