@towns-labs/sdk 2.0.5 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/createApp.d.ts.map +1 -1
  2. package/dist/createApp.js +7 -1
  3. package/dist/createApp.js.map +1 -1
  4. package/dist/id.d.ts +1 -0
  5. package/dist/id.d.ts.map +1 -1
  6. package/dist/id.js +3 -0
  7. package/dist/id.js.map +1 -1
  8. package/dist/sync-agent/dms/models/dm.d.ts +2 -4
  9. package/dist/sync-agent/dms/models/dm.d.ts.map +1 -1
  10. package/dist/sync-agent/dms/models/dm.js +2 -30
  11. package/dist/sync-agent/dms/models/dm.js.map +1 -1
  12. package/dist/sync-agent/gdms/models/gdm.d.ts +2 -4
  13. package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
  14. package/dist/sync-agent/gdms/models/gdm.js +2 -30
  15. package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
  16. package/dist/sync-agent/river-connection/riverConnection.d.ts +1 -3
  17. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  18. package/dist/sync-agent/river-connection/riverConnection.js +5 -3
  19. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  20. package/dist/sync-agent/spaces/models/channel.d.ts +3 -6
  21. package/dist/sync-agent/spaces/models/channel.d.ts.map +1 -1
  22. package/dist/sync-agent/spaces/models/channel.js +4 -76
  23. package/dist/sync-agent/spaces/models/channel.js.map +1 -1
  24. package/dist/sync-agent/spaces/models/space.d.ts +6 -6
  25. package/dist/sync-agent/spaces/models/space.d.ts.map +1 -1
  26. package/dist/sync-agent/spaces/models/space.js +8 -30
  27. package/dist/sync-agent/spaces/models/space.js.map +1 -1
  28. package/dist/sync-agent/spaces/spaces.d.ts +3 -4
  29. package/dist/sync-agent/spaces/spaces.d.ts.map +1 -1
  30. package/dist/sync-agent/spaces/spaces.js +6 -25
  31. package/dist/sync-agent/spaces/spaces.js.map +1 -1
  32. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  33. package/dist/sync-agent/syncAgent.js +2 -7
  34. package/dist/sync-agent/syncAgent.js.map +1 -1
  35. package/dist/townsEnv.js +5 -5
  36. package/dist/townsEnv.js.map +1 -1
  37. package/package.json +10 -10
  38. package/dist/createBot.d.ts +0 -159
  39. package/dist/createBot.d.ts.map +0 -1
  40. package/dist/createBot.js +0 -206
  41. package/dist/createBot.js.map +0 -1
  42. package/dist/makeRiverRpcClient.d.ts +0 -6
  43. package/dist/makeRiverRpcClient.d.ts.map +0 -1
  44. package/dist/makeRiverRpcClient.js +0 -9
  45. package/dist/makeRiverRpcClient.js.map +0 -1
  46. package/dist/streamStateView_ChannelMetadata.d.ts +0 -22
  47. package/dist/streamStateView_ChannelMetadata.d.ts.map +0 -1
  48. package/dist/streamStateView_ChannelMetadata.js +0 -77
  49. package/dist/streamStateView_ChannelMetadata.js.map +0 -1
  50. package/dist/sync-agent/entitlements/entitlements.d.ts +0 -10
  51. package/dist/sync-agent/entitlements/entitlements.d.ts.map +0 -1
  52. package/dist/sync-agent/entitlements/entitlements.js +0 -20
  53. package/dist/sync-agent/entitlements/entitlements.js.map +0 -1
  54. package/dist/sync-agent/river-connection/models/riverChain.d.ts +0 -24
  55. package/dist/sync-agent/river-connection/models/riverChain.d.ts.map +0 -1
  56. package/dist/sync-agent/river-connection/models/riverChain.js +0 -66
  57. package/dist/sync-agent/river-connection/models/riverChain.js.map +0 -1
  58. package/dist/tests/multi/appRegistryService.test.d.ts +0 -2
  59. package/dist/tests/multi/appRegistryService.test.d.ts.map +0 -1
  60. package/dist/tests/multi/appRegistryService.test.js +0 -41
  61. package/dist/tests/multi/appRegistryService.test.js.map +0 -1
  62. package/dist/tests/multi/botEntitlements.test.d.ts +0 -5
  63. package/dist/tests/multi/botEntitlements.test.d.ts.map +0 -1
  64. package/dist/tests/multi/botEntitlements.test.js +0 -178
  65. package/dist/tests/multi/botEntitlements.test.js.map +0 -1
  66. package/dist/tests/multi/botMembership.test.d.ts +0 -5
  67. package/dist/tests/multi/botMembership.test.d.ts.map +0 -1
  68. package/dist/tests/multi/botMembership.test.js +0 -295
  69. package/dist/tests/multi/botMembership.test.js.map +0 -1
  70. package/dist/tests/multi/botStreamCreation.test.d.ts +0 -5
  71. package/dist/tests/multi/botStreamCreation.test.d.ts.map +0 -1
  72. package/dist/tests/multi/botStreamCreation.test.js +0 -60
  73. package/dist/tests/multi/botStreamCreation.test.js.map +0 -1
  74. package/dist/tests/multi/channelScrubbing.test.d.ts +0 -5
  75. package/dist/tests/multi/channelScrubbing.test.d.ts.map +0 -1
  76. package/dist/tests/multi/channelScrubbing.test.js +0 -102
  77. package/dist/tests/multi/channelScrubbing.test.js.map +0 -1
  78. package/dist/tests/multi_ne/nodeSelection.test.d.ts +0 -5
  79. package/dist/tests/multi_ne/nodeSelection.test.d.ts.map +0 -1
  80. package/dist/tests/multi_ne/nodeSelection.test.js +0 -41
  81. package/dist/tests/multi_ne/nodeSelection.test.js.map +0 -1
  82. package/dist/tests/multi_ne/trading.solana.test.d.ts +0 -2
  83. package/dist/tests/multi_ne/trading.solana.test.d.ts.map +0 -1
  84. package/dist/tests/multi_ne/trading.solana.test.js +0 -229
  85. package/dist/tests/multi_ne/trading.solana.test.js.map +0 -1
  86. package/dist/tests/multi_ne/trading.test.d.ts +0 -2
  87. package/dist/tests/multi_ne/trading.test.d.ts.map +0 -1
  88. package/dist/tests/multi_ne/trading.test.js +0 -243
  89. package/dist/tests/multi_ne/trading.test.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@towns-labs/sdk",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,13 +21,13 @@
