1// Copyright The OpenTelemetry Authors
2// SPDX-License-Identifier: Apache-2.0
3
4// Package embedded provides interfaces embedded within the [OpenTelemetry
5// metric API].
6//
7// Implementers of the [OpenTelemetry metric API] can embed the relevant type
8// from this package into their implementation directly. Doing so will result
9// in a compilation error for users when the [OpenTelemetry metric API] is
10// extended (which is something that can happen without a major version bump of
11// the API package).
12//
13// [OpenTelemetry metric API]: https://pkg.go.dev/go.opentelemetry.io/otel/metric
14package embedded // import "go.opentelemetry.io/otel/metric/embedded"
15
16// MeterProvider is embedded in
17// [go.opentelemetry.io/otel/metric.MeterProvider].
18//
19// Embed this interface in your implementation of the
20// [go.opentelemetry.io/otel/metric.MeterProvider] if you want users to
21// experience a compilation error, signaling they need to update to your latest
22// implementation, when the [go.opentelemetry.io/otel/metric.MeterProvider]
23// interface is extended (which is something that can happen without a major
24// version bump of the API package).
25type MeterProvider interface{ meterProvider() }
26
27// Meter is embedded in [go.opentelemetry.io/otel/metric.Meter].
28//
29// Embed this interface in your implementation of the
30// [go.opentelemetry.io/otel/metric.Meter] if you want users to experience a
31// compilation error, signaling they need to update to your latest
32// implementation, when the [go.opentelemetry.io/otel/metric.Meter] interface
33// is extended (which is something that can happen without a major version bump
34// of the API package).
35type Meter interface{ meter() }
36
37// Float64Observer is embedded in
38// [go.opentelemetry.io/otel/metric.Float64Observer].
39//
40// Embed this interface in your implementation of the
41// [go.opentelemetry.io/otel/metric.Float64Observer] if you want
42// users to experience a compilation error, signaling they need to update to
43// your latest implementation, when the
44// [go.opentelemetry.io/otel/metric.Float64Observer] interface is
45// extended (which is something that can happen without a major version bump of
46// the API package).
47type Float64Observer interface{ float64Observer() }
48
49// Int64Observer is embedded in
50// [go.opentelemetry.io/otel/metric.Int64Observer].
51//
52// Embed this interface in your implementation of the
53// [go.opentelemetry.io/otel/metric.Int64Observer] if you want users
54// to experience a compilation error, signaling they need to update to your
55// latest implementation, when the
56// [go.opentelemetry.io/otel/metric.Int64Observer] interface is
57// extended (which is something that can happen without a major version bump of
58// the API package).
59type Int64Observer interface{ int64Observer() }
60
61// Observer is embedded in [go.opentelemetry.io/otel/metric.Observer].
62//
63// Embed this interface in your implementation of the
64// [go.opentelemetry.io/otel/metric.Observer] if you want users to experience a
65// compilation error, signaling they need to update to your latest
66// implementation, when the [go.opentelemetry.io/otel/metric.Observer]
67// interface is extended (which is something that can happen without a major
68// version bump of the API package).
69type Observer interface{ observer() }
70
71// Registration is embedded in [go.opentelemetry.io/otel/metric.Registration].
72//
73// Embed this interface in your implementation of the
74// [go.opentelemetry.io/otel/metric.Registration] if you want users to
75// experience a compilation error, signaling they need to update to your latest
76// implementation, when the [go.opentelemetry.io/otel/metric.Registration]
77// interface is extended (which is something that can happen without a major
78// version bump of the API package).
79type Registration interface{ registration() }
80
81// Float64Counter is embedded in
82// [go.opentelemetry.io/otel/metric.Float64Counter].
83//
84// Embed this interface in your implementation of the
85// [go.opentelemetry.io/otel/metric.Float64Counter] if you want
86// users to experience a compilation error, signaling they need to update to
87// your latest implementation, when the
88// [go.opentelemetry.io/otel/metric.Float64Counter] interface is
89// extended (which is something that can happen without a major version bump of
90// the API package).
91type Float64Counter interface{ float64Counter() }
92
93// Float64Histogram is embedded in
94// [go.opentelemetry.io/otel/metric.Float64Histogram].
95//
96// Embed this interface in your implementation of the
97// [go.opentelemetry.io/otel/metric.Float64Histogram] if you want
98// users to experience a compilation error, signaling they need to update to
99// your latest implementation, when the
100// [go.opentelemetry.io/otel/metric.Float64Histogram] interface is
101// extended (which is something that can happen without a major version bump of
102// the API package).
103type Float64Histogram interface{ float64Histogram() }
104
105// Float64Gauge is embedded in [go.opentelemetry.io/otel/metric.Float64Gauge].
106//
107// Embed this interface in your implementation of the
108// [go.opentelemetry.io/otel/metric.Float64Gauge] if you want users to
109// experience a compilation error, signaling they need to update to your latest
110// implementation, when the [go.opentelemetry.io/otel/metric.Float64Gauge]
111// interface is extended (which is something that can happen without a major
112// version bump of the API package).
113type Float64Gauge interface{ float64Gauge() }
114
115// Float64ObservableCounter is embedded in
116// [go.opentelemetry.io/otel/metric.Float64ObservableCounter].
117//
118// Embed this interface in your implementation of the
119// [go.opentelemetry.io/otel/metric.Float64ObservableCounter] if you
120// want users to experience a compilation error, signaling they need to update
121// to your latest implementation, when the
122// [go.opentelemetry.io/otel/metric.Float64ObservableCounter]
123// interface is extended (which is something that can happen without a major
124// version bump of the API package).
125type Float64ObservableCounter interface{ float64ObservableCounter() }
126
127// Float64ObservableGauge is embedded in
128// [go.opentelemetry.io/otel/metric.Float64ObservableGauge].
129//
130// Embed this interface in your implementation of the
131// [go.opentelemetry.io/otel/metric.Float64ObservableGauge] if you
132// want users to experience a compilation error, signaling they need to update
133// to your latest implementation, when the
134// [go.opentelemetry.io/otel/metric.Float64ObservableGauge]
135// interface is extended (which is something that can happen without a major
136// version bump of the API package).
137type Float64ObservableGauge interface{ float64ObservableGauge() }
138
139// Float64ObservableUpDownCounter is embedded in
140// [go.opentelemetry.io/otel/metric.Float64ObservableUpDownCounter].
141//
142// Embed this interface in your implementation of the
143// [go.opentelemetry.io/otel/metric.Float64ObservableUpDownCounter]
144// if you want users to experience a compilation error, signaling they need to
145// update to your latest implementation, when the
146// [go.opentelemetry.io/otel/metric.Float64ObservableUpDownCounter]
147// interface is extended (which is something that can happen without a major
148// version bump of the API package).
149type Float64ObservableUpDownCounter interface{ float64ObservableUpDownCounter() }
150
151// Float64UpDownCounter is embedded in
152// [go.opentelemetry.io/otel/metric.Float64UpDownCounter].
153//
154// Embed this interface in your implementation of the
155// [go.opentelemetry.io/otel/metric.Float64UpDownCounter] if you
156// want users to experience a compilation error, signaling they need to update
157// to your latest implementation, when the
158// [go.opentelemetry.io/otel/metric.Float64UpDownCounter] interface
159// is extended (which is something that can happen without a major version bump
160// of the API package).
161type Float64UpDownCounter interface{ float64UpDownCounter() }
162
163// Int64Counter is embedded in
164// [go.opentelemetry.io/otel/metric.Int64Counter].
165//
166// Embed this interface in your implementation of the
167// [go.opentelemetry.io/otel/metric.Int64Counter] if you want users
168// to experience a compilation error, signaling they need to update to your
169// latest implementation, when the
170// [go.opentelemetry.io/otel/metric.Int64Counter] interface is
171// extended (which is something that can happen without a major version bump of
172// the API package).
173type Int64Counter interface{ int64Counter() }
174
175// Int64Histogram is embedded in
176// [go.opentelemetry.io/otel/metric.Int64Histogram].
177//
178// Embed this interface in your implementation of the
179// [go.opentelemetry.io/otel/metric.Int64Histogram] if you want
180// users to experience a compilation error, signaling they need to update to
181// your latest implementation, when the
182// [go.opentelemetry.io/otel/metric.Int64Histogram] interface is
183// extended (which is something that can happen without a major version bump of
184// the API package).
185type Int64Histogram interface{ int64Histogram() }
186
187// Int64Gauge is embedded in [go.opentelemetry.io/otel/metric.Int64Gauge].
188//
189// Embed this interface in your implementation of the
190// [go.opentelemetry.io/otel/metric.Int64Gauge] if you want users to experience
191// a compilation error, signaling they need to update to your latest
192// implementation, when the [go.opentelemetry.io/otel/metric.Int64Gauge]
193// interface is extended (which is something that can happen without a major
194// version bump of the API package).
195type Int64Gauge interface{ int64Gauge() }
196
197// Int64ObservableCounter is embedded in
198// [go.opentelemetry.io/otel/metric.Int64ObservableCounter].
199//
200// Embed this interface in your implementation of the
201// [go.opentelemetry.io/otel/metric.Int64ObservableCounter] if you
202// want users to experience a compilation error, signaling they need to update
203// to your latest implementation, when the
204// [go.opentelemetry.io/otel/metric.Int64ObservableCounter]
205// interface is extended (which is something that can happen without a major
206// version bump of the API package).
207type Int64ObservableCounter interface{ int64ObservableCounter() }
208
209// Int64ObservableGauge is embedded in
210// [go.opentelemetry.io/otel/metric.Int64ObservableGauge].
211//
212// Embed this interface in your implementation of the
213// [go.opentelemetry.io/otel/metric.Int64ObservableGauge] if you
214// want users to experience a compilation error, signaling they need to update
215// to your latest implementation, when the
216// [go.opentelemetry.io/otel/metric.Int64ObservableGauge] interface
217// is extended (which is something that can happen without a major version bump
218// of the API package).
219type Int64ObservableGauge interface{ int64ObservableGauge() }
220
221// Int64ObservableUpDownCounter is embedded in
222// [go.opentelemetry.io/otel/metric.Int64ObservableUpDownCounter].
223//
224// Embed this interface in your implementation of the
225// [go.opentelemetry.io/otel/metric.Int64ObservableUpDownCounter] if
226// you want users to experience a compilation error, signaling they need to
227// update to your latest implementation, when the
228// [go.opentelemetry.io/otel/metric.Int64ObservableUpDownCounter]
229// interface is extended (which is something that can happen without a major
230// version bump of the API package).
231type Int64ObservableUpDownCounter interface{ int64ObservableUpDownCounter() }
232
233// Int64UpDownCounter is embedded in
234// [go.opentelemetry.io/otel/metric.Int64UpDownCounter].
235//
236// Embed this interface in your implementation of the
237// [go.opentelemetry.io/otel/metric.Int64UpDownCounter] if you want
238// users to experience a compilation error, signaling they need to update to
239// your latest implementation, when the
240// [go.opentelemetry.io/otel/metric.Int64UpDownCounter] interface is
241// extended (which is something that can happen without a major version bump of
242// the API package).
243type Int64UpDownCounter interface{ int64UpDownCounter() }