# FrakClient

class FrakClient

Everything the SDK can do. Obtained from [Frak.client](/developers/references/android/id-frak-sdk/frak/client/). Every suspending member has a `*Async` twin returning a [CompletableFuture](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html), since a Java caller cannot name a `Continuation`.

How failure is signalled, one tier per kind of answer:

- 
   `T?` means **absence** — nothing was there, and that is a normal answer ([anonymousId](/developers/references/android/id-frak-sdk/frakclient/anonymousid/), [RewardsApi.best](/developers/references/android/id-frak-sdk/rewardsapi/best/), [SharingApi.buildLink](/developers/references/android/id-frak-sdk/sharingapi/buildlink/)'s null arm).
- 
   A sealed or enum type means **outcome** — several ends are all valid ([OpenAppResult](/developers/references/android/id-frak-sdk/openappresult/)).
- 
   `Boolean` means **predicate** ([AppLinkApi.isFrakAppInstalled](/developers/references/android/id-frak-sdk/applinkapi/isfrakappinstalled/)).
- 
   A thrown [id.frak.sdk.core.FrakError](/developers/references/android/id-frak-sdk-core/frakerror/) means **failure** — the call could have worked and did not ([ConfigApi.resolve](/developers/references/android/id-frak-sdk/configapi/resolve/), [RewardsApi.campaigns](/developers/references/android/id-frak-sdk/rewardsapi/campaigns/), [SharingApi.buildLink](/developers/references/android/id-frak-sdk/sharingapi/buildlink/), [AppLinkApi.installPageUrl](/developers/references/android/id-frak-sdk/applinkapi/installpageurl/)). Through an `*Async` twin this arrives as a `CompletionException` whose `cause` is the [id.frak.sdk.core.FrakError](/developers/references/android/id-frak-sdk-core/frakerror/).

[TrackingApi](/developers/references/android/id-frak-sdk/trackingapi/) is the one deliberate exception: it returns [id.frak.sdk.core.FrakResult](/developers/references/android/id-frak-sdk-core/frakresult/) and never throws, because it is called from hot paths where a disabled-tracking refusal is expected rather than exceptional. A tier change is invisible to the ABI dump, so it needs a `!` commit.

## Properties

| Name | Summary |
|---|---|
| [appLink](/developers/references/android/id-frak-sdk/frakclient/applink/) | val [appLink](/developers/references/android/id-frak-sdk/frakclient/applink/): [AppLinkApi](/developers/references/android/id-frak-sdk/applinkapi/)<br>Inbound referral links and the wallet app handoff. |
| [config](/developers/references/android/id-frak-sdk/frakclient/config/) | val [config](/developers/references/android/id-frak-sdk/frakclient/config/): [ConfigApi](/developers/references/android/id-frak-sdk/configapi/)<br>Config resolution and its live stream. |
| [environment](/developers/references/android/id-frak-sdk/frakclient/environment/) | val [environment](/developers/references/android/id-frak-sdk/frakclient/environment/): [FrakEnvironment](/developers/references/android/id-frak-sdk-core/frakenvironment/)<br>The stage this client talks to. Merchants never set it directly, see [id.frak.sdk.core.FrakConfig.env](/developers/references/android/id-frak-sdk-core/frakconfig/env/). |
| [metadataLang](/developers/references/android/id-frak-sdk/frakclient/metadatalang/) | val [metadataLang](/developers/references/android/id-frak-sdk/frakclient/metadatalang/): [FrakLanguage](/developers/references/android/id-frak-sdk-core/fraklanguage/)?<br>The merchant-supplied build-time language, for the same tier-3 copy. See [metadataName](/developers/references/android/id-frak-sdk/frakclient/metadataname/). |
| [metadataName](/developers/references/android/id-frak-sdk/frakclient/metadataname/) | val [metadataName](/developers/references/android/id-frak-sdk/frakclient/metadataname/): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)?<br>The merchant-supplied build-time name. `public` only so `:frak-sdk-ui` can read it across the module boundary. |
| [rewards](/developers/references/android/id-frak-sdk/frakclient/rewards/) | val [rewards](/developers/references/android/id-frak-sdk/frakclient/rewards/): [RewardsApi](/developers/references/android/id-frak-sdk/rewardsapi/)<br>Campaigns and the single best reward to advertise. |
| [sharing](/developers/references/android/id-frak-sdk/frakclient/sharing/) | val [sharing](/developers/references/android/id-frak-sdk/frakclient/sharing/): [SharingApi](/developers/references/android/id-frak-sdk/sharingapi/)<br>Share link construction. |
| [tracking](/developers/references/android/id-frak-sdk/frakclient/tracking/) | val [tracking](/developers/references/android/id-frak-sdk/frakclient/tracking/): [TrackingApi](/developers/references/android/id-frak-sdk/trackingapi/)<br>Interaction and purchase tracking. |

