# id.frak.sdk.core

## Types

| Name | Summary |
|---|---|
| [DeepLinkHandling](/developers/references/android/id-frak-sdk-core/deeplinkhandling/) | enum [DeepLinkHandling](/developers/references/android/id-frak-sdk-core/deeplinkhandling/) : [Enum](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-enum/index.html)&lt;[DeepLinkHandling](/developers/references/android/id-frak-sdk-core/deeplinkhandling/)&gt; <br>How inbound links carrying an `fCtx` reach the SDK. |
| [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig/) | class [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig/)<br>Everything the SDK needs to start, supplied once at [id.frak.sdk.Frak.initialize](/developers/references/android/id-frak-sdk/frak/initialize/). Never validated at construction; an unusable config surfaces later as [FrakError.MerchantResolutionFailed](/developers/references/android/id-frak-sdk-core/frakerror/merchantresolutionfailed/). |
| [FrakCurrency](/developers/references/android/id-frak-sdk-core/frakcurrency/) | enum [FrakCurrency](/developers/references/android/id-frak-sdk-core/frakcurrency/) : [Enum](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-enum/index.html)&lt;[FrakCurrency](/developers/references/android/id-frak-sdk-core/frakcurrency/)&gt; <br>Currency a reward is advertised in. Closed set: backend rejects anything else with a 422. |
| [FrakEnvironment](/developers/references/android/id-frak-sdk-core/frakenvironment/) | sealed interface [FrakEnvironment](/developers/references/android/id-frak-sdk-core/frakenvironment/)<br>The Frak stage the SDK talks to. |
| [FrakError](/developers/references/android/id-frak-sdk-core/frakerror/) | sealed class [FrakError](/developers/references/android/id-frak-sdk-core/frakerror/) : [Exception](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html)<br>Every failure the SDK can hand back, as one closed hierarchy. `CancellationException` is never wrapped into one of these, see `frakCall`. No default arguments anywhere: a sealed class's constructor is published, so a default would freeze a synthetic bridge into the `.api` dump. |
| [FrakLanguage](/developers/references/android/id-frak-sdk-core/fraklanguage/) | enum [FrakLanguage](/developers/references/android/id-frak-sdk-core/fraklanguage/) : [Enum](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-enum/index.html)&lt;[FrakLanguage](/developers/references/android/id-frak-sdk-core/fraklanguage/)&gt; <br>Language for merchant-configured copy. Only `en`/`fr` exist today. |
| [FrakLogLevel](/developers/references/android/id-frak-sdk-core/frakloglevel/) | enum [FrakLogLevel](/developers/references/android/id-frak-sdk-core/frakloglevel/) : [Enum](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-enum/index.html)&lt;[FrakLogLevel](/developers/references/android/id-frak-sdk-core/frakloglevel/)&gt; <br>Logcat verbosity. Default [NONE](/developers/references/android/id-frak-sdk-core/frakloglevel/none/). Also gates [FrakConfig.logSink](/developers/references/android/id-frak-sdk-core/frakconfig/logsink/) volume, see [FrakLogSink](/developers/references/android/id-frak-sdk-core/fraklogsink/). |
| [FrakLogSink](/developers/references/android/id-frak-sdk-core/fraklogsink/) | fun interface [FrakLogSink](/developers/references/android/id-frak-sdk-core/fraklogsink/)<br>Receives SDK diagnostics, gated by [FrakConfig.logLevel](/developers/references/android/id-frak-sdk-core/frakconfig/loglevel/). Replaces logcat once set. |
| [FrakMetadata](/developers/references/android/id-frak-sdk-core/frakmetadata/) | class [FrakMetadata](/developers/references/android/id-frak-sdk-core/frakmetadata/)<br>Static merchant-supplied facts, fixed at build time. Not the resolved backend config, see [id.frak.sdk.config.FrakResolvedConfig](/developers/references/android/id-frak-sdk-config/frakresolvedconfig/). |
| [FrakResult](/developers/references/android/id-frak-sdk-core/frakresult/) | sealed interface [FrakResult](/developers/references/android/id-frak-sdk-core/frakresult/)&lt;out [T](/developers/references/android/id-frak-sdk-core/frakresult/)&gt;<br>Outcome of a fire-and-forget call. Not `kotlin.Result`: merchants need the typed [FrakError](/developers/references/android/id-frak-sdk-core/frakerror/) arm. |
| [ProductDetails](/developers/references/android/id-frak-sdk-core/productdetails/) | class [ProductDetails](/developers/references/android/id-frak-sdk-core/productdetails/)<br>The purchase line item fields a campaign's `productScope` can target. Build with [Builder](/developers/references/android/id-frak-sdk-core/productdetails/builder/), or `ProductDetails { }` from Kotlin. Also returned by the SDK, on [id.frak.sdk.rewards.BestReward.matchedProducts](/developers/references/android/id-frak-sdk-rewards/bestreward/matchedproducts/), hence `equals`/`hashCode`. |

## Functions

| Name | Summary |
|---|---|
| [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig-fun/) | fun [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig-fun/)(configure: [FrakConfig.Builder](/developers/references/android/id-frak-sdk-core/frakconfig/builder/).() -&gt; [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)): [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig/)<br>Kotlin sugar over [FrakConfig.Builder](/developers/references/android/id-frak-sdk-core/frakconfig/builder/) for the no-merchant-id form.<br>fun [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig-fun/)(merchantId: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)): [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig/)<br>Merchant id only: the shortest working config.<br>fun [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig-fun/)(merchantId: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html), configure: [FrakConfig.Builder](/developers/references/android/id-frak-sdk-core/frakconfig/builder/).() -&gt; [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)): [FrakConfig](/developers/references/android/id-frak-sdk-core/frakconfig/)<br>Kotlin sugar over [FrakConfig.Builder](/developers/references/android/id-frak-sdk-core/frakconfig/builder/), for the merchant-id form. |
| [FrakMetadata](/developers/references/android/id-frak-sdk-core/frakmetadata-fun/) | fun [FrakMetadata](/developers/references/android/id-frak-sdk-core/frakmetadata-fun/)(configure: [FrakMetadata.Builder](/developers/references/android/id-frak-sdk-core/frakmetadata/builder/).() -&gt; [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)): [FrakMetadata](/developers/references/android/id-frak-sdk-core/frakmetadata/)<br>Kotlin sugar over [FrakMetadata.Builder](/developers/references/android/id-frak-sdk-core/frakmetadata/builder/). |
| [ProductDetails](/developers/references/android/id-frak-sdk-core/productdetails-fun/) | fun [ProductDetails](/developers/references/android/id-frak-sdk-core/productdetails-fun/)(configure: [ProductDetails.Builder](/developers/references/android/id-frak-sdk-core/productdetails/builder/).() -&gt; [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)): [ProductDetails](/developers/references/android/id-frak-sdk-core/productdetails/)<br>Kotlin sugar over [ProductDetails.Builder](/developers/references/android/id-frak-sdk-core/productdetails/builder/). |