21
21
  "@ethereumjs/util": "^10.0.0",
22
22
  "@noble/curves": "^1.9.1",
23
23
  "@noble/hashes": "^1.8.0",
24
- "@towns-labs/encryption": "^2.0.5",
25
- "@towns-labs/generated": "^2.0.5",
26
- "@towns-labs/proto": "^2.0.5",
27
- "@towns-labs/rpc-connector": "^2.0.5",
28
- "@towns-labs/sdk-crypto": "^2.0.5",
29
- "@towns-labs/utils": "^2.0.5",
30
- "@towns-labs/web3": "^2.0.5",
24
+ "@towns-labs/encryption": "^2.0.6",
25
+ "@towns-labs/generated": "^2.0.6",
26
+ "@towns-labs/proto": "^2.0.6",
27
+ "@towns-labs/rpc-connector": "^2.0.6",
28
+ "@towns-labs/sdk-crypto": "^2.0.6",
29
+ "@towns-labs/utils": "^2.0.6",
30
+ "@towns-labs/web3": "^2.0.6",
31
31
  "debug": "^4.3.4",
32
32
  "dexie": "^4.2.1",
33
33
  "ethereum-cryptography": "^3.2.0",
@@ -35,11 +35,11 @@
35
35
  "lodash-es": "^4.17.21",
36
36
  "nanoid": "^4.0.0",
37
37
  "p-limit": "^6.1.0",
38
- "viem": "^2.29.3"
38
+ "viem": "2.45.1"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@connectrpc/connect-web": "^2.1.0",
42
- "@towns-labs/relayer-client": "^2.0.5",
42
+ "@towns-labs/relayer-client": "^2.0.6",
43
43
  "@types/bun": "^1.3.1",
44
44
  "@types/debug": "^4.1.8",
45
45
  "@types/lodash-es": "^4.17.12",
