Logo

Public Services

Birbonus exposes public services that allow the host application to retrieve SDK-managed information.

Public Balance Model

EcoPublicBalance contains the current user's publicly exposed balance information.

public struct EcoPublicBalance {
    /// The user's current balance.
    let balance: Amount?

    /// The user's current card number.
    let cardNumber: String?
}

Some properties may be nil, depending on eligibility, account state, or data availability.

EcoPublicServiceProtocol

public protocol EcoPublicServiceProtocol {
    /// Retrieves the user's current balance information.
    ///
    /// - Returns: A publisher that emits EcoPublicBalance on success
    ///   or fails with an Error.
    func fetchBalance() -> AnyPublisher<EcoPublicBalance, Error>

    /// Retrieves the Birbonus Cabinet red-dot indicator status.
    ///
    /// If the request fails, the SDK returns a default status
    /// with isEnabled set to false.
    func getBirbonusRedDotStatus()
        -> AnyPublisher<EcoPublicBirbonusRedDotStatus, Never>
}

Retrieving the Public Balance

guard let publicService = configurator.publicService else {
    return
}

publicService
    .fetchBalance()
    .receive(on: DispatchQueue.main)
    .handleEvents(receiveOutput: { balance in
        print("Birbonus public balance: \(balance)")
    })
    .eraseToAnyPublisher()

Retrieving the Red-Dot Status

publicService
    .getBirbonusRedDotStatus()
    .receive(on: DispatchQueue.main)
    .handleEvents(receiveOutput: { status in
        print("Birbonus red-dot status: \(status.isEnabled)")
    })
    .eraseToAnyPublisher()