# PricingDiagnostic

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.pricingdiagnostic/
> Summary: PricingDiagnostic: Whether the catalog can actually put a price on a run.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

Whether the catalog can actually put a price on a run.

```csharp
public sealed record PricingDiagnostic : IEquatable<PricingDiagnostic>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.pricingdiagnostic/">PricingDiagnostic</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;PricingDiagnostic&gt;</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Remarks

A model with no price is not an error and it is not billed as zero: the run
is recorded with [PricingSource.Unknown](/api/tracon.pricingsource/) and empty cost columns,
because zero would claim the model is free. The mechanism is honest, but it
is also silent, and an installation could record thousands of costless runs
before anyone read the `pricing_source` value on a row to find out why.

Carries no `secret`: a model name and a count.

## Constructors

### <a id="Tracon_PricingDiagnostic__ctor"></a> PricingDiagnostic\(\)

```csharp
public PricingDiagnostic()
```

## Properties

### <a id="Tracon_PricingDiagnostic_Currency"></a> Currency

Gets the currency every computed cost is expressed in.

```csharp
public required string? Currency { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)?

### <a id="Tracon_PricingDiagnostic_PricedModels"></a> PricedModels

Gets the number of catalog models that resolve to a price.

```csharp
public required int PricedModels { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_PricingDiagnostic_UnpricedModels"></a> UnpricedModels

Gets the `provider/model` pairs no price source covers, in catalog
order. Empty when every model is priced.

```csharp
public required IReadOnlyList<string> UnpricedModels { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

#### Remarks

The same list the startup warning names. A run answered by one of these
carries no cost that a report can use; set the rate on the catalog entry
or under `Tracon:Pricing:Providers`, then recalculate past runs.

## Methods

### <a id="Tracon_PricingDiagnostic_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_PricingDiagnostic_Equals_Tracon_PricingDiagnostic_"></a> Equals\(PricingDiagnostic?\)

```csharp
public bool Equals(PricingDiagnostic? other)
```

#### Parameters

`other` [PricingDiagnostic](/api/tracon.pricingdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_PricingDiagnostic_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_PricingDiagnostic_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Operators

### <a id="Tracon_PricingDiagnostic_op_Equality_Tracon_PricingDiagnostic_Tracon_PricingDiagnostic_"></a> operator ==\(PricingDiagnostic?, PricingDiagnostic?\)

```csharp
public static bool operator ==(PricingDiagnostic? left, PricingDiagnostic? right)
```

#### Parameters

`left` [PricingDiagnostic](/api/tracon.pricingdiagnostic/)?

`right` [PricingDiagnostic](/api/tracon.pricingdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_PricingDiagnostic_op_Inequality_Tracon_PricingDiagnostic_Tracon_PricingDiagnostic_"></a> operator \!=\(PricingDiagnostic?, PricingDiagnostic?\)

```csharp
public static bool operator !=(PricingDiagnostic? left, PricingDiagnostic? right)
```

#### Parameters

`left` [PricingDiagnostic](/api/tracon.pricingdiagnostic/)?

`right` [PricingDiagnostic](/api/tracon.pricingdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
