# Campaign

```swift
struct Campaign
```

One active campaign, as returned by `GET /user/merchant/estimated-rewards`.

Arrives sorted by campaign priority, descending; do not re-sort it.

**Conforms to** `Swift.Equatable`, `Swift.Hashable`, `Swift.Sendable`

Defined in: [Sources/FrakSDK/Rewards/Rewards.swift:58](https://github.com/frak-id/wallet/blob/35995d05c807efe1e0d6319fdede3ad363124d1e/sdk/ios/Sources/FrakSDK/Rewards/Rewards.swift#L58)

## Properties

### campaignId

```swift
let campaignId: String
```

### defaultLockupSeconds

```swift
let defaultLockupSeconds: Double?
```

### expiresAt

```swift
let expiresAt: String?
```

ISO-8601 expiry, or nil for a campaign that never expires.

### interactionTypeKey

```swift
let interactionTypeKey: String
```

The interaction that triggers this campaign, e.g. `purchase`. Open on the wire.

### maxRewardsPerUser

```swift
let maxRewardsPerUser: Double?
```

### name

```swift
let name: String
```

### referee

```swift
let referee: EstimatedReward?
```

What the person arriving through the link earns.

### referrer

```swift
let referrer: EstimatedReward?
```

What the sharer earns. Absent when the campaign rewards only the referee.

## Operators

### !=(_:_:)

```swift
static func != (lhs: Self, rhs: Self) -> Bool
```

Returns a Boolean value indicating whether two values are not equal.

Inequality is the inverse of equality. For any values `a` and `b`, `a != b`
implies that `a == b` is `false`.

This is the default implementation of the not-equal-to operator (`!=`)
for any type that conforms to `Equatable`.

- Parameters:
  - lhs: A value to compare.
  - rhs: Another value to compare.