1import { DpopProof, ManagedRelay } from "@t3tools/client-runtime/relay";
2import { RelayMobileClientId } from "@t3tools/contracts/relay";
3import * as Layer from "effect/Layer";
4
5import { loadOrCreateProofKey } from "./dpop";
6import { managedRelayAccessTokenStore } from "./managedRelayTokenStore";
7
8const layerRelayDpopSigner = DpopProof.layerSigner({
9 keyStore: "expo-secure-store",
10 loadOrCreateKey: loadOrCreateProofKey(),
11});
12
13export const layer = (relayUrl: string) =>
14 ManagedRelay.layer({
15 relayUrl,
16 clientId: RelayMobileClientId,
17 accessTokenStore: managedRelayAccessTokenStore,
18 }).pipe(Layer.provideMerge(layerRelayDpopSigner));