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: remote_alertmanager.go
    path of file: ./repos/grafana/pkg/services/ngalert/metrics
    
    the code of the file until where you have to start completion: package metrics

import (
	"github.com/grafana/dskit/instrument"
	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/client_golang/prometheus/promauto"
)

const (
	ModeRemoteSecondary = "remote_secondary"
	ModeRemotePrimary   = "remote_primary"
	ModeRemoteOnly      = "remote_only"
)

type RemoteAlertmanager struct {
	Info                  *prometheus.GaugeVec
	RequestLatency        *instrument.HistogramCollector
	LastReadinessCheck    prometheus.Gauge
	ConfigSyncsTotal      prometheus.Counter
	ConfigSyncErrorsTotal prometheus.Counter
	LastConfigSync        prometheus.Gauge
	StateSyncsTotal       prometheus.Counter
	StateSyncErrorsTotal  prometheus.Counter
	LastStateSync         prometheus.Gauge
}

func NewRemoteAlertmanagerMetrics(r prometheus.Registerer) *RemoteAlertmanager {
	return &RemoteAlertmanager{
		Info: promauto.With(r).NewGaugeVec(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_info",
			Help:      "Information about the remote Alertmanager.",
		}, []string{"mode"}),
		RequestLatency: instrument.NewHistogramCollector(promauto.With(r).NewHistogramVec(prometheus.HistogramOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_latency_seconds",
			Help:      "Histogram of request latencies to the remote Alertmanager.",
		}, instrument.HistogramCollectorBuckets)),
		LastReadinessCheck: promauto.With(r).NewGauge(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_last_readiness_check_timestamp_seconds",
			Help:      "Timestamp of the last successful readiness check to th
    
func NewRemoteAlertmanagerMetrics(r prometheus.Registerer) *RemoteAlertmanager {
	return &RemoteAlertmanager{
		Info: promauto.With(r).NewGaugeVec(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_info",
			Help:      "Information about the remote Alertmanager.",
		}, []string{"mode"}),
		RequestLatency: instrument.NewHistogramCollector(promauto.With(r).NewHistogramVec(prometheus.HistogramOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_latency_seconds",
			Help:      "Histogram of request latencies to the remote Alertmanager.",
		}, instrument.HistogramCollectorBuckets)),
		LastReadinessCheck: promauto.With(r).NewGauge(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_last_readiness_check_timestamp_seconds",
			Help:      "Timestamp of the last successful readiness check to the remote Alertmanager in seconds.",
		}),
		ConfigSyncsTotal: promauto.With(r).NewCounter(prometheus.CounterOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_configuration_syncs_total",
			Help:      "Total number of configuration syncs to the remote Alertmanager.",
		}),
		ConfigSyncErrorsTotal: promauto.With(r).NewCounter(prometheus.CounterOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_configuration_sync_failures_total",
			Help:      "Total number of failed attempts to sync configurations between Alertmanagers.",
		}),
		LastConfigSync: promauto.With(r).NewGauge(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_last_configuration_sync_timestamp_seconds",
			Help:      "Timestamp of the last successful configuration sync to the remote Alertmanager in seconds.",
		}),
		StateSyncsTotal: promauto.With(r).NewCounter(prometheus.CounterOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_state_syncs_total",
			Help:      "Total number of state syncs to the remote Alertmanager.",
		}),
		StateSyncErrorsTotal: promauto.With(r).NewCounter(prometheus.CounterOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_state_sync_failures_total",
			Help:      "Total number of failed attempts to sync state between Alertmanagers.",
		}),
		LastStateSync: promauto.With(r).NewGauge(prometheus.GaugeOpts{
			Namespace: Namespace,
			Subsystem: Subsystem,
			Name:      "remote_alertmanager_last_state_sync_timestamp_seconds",
			Help:      "Timestamp of the last successful state sync to the remote Alertmanager in seconds.",
		}),
	}
}