## Functions

| Name | Summary |
|---|---|
| [anonymousId](/developers/references/android/id-frak-sdk/frakclient/anonymousid/) | suspend fun [anonymousId](/developers/references/android/id-frak-sdk/frakclient/anonymousid/)(): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)?<br>Anonymous id, or null when tracking is disabled or the device refused key material. |
| [anonymousIdAsync](/developers/references/android/id-frak-sdk/frakclient/anonymousidasync/) | fun [anonymousIdAsync](/developers/references/android/id-frak-sdk/frakclient/anonymousidasync/)(): [CompletableFuture](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html)&lt;[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)?&gt;<br>[anonymousId](/developers/references/android/id-frak-sdk/frakclient/anonymousid/) for Java. |
| [isTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/istrackingenabled/) | suspend fun [isTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/istrackingenabled/)(): [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)<br>Whether tracking is currently allowed: `FrakConfig.trackingEnabled` AND the persisted runtime decision. |
| [isTrackingEnabledAsync](/developers/references/android/id-frak-sdk/frakclient/istrackingenabledasync/) | fun [isTrackingEnabledAsync](/developers/references/android/id-frak-sdk/frakclient/istrackingenabledasync/)(): [CompletableFuture](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html)&lt;[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)&gt;<br>[isTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/istrackingenabled/) for Java. |
| [resetAnonymousId](/developers/references/android/id-frak-sdk/frakclient/resetanonymousid/) | suspend fun [resetAnonymousId](/developers/references/android/id-frak-sdk/frakclient/resetanonymousid/)(): [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)<br>Destroys the keypair so the next [anonymousId](/developers/references/android/id-frak-sdk/frakclient/anonymousid/) mints a new identity. |
| [resetAnonymousIdAsync](/developers/references/android/id-frak-sdk/frakclient/resetanonymousidasync/) | fun [resetAnonymousIdAsync](/developers/references/android/id-frak-sdk/frakclient/resetanonymousidasync/)(): [CompletableFuture](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html)&lt;[Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)&gt;<br>[resetAnonymousId](/developers/references/android/id-frak-sdk/frakclient/resetanonymousid/) for Java. |
| [setTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/settrackingenabled/) | suspend fun [setTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/settrackingenabled/)(enabled: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html))<br>Turns tracking on or off at runtime and persists the decision for this install. `false` purges anything still queued, which can discard purchase events not yet sent; `true` cannot lift a build shipping `trackingEnabled(false)`. Identity survives — see [resetAnonymousId](/developers/references/android/id-frak-sdk/frakclient/resetanonymousid/). |
| [setTrackingEnabledAsync](/developers/references/android/id-frak-sdk/frakclient/settrackingenabledasync/) | fun [setTrackingEnabledAsync](/developers/references/android/id-frak-sdk/frakclient/settrackingenabledasync/)(enabled: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)): [CompletableFuture](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/CompletableFuture.html)&lt;[Void](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Void.html)?&gt;<br>[setTrackingEnabled](/developers/references/android/id-frak-sdk/frakclient/settrackingenabled/) for Java. |