@@ -1,159 +0,0 @@
1
- /**
2
- * createBot - Create a bot (app) account for Towns
3
- *
4
- * This function handles the full setup flow:
5
- * 1. Creates a smart account via EIP-7702 relayer
6
- * 2. Initializes the user on the River network
7
- * 3. Sets up encryption keys
8
- * 4. Returns the app private data needed to run the bot
9
- */
10
- import type { Address, Hex, PublicClient } from 'viem';
11
- import type { RelayerActions } from '@towns-labs/relayer-client';
12
- import { type TownsConfig } from './townsEnv';
13
- /**
14
- * Input parameters for createBot
15
- */
16
- export interface CreateBotParams {
17
- /**
18
- * Bot owner's address - this address will have super admin permissions on the bot account
19
- */
20
- ownerAddress: Address;
21
- /**
22
- * Viem public client extended with relayer actions
23
- */
24
- publicClient: PublicClient & RelayerActions;
25
- /**
26
- * Contract address for the account proxy (delegation target)
27
- * Can be obtained from contract deployments: `getAddresses(env, chainId)?.accountProxy`
28
- */
29
- accountProxy: Address;
30
- /**
31
- * Towns environment configuration
32
- * Can be created with `townsEnv().makeTownsConfig()` or provided directly
33
- */
34
- townsConfig?: TownsConfig;
35
- /**
36
- * Optional private key for the bot account
37
- * If not provided, a new random key will be generated
38
- */
39
- botPrivateKey?: Hex;
40
- }
41
- /**
42
- * Result from createBot
43
- */
44
- export interface CreateBotResult {
45
- /**
46
- * The app address (smart account address) for the bot
47
- */
48
- appAddress: Address;
49
- /**
50
- * The private key for the bot account
51
- * Store this securely if you didn't provide your own
52
- */
53
- botPrivateKey: Hex;
54
- /**
55
- * The encoded app private data string
56
- * This contains everything needed to initialize the bot:
57
- * - Private key
58
- * - Encryption device
59
- * - Environment
60
- * - App address
61
- *
62
- * Use this with `makeTownsAgent()` from `@towns-labs/agent`
63
- */
64
- appPrivateData: string;
65
- }
66
- /**
67
- * Creates a bot account for Towns.
68
- *
69
- * This sets up everything needed to run a bot:
70
- * - Creates an EIP-7702 smart account via the relayer
71
- * - Initializes the user on the River network
72
- * - Sets up encryption keys for E2E encrypted messaging
73
- * - Returns the app private data needed to run the bot
74
- *
75
- * @example
76
- * ```typescript
77
- * import { createPublicClient, http } from 'viem'
78
- * import { base } from 'viem/chains'
79
- * import { relayerActions } from '@towns-labs/relayer-client'
80
- * import { getAddresses } from '@towns-labs/contracts/deployments'
81
- * import { createBot, townsEnv } from '@towns-labs/sdk'
82
- *
83
- * // Set up public client with relayer
84
- * const publicClient = createPublicClient({
85
- * chain: base,
86
- * transport: http('https://mainnet.base.org'),
87
- * }).extend(relayerActions({ relayerUrl: 'https://relayer.towns.com' }))
88
- *
89
- * // Get contract addresses for your environment
90
- * const contracts = getAddresses('omega', base.id)
91
- *
92
- * // Create the bot
93
- * const { appAddress, appPrivateData, botPrivateKey } = await createBot({
94
- * ownerAddress: '0x...your-wallet-address...',
95
- * publicClient,
96
- * accountProxy: contracts.accountProxy,
97
- * })
98
- *
99
- * console.log('Bot created:', appAddress)
100
- * console.log('Save this app private data securely:', appPrivateData)
101
- *
102
- * // Now you can use appPrivateData with makeTownsAgent()
103
- * ```
104
- */
105
- export declare function createBot(params: CreateBotParams): Promise<CreateBotResult>;
106
- /**
107
- * Options for createBotFromWallet - uses WalletClient instead of private key
108
- */
109
- export interface CreateBotFromWalletParams {
110
- /**
111
- * Bot owner's address - this address will have super admin permissions on the bot account
112
- */
113
- ownerAddress: Address;
114
- /**
115
- * Viem public client extended with relayer actions
116
- */
117
- publicClient: PublicClient & RelayerActions;
118
- /**
119
- * Contract address for the account proxy (delegation target)
120
- */
121
- accountProxy: Address;
122
- /**
123
- * Viem WalletClient for signing (must have account configured)
124
- */
125
- walletClient: Parameters<RelayerActions['createAccountWithWallet']>[0]['walletClient'];
126
- /**
127
- * Towns environment configuration
128
- */
129
- townsConfig?: TownsConfig;
130
- }
131
- /**
132
- * Creates a bot account using a WalletClient for signing.
133
- *
134
- * This variant is useful when you want to use a browser wallet or
135
- * other wallet provider that doesn't expose private keys directly.
136
- *
137
- * Note: You must provide a separate private key for the bot's encryption
138
- * device since the WalletClient can't export keys.
139
- *
140
- * @example
141
- * ```typescript
142
- * import { createWalletClient, custom } from 'viem'
143
- *
144
- * const walletClient = createWalletClient({
145
- * account: window.ethereum.selectedAddress,
146
- * chain: base,
147
- * transport: custom(window.ethereum),
148
- * })
149
- *
150
- * const result = await createBotFromWallet({
151
- * ownerAddress: walletClient.account.address,
152
- * publicClient,
153
- * accountProxy: contracts.accountProxy,
154
- * walletClient,
155
- * })
156
- * ```
157
- */
158
- export declare function createBotFromWallet(params: CreateBotFromWalletParams): Promise<CreateBotResult>;
159
- //# sourceMappingURL=createBot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createBot.d.ts","sourceRoot":"","sources":["../src/createBot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAItD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAOhE,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;OAEG;IACH,YAAY,EAAE,YAAY,GAAG,cAAc,CAAA;IAE3C;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,GAAG,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,aAAa,EAAE,GAAG,CAAA;IAElB;;;;;;;;;OASG;IACH,cAAc,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAmFjF;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;OAEG;IACH,YAAY,EAAE,YAAY,GAAG,cAAc,CAAA;IAE3C;;OAEG;IACH,YAAY,EAAE,OAAO,CAAA;IAErB;;OAEG;IACH,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;IAEtF;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,yBAAyB,GAClC,OAAO,CAAC,eAAe,CAAC,CAmF1B"}
package/dist/createBot.js DELETED
@@ -1,206 +0,0 @@
1
- /**
2
- * createBot - Create a bot (app) account for Towns
3
- *
4
- * This function handles the full setup flow:
5
- * 1. Creates a smart account via EIP-7702 relayer
6
- * 2. Initializes the user on the River network
7
- * 3. Sets up encryption keys
8
- * 4. Returns the app private data needed to run the bot
9
- */
10
- import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
11
- import { encodeAbiParameters } from 'viem';
12
- import { ethers } from 'ethers';
13
- import { Client } from './client';
14
- import { makeSignerContext } from './signerContext';
15
- import { makeStreamRpcClient } from './makeStreamRpcClient';
16
- import { RiverDbManager } from './riverDbManager';
17
- import { MockEntitlementsDelegate } from './utils';
18
- import { makeAppPrivateData } from './id';
19
- import { townsEnv } from './townsEnv';
20
- /**
21
- * Creates a bot account for Towns.
22
- *
23
- * This sets up everything needed to run a bot:
24
- * - Creates an EIP-7702 smart account via the relayer
25
- * - Initializes the user on the River network
26
- * - Sets up encryption keys for E2E encrypted messaging
27
- * - Returns the app private data needed to run the bot
28
- *
29
- * @example
30
- * ```typescript
31
- * import { createPublicClient, http } from 'viem'
32
- * import { base } from 'viem/chains'
33
- * import { relayerActions } from '@towns-labs/relayer-client'
34
- * import { getAddresses } from '@towns-labs/contracts/deployments'
35
- * import { createBot, townsEnv } from '@towns-labs/sdk'
36
- *
37
- * // Set up public client with relayer
38
- * const publicClient = createPublicClient({
39
- * chain: base,
40
- * transport: http('https://mainnet.base.org'),
41
- * }).extend(relayerActions({ relayerUrl: 'https://relayer.towns.com' }))
42
- *
43
- * // Get contract addresses for your environment
44
- * const contracts = getAddresses('omega', base.id)
45
- *
46
- * // Create the bot
47
- * const { appAddress, appPrivateData, botPrivateKey } = await createBot({
48
- * ownerAddress: '0x...your-wallet-address...',
49
- * publicClient,
50
- * accountProxy: contracts.accountProxy,
51
- * })
52
- *
53
- * console.log('Bot created:', appAddress)
54
- * console.log('Save this app private data securely:', appPrivateData)
55
- *
56
- * // Now you can use appPrivateData with makeTownsAgent()
57
- * ```
58
- */
59
- export async function createBot(params) {
60
- const { ownerAddress, publicClient, accountProxy, botPrivateKey: providedPrivateKey } = params;
61
- // Get or create the towns config
62
- const townsConfig = params.townsConfig ?? townsEnv().makeTownsConfig();
63
- // Generate or use provided private key
64
- const botPrivateKey = providedPrivateKey ?? generatePrivateKey();
65
- const botAccount = privateKeyToAccount(botPrivateKey);
66
- // Encode the owner address for super admin key authorization
67
- const encodedSuperAdminKey = encodeAbiParameters([{ type: 'address' }], [ownerAddress]);
68
- // Step 1: Create the smart account via relayer
69
- const { accountAddress, success, error } = await publicClient.createAccount({
70
- accountAddress: botAccount.address,
71
- signerKey: botPrivateKey,
72
- delegation: accountProxy,
73
- authorizeKeys: [
74
- {
75
- expiry: '0', // No expiry
76
- type: 'secp256k1',
77
- role: 'admin',
78
- publicKey: encodedSuperAdminKey,
79
- permissions: [],
80
- },
81
- ],
82
- });
83
- if (!success || !accountAddress) {
84
- throw new Error(`Failed to create bot account: ${error ?? 'Unknown error'}`);
85
- }
86
- // Step 2: Create signer context using viem account for primary, ethers for delegate
87
- const delegatePrivateKey = generatePrivateKey();
88
- const delegateWallet = new ethers.Wallet(delegatePrivateKey);
89
- const signerContext = await makeSignerContext(botAccount, delegateWallet);
90
- // Step 3: Create RPC client
91
- const rpcClient = makeStreamRpcClient(townsConfig.services.node.url);
92
- // Step 4: Create crypto store
93
- const cryptoStore = RiverDbManager.getCryptoDb(accountAddress);
94
- // Step 5: Create and initialize the client
95
- const botClient = new Client(signerContext, accountAddress, rpcClient, cryptoStore, new MockEntitlementsDelegate());
96
- try {
97
- // Step 6: Initialize user on the River network
98
- await botClient.initializeUser({ appOwnerAddress: ownerAddress, skipSync: true });
99
- // Step 7: Upload device keys for encryption
100
- await botClient.uploadDeviceKeys();
101
- // Step 8: Export the encryption device
102
- const exportedDevice = await botClient.cryptoBackend?.exportDevice();
103
- if (!exportedDevice) {
104
- throw new Error('Failed to export encryption device');
105
- }
106
- // Step 9: Create the app private data
107
- const appPrivateData = makeAppPrivateData(botPrivateKey, exportedDevice, townsConfig.environmentId, accountAddress);
108
- return {
109
- appAddress: accountAddress,
110
- botPrivateKey,
111
- appPrivateData,
112
- };
113
- }
114
- finally {
115
- // Always stop the client
116
- await botClient.stop();
117
- }
118
- }
119
- /**
120
- * Creates a bot account using a WalletClient for signing.
121
- *
122
- * This variant is useful when you want to use a browser wallet or
123
- * other wallet provider that doesn't expose private keys directly.
124
- *
125
- * Note: You must provide a separate private key for the bot's encryption
126
- * device since the WalletClient can't export keys.
127
- *
128
- * @example
129
- * ```typescript
130
- * import { createWalletClient, custom } from 'viem'
131
- *
132
- * const walletClient = createWalletClient({
133
- * account: window.ethereum.selectedAddress,
134
- * chain: base,
135
- * transport: custom(window.ethereum),
136
- * })
137
- *
138
- * const result = await createBotFromWallet({
139
- * ownerAddress: walletClient.account.address,
140
- * publicClient,
141
- * accountProxy: contracts.accountProxy,
142
- * walletClient,
143
- * })
144
- * ```
145
- */
146
- export async function createBotFromWallet(params) {
147
- const { ownerAddress, publicClient, accountProxy, walletClient } = params;
148
- // Get or create the towns config
149
- const townsConfig = params.townsConfig ?? townsEnv().makeTownsConfig();
150
- // Generate a new private key for the bot
151
- const botPrivateKey = generatePrivateKey();
152
- const botAccount = privateKeyToAccount(botPrivateKey);
153
- // Encode the owner address for super admin key authorization
154
- const encodedSuperAdminKey = encodeAbiParameters([{ type: 'address' }], [ownerAddress]);
155
- // Step 1: Create the smart account via relayer using wallet client
156
- const { accountAddress, success, error } = await publicClient.createAccountWithWallet({
157
- accountAddress: botAccount.address,
158
- walletClient,
159
- delegation: accountProxy,
160
- authorizeKeys: [
161
- {
162
- expiry: '0',
163
- type: 'secp256k1',
164
- role: 'admin',
165
- publicKey: encodedSuperAdminKey,
166
- permissions: [],
167
- },
168
- ],
169
- });
170
- if (!success || !accountAddress) {
171
- throw new Error(`Failed to create bot account: ${error ?? 'Unknown error'}`);
172
- }
173
- // Step 2: Create signer context using viem account for primary, ethers for delegate
174
- const delegatePrivateKey = generatePrivateKey();
175
- const delegateWallet = new ethers.Wallet(delegatePrivateKey);
176
- const signerContext = await makeSignerContext(botAccount, delegateWallet);
177
- // Step 3: Create RPC client
178
- const rpcClient = makeStreamRpcClient(townsConfig.services.node.url);
179
- // Step 4: Create crypto store
180
- const cryptoStore = RiverDbManager.getCryptoDb(accountAddress);
181
- // Step 5: Create and initialize the client
182
- const botClient = new Client(signerContext, accountAddress, rpcClient, cryptoStore, new MockEntitlementsDelegate());
183
- try {
184
- // Step 6: Initialize user on the River network
185
- await botClient.initializeUser({ appOwnerAddress: ownerAddress, skipSync: true });
186
- // Step 7: Upload device keys for encryption
187
- await botClient.uploadDeviceKeys();
188
- // Step 8: Export the encryption device
189
- const exportedDevice = await botClient.cryptoBackend?.exportDevice();
190
- if (!exportedDevice) {
191
- throw new Error('Failed to export encryption device');
192
- }
193
- // Step 9: Create the app private data
194
- const appPrivateData = makeAppPrivateData(botPrivateKey, exportedDevice, townsConfig.environmentId, accountAddress);
195
- return {
196
- appAddress: accountAddress,
197
- botPrivateKey,
198
- appPrivateData,
199
- };
200
- }
201
- finally {
202
- // Always stop the client
203
- await botClient.stop();
204
- }
205
- }
206
- //# sourceMappingURL=createBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createBot.js","sourceRoot":"","sources":["../src/createBot.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { RiverChainConfig } from '@towns-protocol/web3';
2
- import { StreamRpcClient } from './makeStreamRpcClient';
3
- import { ethers } from 'ethers';
4
- import { RpcOptions } from './rpcCommon';
5
- export declare function makeRiverRpcClient(provider: ethers.providers.Provider, config: RiverChainConfig, opts?: RpcOptions): Promise<StreamRpcClient>;
6
- //# sourceMappingURL=makeRiverRpcClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"makeRiverRpcClient.d.ts","sourceRoot":"","sources":["../src/makeRiverRpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC,CAK1B"}
@@ -1,9 +0,0 @@
1
- import { createRiverRegistry } from '@towns-protocol/web3';
2
- import { makeStreamRpcClient } from './makeStreamRpcClient';
3
- export async function makeRiverRpcClient(provider, config, opts) {
4
- const riverRegistry = createRiverRegistry(provider, config);
5
- const urls = await riverRegistry.getOperationalNodeUrls();
6
- const rpcClient = makeStreamRpcClient(urls, () => riverRegistry.getOperationalNodeUrls(), opts);
7
- return rpcClient;
8
- }
9
- //# sourceMappingURL=makeRiverRpcClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"makeRiverRpcClient.js","sourceRoot":"","sources":["../src/makeRiverRpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAmB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,QAAmC,EACnC,MAAwB,EACxB,IAAiB;IAEjB,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,sBAAsB,EAAE,CAAA;IACzD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/F,OAAO,SAAS,CAAA;AACpB,CAAC"}
@@ -1,22 +0,0 @@
1
- import TypedEmitter from 'typed-emitter';
2
- import { ChannelProperties, WrappedEncryptedData } from '@towns-labs/proto';
3
- import { DecryptedContent } from './encryptedContentTypes';
4
- import { StreamEncryptionEvents, StreamEvents, StreamStateEvents } from './streamEvents';
5
- import { RemoteTimelineEvent } from './types';
6
- import { GdmStreamModel, GdmStreamsView } from './views/streams/gdmStreams';
7
- export declare class StreamStateView_ChannelMetadata {
8
- private gdmStreamsView;
9
- log: import("@towns-labs/utils").DLogger;
10
- readonly streamId: string;
11
- get channelProperties(): ChannelProperties | undefined;
12
- get metadataEventId(): string | undefined;
13
- get gdmStreamModel(): GdmStreamModel;
14
- constructor(streamId: string, gdmStreamsView: GdmStreamsView);
15
- applySnapshot(encryptedChannelProperties: WrappedEncryptedData, cleartexts: Record<string, Uint8Array | string> | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined): void;
16
- appendEvent(event: RemoteTimelineEvent, cleartext: Uint8Array | string | undefined, emitter: TypedEmitter<StreamEvents> | undefined): void;
17
- prependEvent(_event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _emitter: TypedEmitter<StreamEvents> | undefined): void;
18
- onDecryptedContent(eventId: string, content: DecryptedContent, stateEmitter: TypedEmitter<StreamStateEvents>): void;
19
- private decryptPayload;
20
- private handleDecryptedContent;
21
- }
22
- //# sourceMappingURL=streamStateView_ChannelMetadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamStateView_ChannelMetadata.d.ts","sourceRoot":"","sources":["../src/streamStateView_ChannelMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAiB,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,OAAO,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3E,qBAAa,+BAA+B;IAmBpC,OAAO,CAAC,cAAc;IAlB1B,GAAG,sCAAuC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAGzB,IAAI,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAErD;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;gBAGG,QAAQ,EAAE,MAAM,EACR,cAAc,EAAE,cAAc;IAK1C,aAAa,CACT,0BAA0B,EAAE,oBAAoB,EAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3D,iBAAiB,EAAE,YAAY,CAAC,sBAAsB,CAAC,GAAG,SAAS,GACpE,IAAI;IAWP,WAAW,CACP,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAC1C,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,GAChD,IAAI;IAQP,YAAY,CACR,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAC3C,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,GACjD,IAAI;IAIP,kBAAkB,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAC9C,IAAI;IAIP,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,sBAAsB;CAwBjC"}
@@ -1,77 +0,0 @@
1
- import { bin_toHexString, dlog, check } from '@towns-labs/utils';
2
- import { toDecryptedContent } from './encryptedContentTypes';
3
- // channel metadata is only used by gdms, could be moved back into the _GDMChannel helper
4
- export class StreamStateView_ChannelMetadata {
5
- gdmStreamsView;
6
- log = dlog('csb:streams:channel_metadata');
7
- streamId;
8
- // named channelProperties for backwards compatibility
9
- get channelProperties() {
10
- return this.gdmStreamModel.metadata;
11
- }
12
- get metadataEventId() {
13
- return this.gdmStreamModel.metadataEventId;
14
- }
15
- get gdmStreamModel() {
16
- return this.gdmStreamsView.get(this.streamId);
17
- }
18
- constructor(streamId, gdmStreamsView) {
19
- this.gdmStreamsView = gdmStreamsView;
20
- this.streamId = streamId;
21
- }
22
- applySnapshot(encryptedChannelProperties, cleartexts, encryptionEmitter) {
23
- if (!encryptedChannelProperties.data) {
24
- return;
25
- }
26
- const eventId = bin_toHexString(encryptedChannelProperties.eventHash);
27
- const cleartext = cleartexts?.[eventId];
28
- this.gdmStreamsView.setLatestMetadataEventId(this.streamId, eventId);
29
- this.decryptPayload(encryptedChannelProperties.data, eventId, cleartext, encryptionEmitter);
30
- }
31
- appendEvent(event, cleartext, emitter) {
32
- check(event.remoteEvent.event.payload.case === 'gdmChannelPayload');
33
- check(event.remoteEvent.event.payload.value.content.case === 'channelProperties');
34
- const payload = event.remoteEvent.event.payload.value.content.value;
35
- this.gdmStreamsView.setLatestMetadataEventId(this.streamId, event.hashStr);
36
- this.decryptPayload(payload, event.hashStr, cleartext, emitter);
37
- }
38
- prependEvent(_event, _cleartext, _emitter) {
39
- // conveyed in snapshot
40
- }
41
- onDecryptedContent(eventId, content, stateEmitter) {
42
- this.handleDecryptedContent(eventId, content, stateEmitter);
43
- }
44
- decryptPayload(payload, eventId, cleartext, encryptionEmitter) {
45
- if (cleartext) {
46
- const decryptedContent = toDecryptedContent('channelProperties', payload.version, cleartext);
47
- this.handleDecryptedContent(eventId, decryptedContent, encryptionEmitter);
48
- }
49
- else {
50
- encryptionEmitter?.emit('newEncryptedContent', this.streamId, eventId, {
51
- kind: 'channelProperties',
52
- content: payload,
53
- });
54
- }
55
- }
56
- handleDecryptedContent(eventId, content, emitter) {
57
- if (content.kind === 'channelProperties') {
58
- if (!this.gdmStreamModel.metadataEventId ||
59
- !this.gdmStreamModel.metadata ||
60
- this.gdmStreamModel.latestMetadataEventId === eventId) {
61
- this.gdmStreamsView.setMetadata(this.streamId, content.content, eventId);
62
- emitter?.emit('streamChannelPropertiesUpdated', this.streamId);
63
- }
64
- else {
65
- this.log('channelProperties eventId mismatch', {
66
- eventId,
67
- content,
68
- gdmStreamModel: this.gdmStreamModel,
69
- });
70
- }
71
- }
72
- else {
73
- check(false);
74
- }
75
- }
76
- }
77
- //# sourceMappingURL=streamStateView_ChannelMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamStateView_ChannelMetadata.js","sourceRoot":"","sources":["../src/streamStateView_ChannelMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAoB,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAK9E,yFAAyF;AACzF,MAAM,OAAO,+BAA+B;IAmB5B;IAlBZ,GAAG,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAA;IACjC,QAAQ,CAAQ;IAEzB,sDAAsD;IACtD,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAA;IACvC,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAA;IAC9C,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,YACI,QAAgB,EACR,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAEtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAED,aAAa,CACT,0BAAgD,EAChD,UAA2D,EAC3D,iBAAmE;QAEnE,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;YACnC,OAAM;QACV,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC/F,CAAC;IAED,WAAW,CACP,KAA0B,EAC1B,SAA0C,EAC1C,OAA+C;QAE/C,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAA;QACnE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAA;QACjF,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;QACnE,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;IAED,YAAY,CACR,MAA2B,EAC3B,UAA2C,EAC3C,QAAgD;QAEhD,uBAAuB;IAC3B,CAAC;IAED,kBAAkB,CACd,OAAe,EACf,OAAyB,EACzB,YAA6C;QAE7C,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;IAC/D,CAAC;IAEO,cAAc,CAClB,OAAsB,EACtB,OAAe,EACf,SAA0C,EAC1C,iBAAmE;QAEnE,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,kBAAkB,CACvC,mBAAmB,EACnB,OAAO,CAAC,OAAO,EACf,SAAS,CACZ,CAAA;YACD,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAA;QAC7E,CAAC;aAAM,CAAC;YACJ,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;gBACnE,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,OAAO;aACnB,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAEO,sBAAsB,CAC1B,OAAe,EACf,OAAyB,EACzB,OAA+C;QAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACvC,IACI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe;gBACpC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;gBAC7B,IAAI,CAAC,cAAc,CAAC,qBAAqB,KAAK,OAAO,EACvD,CAAC;gBACC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACxE,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,oCAAoC,EAAE;oBAC3C,OAAO;oBACP,OAAO;oBACP,cAAc,EAAE,IAAI,CAAC,cAAc;iBACtC,CAAC,CAAA;YACN,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;IACL,CAAC;CACJ"}
@@ -1,10 +0,0 @@
1
- import { EntitlementsDelegate } from '../../decryptionExtensions';
2
- import { Permission, SpaceDapp } from '@towns-labs/web3';
3
- import { TownsConfig } from '../../townsEnv';
4
- export declare class Entitlements implements EntitlementsDelegate {
5
- private config;
6
- private spaceDapp;
7
- constructor(config: TownsConfig, spaceDapp: SpaceDapp);
8
- isEntitled(spaceId: string | undefined, channelId: string | undefined, user: string, permission: Permission): Promise<boolean>;
9
- }
10
- //# sourceMappingURL=entitlements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../../../src/sync-agent/entitlements/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,qBAAa,YAAa,YAAW,oBAAoB;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;gBADT,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,SAAS;IAG1B,UAAU,CACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU;CAU7B"}
@@ -1,20 +0,0 @@
1
- export class Entitlements {
2
- config;
3
- spaceDapp;
4
- constructor(config, spaceDapp) {
5
- this.config = config;
6
- this.spaceDapp = spaceDapp;
7
- }
8
- async isEntitled(spaceId, channelId, user, permission) {
9
- if (channelId && spaceId) {
10
- return this.spaceDapp.isEntitledToChannel(spaceId, channelId, user, permission);
11
- }
12
- else if (spaceId) {
13
- return this.spaceDapp.isEntitledToSpace(spaceId, user, permission);
14
- }
15
- else {
16
- return true;
17
- }
18
- }
19
- }
20
- //# sourceMappingURL=entitlements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../../src/sync-agent/entitlements/entitlements.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,YAAY;IAET;IACA;IAFZ,YACY,MAAmB,EACnB,SAAoB;QADpB,WAAM,GAAN,MAAM,CAAa;QACnB,cAAS,GAAT,SAAS,CAAW;IAC7B,CAAC;IAEJ,KAAK,CAAC,UAAU,CACZ,OAA2B,EAC3B,SAA6B,EAC7B,IAAY,EACZ,UAAsB;QAEtB,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;CACJ"}
@@ -1,24 +0,0 @@
1
- import { RiverRegistry } from '@towns-protocol/web3';
2
- import { PersistedObservable } from '../../../observable/persistedObservable';
3
- import { Store } from '../../../store/store';
4
- export interface RiverChainModel {
5
- id: '0';
6
- urls: {
7
- value: string;
8
- fetchedAtMs?: number;
9
- };
10
- }
11
- export declare class RiverChain extends PersistedObservable<RiverChainModel> {
12
- private riverRegistryDapp;
13
- private userId;
14
- private log;
15
- private sessionStartMs;
16
- private stopped;
17
- constructor(store: Store, riverRegistryDapp: RiverRegistry, userId: string, logId: string);
18
- protected onLoaded(): void;
19
- stop(): void;
20
- urls(): Promise<string>;
21
- fetchUrls(): Promise<string>;
22
- private withInfiniteRetries;
23
- }
24
- //# sourceMappingURL=riverChain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"riverChain.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/river-connection/models/riverChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,yCAAyC,CAAA;AAClG,OAAO,EAAgB,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAM1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,GAAG,CAAA;IAEP,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACJ;AAGD,qBAGa,UAAW,SAAQ,mBAAmB,CAAC,eAAe,CAAC;IAO5D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,MAAM;IAPlB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,OAAO,CAAQ;gBAGnB,KAAK,EAAE,KAAK,EACJ,iBAAiB,EAAE,aAAa,EAChC,MAAM,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM;cASE,QAAQ;IAK3B,IAAI;IAIE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,OAAO,CAAC,mBAAmB;CAY9B"}