@dynamic-labs-sdk/client 1.19.1 → 1.20.0
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.
- package/dist/client/core/createCore/getInitialState.d.ts.map +1 -1
- package/dist/client/types/DynamicClientConfig.d.ts +53 -6
- package/dist/client/types/DynamicClientConfig.d.ts.map +1 -1
- package/dist/core.cjs +9 -9
- package/dist/core.cjs.map +1 -1
- package/dist/core.esm.js +5 -5
- package/dist/core.native.esm.js +5 -5
- package/dist/{getNetworkProviderFromNetworkId-Ct6nH2tC.esm.js → getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js} +103 -57
- package/dist/getNetworkProviderFromNetworkId-BlBx4Zh2.esm.js.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-DmH039jx.cjs → getNetworkProviderFromNetworkId-DaVOUpiF.cjs} +104 -59
- package/dist/getNetworkProviderFromNetworkId-DaVOUpiF.cjs.map +1 -0
- package/dist/{getNetworkProviderFromNetworkId-DL6OXPUn.native.esm.js → getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js} +152 -146
- package/dist/getNetworkProviderFromNetworkId-xmoBE1cZ.native.esm.js.map +1 -0
- package/dist/{getSignedSessionId-Dz4U61DG.cjs → getSignedSessionId-3L_aMxVD.cjs} +3 -3
- package/dist/{getSignedSessionId-Dz4U61DG.cjs.map → getSignedSessionId-3L_aMxVD.cjs.map} +1 -1
- package/dist/{getSignedSessionId-CAQwZYYk.esm.js → getSignedSessionId-BVc-sgeN.esm.js} +3 -3
- package/dist/{getSignedSessionId-CAQwZYYk.esm.js.map → getSignedSessionId-BVc-sgeN.esm.js.map} +1 -1
- package/dist/{getSignedSessionId-CPautem1.native.esm.js → getSignedSessionId-DlmNVy-g.native.esm.js} +3 -3
- package/dist/{getSignedSessionId-CPautem1.native.esm.js.map → getSignedSessionId-DlmNVy-g.native.esm.js.map} +1 -1
- package/dist/{getWalletProviderByKey-CSVSMios.cjs → getWalletProviderByKey-BilyW5Jr.cjs} +2 -2
- package/dist/{getWalletProviderByKey-CSVSMios.cjs.map → getWalletProviderByKey-BilyW5Jr.cjs.map} +1 -1
- package/dist/{getWalletProviderByKey-BKveb5Rh.native.esm.js → getWalletProviderByKey-Ccx26JsF.native.esm.js} +2 -2
- package/dist/{getWalletProviderByKey-BKveb5Rh.native.esm.js.map → getWalletProviderByKey-Ccx26JsF.native.esm.js.map} +1 -1
- package/dist/{getWalletProviderByKey-DTBGx_qd.esm.js → getWalletProviderByKey-PIO1ygzj.esm.js} +2 -2
- package/dist/{getWalletProviderByKey-DTBGx_qd.esm.js.map → getWalletProviderByKey-PIO1ygzj.esm.js.map} +1 -1
- package/dist/index.cjs +16 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +8 -17
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.esm.js +8 -17
- package/dist/index.native.esm.js.map +1 -1
- package/dist/{isDynamicWaasEnabled-gu-9QF8-.native.esm.js → isDynamicWaasEnabled-C4oPJ0fw.native.esm.js} +2 -2
- package/dist/{isDynamicWaasEnabled-gu-9QF8-.native.esm.js.map → isDynamicWaasEnabled-C4oPJ0fw.native.esm.js.map} +1 -1
- package/dist/{isDynamicWaasEnabled-Dmbdiybh.cjs → isDynamicWaasEnabled-DXVcXa66.cjs} +2 -3
- package/dist/{isDynamicWaasEnabled-Dmbdiybh.cjs.map → isDynamicWaasEnabled-DXVcXa66.cjs.map} +1 -1
- package/dist/{isDynamicWaasEnabled-Bb9e8w3u.esm.js → isDynamicWaasEnabled-JpnXC0f7.esm.js} +2 -2
- package/dist/{isDynamicWaasEnabled-Bb9e8w3u.esm.js.map → isDynamicWaasEnabled-JpnXC0f7.esm.js.map} +1 -1
- package/dist/{isMfaRequiredForAction-DxJQm48x.esm.js → isMfaRequiredForAction-20E6GsSc.esm.js} +3 -10
- package/dist/isMfaRequiredForAction-20E6GsSc.esm.js.map +1 -0
- package/dist/{isMfaRequiredForAction-CHeYEkjj.cjs → isMfaRequiredForAction-9bYtZcve.cjs} +4 -50
- package/dist/isMfaRequiredForAction-9bYtZcve.cjs.map +1 -0
- package/dist/{isMfaRequiredForAction-BkrwKqo1.native.esm.js → isMfaRequiredForAction-D6rt_Tzn.native.esm.js} +2 -2
- package/dist/{isMfaRequiredForAction-BkrwKqo1.native.esm.js.map → isMfaRequiredForAction-D6rt_Tzn.native.esm.js.map} +1 -1
- package/dist/{isUserOnboardingComplete-CruwjMvs.cjs → isUserOnboardingComplete-CsoV3ae7.cjs} +3 -4
- package/dist/{isUserOnboardingComplete-CruwjMvs.cjs.map → isUserOnboardingComplete-CsoV3ae7.cjs.map} +1 -1
- package/dist/{isUserOnboardingComplete-BLm0JQ_z.native.esm.js → isUserOnboardingComplete-DnExOJu7.native.esm.js} +3 -3
- package/dist/{isUserOnboardingComplete-BLm0JQ_z.native.esm.js.map → isUserOnboardingComplete-DnExOJu7.native.esm.js.map} +1 -1
- package/dist/{isUserOnboardingComplete-DAesufca.esm.js → isUserOnboardingComplete-diGA1wlX.esm.js} +3 -3
- package/dist/{isUserOnboardingComplete-DAesufca.esm.js.map → isUserOnboardingComplete-diGA1wlX.esm.js.map} +1 -1
- package/dist/{migrateFromFireblocks-C-lXWvvo.esm.js → migrateFromFireblocks--G-432sl.esm.js} +3 -3
- package/dist/{migrateFromFireblocks-C-lXWvvo.esm.js.map → migrateFromFireblocks--G-432sl.esm.js.map} +1 -1
- package/dist/{migrateFromFireblocks-DrHwloUB.cjs → migrateFromFireblocks-BrWXstt8.cjs} +3 -3
- package/dist/{migrateFromFireblocks-DrHwloUB.cjs.map → migrateFromFireblocks-BrWXstt8.cjs.map} +1 -1
- package/dist/{migrateFromFireblocks-Do4mQTl7.native.esm.js → migrateFromFireblocks-CqL5l58Q.native.esm.js} +3 -3
- package/dist/{migrateFromFireblocks-Do4mQTl7.native.esm.js.map → migrateFromFireblocks-CqL5l58Q.native.esm.js.map} +1 -1
- package/dist/modules/storageSync/hydrateStateWithStorage/hydrateStateWithStorage.d.ts.map +1 -1
- package/dist/modules/storageSync/schema.d.ts +0 -2
- package/dist/modules/storageSync/schema.d.ts.map +1 -1
- package/dist/modules/storageSync/syncStateWithStorage/syncStateWithStorage.d.ts.map +1 -1
- package/dist/modules/wallets/networks/getNetworksData/getNetworksData.d.ts +4 -0
- package/dist/modules/wallets/networks/getNetworksData/getNetworksData.d.ts.map +1 -1
- package/dist/modules/wallets/networks/networkDataSchema/index.d.ts +2 -0
- package/dist/modules/wallets/networks/networkDataSchema/index.d.ts.map +1 -0
- package/dist/modules/wallets/networks/networkDataSchema/networkDataSchema.d.ts +23 -0
- package/dist/modules/wallets/networks/networkDataSchema/networkDataSchema.d.ts.map +1 -0
- package/dist/modules/wallets/walletAccount/walletAccount.types.d.ts +2 -0
- package/dist/modules/wallets/walletAccount/walletAccount.types.d.ts.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/{updateAuthFromVerifyResponse-CY0xTIXF.cjs → updateAuthFromVerifyResponse-B0K1VJ8b.cjs} +141 -27
- package/dist/updateAuthFromVerifyResponse-B0K1VJ8b.cjs.map +1 -0
- package/dist/{updateAuthFromVerifyResponse-inxvMWJB.esm.js → updateAuthFromVerifyResponse-CVDQVEQM.esm.js} +96 -27
- package/dist/updateAuthFromVerifyResponse-CVDQVEQM.esm.js.map +1 -0
- package/dist/{updateAuthFromVerifyResponse-D4au3jUv.native.esm.js → updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js} +129 -27
- package/dist/updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js.map +1 -0
- package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts +7 -5
- package/dist/utils/getNonce/fetchAndStoreNonces/fetchAndStoreNonces.d.ts.map +1 -1
- package/dist/utils/getNonce/getNonce.d.ts +10 -4
- package/dist/utils/getNonce/getNonce.d.ts.map +1 -1
- package/dist/utils/getNonce/noncePoolStorage/schema.d.ts +19 -0
- package/dist/utils/getNonce/noncePoolStorage/schema.d.ts.map +1 -0
- package/dist/utils/getNonce/noncePoolStorage/updateNoncePoolStorage/updateNoncePoolStorage.d.ts +18 -0
- package/dist/utils/getNonce/noncePoolStorage/updateNoncePoolStorage/updateNoncePoolStorage.d.ts.map +1 -0
- package/dist/utils/getNonce/prefetchNoncesIfNeeded/prefetchNoncesIfNeeded.d.ts.map +1 -1
- package/dist/utils/getNonce/state.d.ts +5 -9
- package/dist/utils/getNonce/state.d.ts.map +1 -1
- package/dist/waas.cjs +4 -5
- package/dist/waas.cjs.map +1 -1
- package/dist/waas.esm.js +4 -4
- package/dist/waas.native.esm.js +4 -4
- package/dist/waasCore.cjs +6 -6
- package/dist/waasCore.esm.js +6 -6
- package/dist/waasCore.native.esm.js +6 -6
- package/package.json +4 -4
- package/dist/getNetworkProviderFromNetworkId-Ct6nH2tC.esm.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-DL6OXPUn.native.esm.js.map +0 -1
- package/dist/getNetworkProviderFromNetworkId-DmH039jx.cjs.map +0 -1
- package/dist/isMfaRequiredForAction-CHeYEkjj.cjs.map +0 -1
- package/dist/isMfaRequiredForAction-DxJQm48x.esm.js.map +0 -1
- package/dist/updateAuthFromVerifyResponse-CY0xTIXF.cjs.map +0 -1
- package/dist/updateAuthFromVerifyResponse-D4au3jUv.native.esm.js.map +0 -1
- package/dist/updateAuthFromVerifyResponse-inxvMWJB.esm.js.map +0 -1
package/dist/{migrateFromFireblocks-C-lXWvvo.esm.js.map → migrateFromFireblocks--G-432sl.esm.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateFromFireblocks-
|
|
1
|
+
{"version":3,"file":"migrateFromFireblocks--G-432sl.esm.js","names":["refreshAuth"],"sources":["../src/errors/NotWaasWalletProviderError.ts","../src/modules/waas/getWaasWalletProviderFromWalletAccount/getWaasWalletProviderFromWalletAccount.ts","../src/modules/waas/migrateFromFireblocks/migrateFromFireblocks.ts"],"sourcesContent":["import { BaseError } from './base';\n\ntype NotWaasWalletProviderErrorParams = {\n walletProviderKey: string;\n};\n\nexport class NotWaasWalletProviderError extends BaseError {\n constructor({ walletProviderKey }: NotWaasWalletProviderErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_provider_error',\n docsUrl: null,\n name: 'NotWaasWalletProviderError',\n shortMessage: `Wallet provider ${walletProviderKey} is not a Dynamic WaaS wallet provider`,\n });\n }\n}\n","import type { DynamicClient } from '../../../client/types/DynamicClient';\nimport { NotWaasWalletAccountError } from '../../../errors/NotWaasWalletAccountError';\nimport { getWalletProviderFromWalletAccount } from '../../wallets/utils/getWalletProviderFromWalletAccount';\nimport type { WalletAccount } from '../../wallets/walletAccount';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\nimport type { WaasWalletProvider } from '../waas.types';\n\ntype GetWalletProviderFromWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\nexport const getWaasWalletProviderFromWalletAccount = (\n { walletAccount }: GetWalletProviderFromWalletAccountParams,\n client: DynamicClient\n): WaasWalletProvider => {\n const walletProvider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isWaasWalletProvider(walletProvider)) {\n throw new NotWaasWalletAccountError({\n walletAddress: walletAccount.address,\n });\n }\n\n return walletProvider;\n};\n","import type { MigrateFromFireblocksResponse } from '@dynamic-labs-wallet/browser-wallet-client';\n\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { NoWalletProviderFoundError } from '../../../errors/NoWalletProviderFoundError';\nimport { NotWaasWalletProviderError } from '../../../errors/NotWaasWalletProviderError';\nimport { refreshAuth } from '../../user/refreshAuth';\nimport { getWalletProviders } from '../../wallets/getWalletProviders';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\n\ntype MigrateFromFireblocksParams = {\n /**\n * Optional SLIP-0044 coin types per chain name for BIP44 derivation off the\n * Fireblocks takeover xprv (e.g. `{ EVM: 1 }` for Sepolia).\n */\n coinTypes?: Record<string, number>;\n /**\n * The Fireblocks NCW device id whose key material is being migrated.\n */\n deviceId: string;\n /**\n * Required per-chain expected wallet address (the address Fireblocks held). Its\n * keys are the chains migration runs on, and the migration iframe verifies each\n * imported Dynamic address matches the value, so a wrong derivation fails loudly\n * instead of producing an unusable wallet.\n */\n expectedAddresses: Record<string, string>;\n /**\n * The Fireblocks-issued JWT authorizing the takeover.\n */\n jwt: string;\n /**\n * The password that encrypted the legacy Fireblocks NCW device storage.\n */\n password: string;\n /**\n * The serialized Fireblocks NCW device storage (the local key share backup).\n */\n storage: Record<string, string>;\n};\n\n/**\n * Migrates an existing Fireblocks NCW wallet into Dynamic's WaaS infrastructure.\n *\n * Migration is a single cross-chain operation: one call takes over the Fireblocks\n * key material and provisions Dynamic WaaS wallet accounts for every supported\n * chain. Because it is not per-chain, this resolves a single WaaS wallet provider\n * (any registered chain) and delegates the takeover to it.\n *\n * @param params.deviceId - The Fireblocks NCW device id being migrated.\n * @param params.jwt - The Fireblocks-issued JWT authorizing the takeover.\n * @param params.storage - The serialized Fireblocks NCW device storage.\n * @param params.password - The password that encrypted the legacy device storage.\n * @param params.expectedAddresses - Required per-chain expected address; its keys are the chains migration runs on, and each imported address is verified against it.\n * @param [params.coinTypes] - Optional SLIP-0044 coin types per chain name.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise resolving to the per-chain migration results.\n * @notInstrumented\n */\nexport const migrateFromFireblocks = async (\n {\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n }: MigrateFromFireblocksParams,\n client = getDefaultClient()\n): Promise<MigrateFromFireblocksResponse> => {\n const providers = getWalletProviders(client);\n\n if (providers.length === 0) {\n throw new NoWalletProviderFoundError({\n walletProviderKey: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n // Migration is cross-chain, so any registered WaaS provider can drive the\n // takeover. Resolve the first one rather than iterating per chain.\n const waasProvider = providers.find(isWaasWalletProvider);\n\n if (!waasProvider) {\n throw new NotWaasWalletProviderError({\n walletProviderKey: providers[0].key,\n });\n }\n\n const result = await waasProvider.migrateFromFireblocks({\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n });\n\n await refreshAuth(client);\n\n return result;\n};\n"],"mappings":";;;;AAMA,IAAa,6BAAb,cAAgD,UAAU;CACxD,YAAY,EAAE,qBAAuD;AACnE,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,mBAAmB,kBAAkB;GACpD,CAAC;;;;;;;ACFN,MAAa,0CACX,EAAE,iBACF,WACuB;CACvB,MAAM,iBAAiB,mCACrB,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAAC,qBAAqB,eAAe,CACvC,OAAM,IAAI,0BAA0B,EAClC,eAAe,cAAc,SAC9B,CAAC;AAGJ,QAAO;;;;;;;;;;;;;;;;;;;;;;;ACgCT,MAAa,wBAAwB,OACnC,EACE,WACA,UACA,mBACA,KACA,UACA,WAEF,SAAS,kBAAkB,KACgB;CAC3C,MAAM,YAAY,mBAAmB,OAAO;AAE5C,KAAI,UAAU,WAAW,EACvB,OAAM,IAAI,2BAA2B,EACnC,mBAAmB,sBAAsB,aAC1C,CAAC;CAKJ,MAAM,eAAe,UAAU,KAAK,qBAAqB;AAEzD,KAAI,CAAC,aACH,OAAM,IAAI,2BAA2B,EACnC,mBAAmB,UAAU,GAAG,KACjC,CAAC;CAGJ,MAAM,SAAS,MAAM,aAAa,sBAAsB;EACtD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,OAAMA,sBAAY,OAAO;AAEzB,QAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_updateAuthFromVerifyResponse = require('./updateAuthFromVerifyResponse-
|
|
2
|
-
const require_isDynamicWaasEnabled = require('./isDynamicWaasEnabled-
|
|
1
|
+
const require_updateAuthFromVerifyResponse = require('./updateAuthFromVerifyResponse-B0K1VJ8b.cjs');
|
|
2
|
+
const require_isDynamicWaasEnabled = require('./isDynamicWaasEnabled-DXVcXa66.cjs');
|
|
3
3
|
|
|
4
4
|
//#region src/errors/NotWaasWalletProviderError.ts
|
|
5
5
|
var NotWaasWalletProviderError = class extends require_updateAuthFromVerifyResponse.BaseError {
|
|
@@ -79,4 +79,4 @@ Object.defineProperty(exports, 'migrateFromFireblocks', {
|
|
|
79
79
|
return migrateFromFireblocks;
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
|
-
//# sourceMappingURL=migrateFromFireblocks-
|
|
82
|
+
//# sourceMappingURL=migrateFromFireblocks-BrWXstt8.cjs.map
|
package/dist/{migrateFromFireblocks-DrHwloUB.cjs.map → migrateFromFireblocks-BrWXstt8.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateFromFireblocks-
|
|
1
|
+
{"version":3,"file":"migrateFromFireblocks-BrWXstt8.cjs","names":["BaseError","getWalletProviderFromWalletAccount","isWaasWalletProvider","NotWaasWalletAccountError","getDefaultClient","getWalletProviders","NoWalletProviderFoundError","DYNAMIC_WAAS_METADATA","isWaasWalletProvider","refreshAuth"],"sources":["../src/errors/NotWaasWalletProviderError.ts","../src/modules/waas/getWaasWalletProviderFromWalletAccount/getWaasWalletProviderFromWalletAccount.ts","../src/modules/waas/migrateFromFireblocks/migrateFromFireblocks.ts"],"sourcesContent":["import { BaseError } from './base';\n\ntype NotWaasWalletProviderErrorParams = {\n walletProviderKey: string;\n};\n\nexport class NotWaasWalletProviderError extends BaseError {\n constructor({ walletProviderKey }: NotWaasWalletProviderErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_provider_error',\n docsUrl: null,\n name: 'NotWaasWalletProviderError',\n shortMessage: `Wallet provider ${walletProviderKey} is not a Dynamic WaaS wallet provider`,\n });\n }\n}\n","import type { DynamicClient } from '../../../client/types/DynamicClient';\nimport { NotWaasWalletAccountError } from '../../../errors/NotWaasWalletAccountError';\nimport { getWalletProviderFromWalletAccount } from '../../wallets/utils/getWalletProviderFromWalletAccount';\nimport type { WalletAccount } from '../../wallets/walletAccount';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\nimport type { WaasWalletProvider } from '../waas.types';\n\ntype GetWalletProviderFromWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\nexport const getWaasWalletProviderFromWalletAccount = (\n { walletAccount }: GetWalletProviderFromWalletAccountParams,\n client: DynamicClient\n): WaasWalletProvider => {\n const walletProvider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isWaasWalletProvider(walletProvider)) {\n throw new NotWaasWalletAccountError({\n walletAddress: walletAccount.address,\n });\n }\n\n return walletProvider;\n};\n","import type { MigrateFromFireblocksResponse } from '@dynamic-labs-wallet/browser-wallet-client';\n\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { NoWalletProviderFoundError } from '../../../errors/NoWalletProviderFoundError';\nimport { NotWaasWalletProviderError } from '../../../errors/NotWaasWalletProviderError';\nimport { refreshAuth } from '../../user/refreshAuth';\nimport { getWalletProviders } from '../../wallets/getWalletProviders';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\n\ntype MigrateFromFireblocksParams = {\n /**\n * Optional SLIP-0044 coin types per chain name for BIP44 derivation off the\n * Fireblocks takeover xprv (e.g. `{ EVM: 1 }` for Sepolia).\n */\n coinTypes?: Record<string, number>;\n /**\n * The Fireblocks NCW device id whose key material is being migrated.\n */\n deviceId: string;\n /**\n * Required per-chain expected wallet address (the address Fireblocks held). Its\n * keys are the chains migration runs on, and the migration iframe verifies each\n * imported Dynamic address matches the value, so a wrong derivation fails loudly\n * instead of producing an unusable wallet.\n */\n expectedAddresses: Record<string, string>;\n /**\n * The Fireblocks-issued JWT authorizing the takeover.\n */\n jwt: string;\n /**\n * The password that encrypted the legacy Fireblocks NCW device storage.\n */\n password: string;\n /**\n * The serialized Fireblocks NCW device storage (the local key share backup).\n */\n storage: Record<string, string>;\n};\n\n/**\n * Migrates an existing Fireblocks NCW wallet into Dynamic's WaaS infrastructure.\n *\n * Migration is a single cross-chain operation: one call takes over the Fireblocks\n * key material and provisions Dynamic WaaS wallet accounts for every supported\n * chain. Because it is not per-chain, this resolves a single WaaS wallet provider\n * (any registered chain) and delegates the takeover to it.\n *\n * @param params.deviceId - The Fireblocks NCW device id being migrated.\n * @param params.jwt - The Fireblocks-issued JWT authorizing the takeover.\n * @param params.storage - The serialized Fireblocks NCW device storage.\n * @param params.password - The password that encrypted the legacy device storage.\n * @param params.expectedAddresses - Required per-chain expected address; its keys are the chains migration runs on, and each imported address is verified against it.\n * @param [params.coinTypes] - Optional SLIP-0044 coin types per chain name.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise resolving to the per-chain migration results.\n * @notInstrumented\n */\nexport const migrateFromFireblocks = async (\n {\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n }: MigrateFromFireblocksParams,\n client = getDefaultClient()\n): Promise<MigrateFromFireblocksResponse> => {\n const providers = getWalletProviders(client);\n\n if (providers.length === 0) {\n throw new NoWalletProviderFoundError({\n walletProviderKey: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n // Migration is cross-chain, so any registered WaaS provider can drive the\n // takeover. Resolve the first one rather than iterating per chain.\n const waasProvider = providers.find(isWaasWalletProvider);\n\n if (!waasProvider) {\n throw new NotWaasWalletProviderError({\n walletProviderKey: providers[0].key,\n });\n }\n\n const result = await waasProvider.migrateFromFireblocks({\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n });\n\n await refreshAuth(client);\n\n return result;\n};\n"],"mappings":";;;;AAMA,IAAa,6BAAb,cAAgDA,+CAAU;CACxD,YAAY,EAAE,qBAAuD;AACnE,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,mBAAmB,kBAAkB;GACpD,CAAC;;;;;;;ACFN,MAAa,0CACX,EAAE,iBACF,WACuB;CACvB,MAAM,iBAAiBC,wEACrB,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAACC,0DAAqB,eAAe,CACvC,OAAM,IAAIC,uDAA0B,EAClC,eAAe,cAAc,SAC9B,CAAC;AAGJ,QAAO;;;;;;;;;;;;;;;;;;;;;;;ACgCT,MAAa,wBAAwB,OACnC,EACE,WACA,UACA,mBACA,KACA,UACA,WAEF,SAASC,uDAAkB,KACgB;CAC3C,MAAM,YAAYC,wDAAmB,OAAO;AAE5C,KAAI,UAAU,WAAW,EACvB,OAAM,IAAIC,gEAA2B,EACnC,mBAAmBC,2DAAsB,aAC1C,CAAC;CAKJ,MAAM,eAAe,UAAU,KAAKC,0DAAqB;AAEzD,KAAI,CAAC,aACH,OAAM,IAAI,2BAA2B,EACnC,mBAAmB,UAAU,GAAG,KACjC,CAAC;CAGJ,MAAM,SAAS,MAAM,aAAa,sBAAsB;EACtD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,OAAMC,mDAAY,OAAO;AAEzB,QAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as getWalletProviderFromWalletAccount, _t as BaseError, c as isWaasWalletProvider, d as DYNAMIC_WAAS_METADATA, f as getWalletProviders, k as NoWalletProviderFoundError
|
|
2
|
-
import { n as NotWaasWalletAccountError, r as __refreshAuth_wrapped } from "./isDynamicWaasEnabled-
|
|
1
|
+
import { T as getWalletProviderFromWalletAccount, _t as getDefaultClient, bt as BaseError, c as isWaasWalletProvider, d as DYNAMIC_WAAS_METADATA, f as getWalletProviders, k as NoWalletProviderFoundError } from "./updateAuthFromVerifyResponse-DGrmo9MJ.native.esm.js";
|
|
2
|
+
import { n as NotWaasWalletAccountError, r as __refreshAuth_wrapped } from "./isDynamicWaasEnabled-C4oPJ0fw.native.esm.js";
|
|
3
3
|
|
|
4
4
|
//#region src/errors/NotWaasWalletProviderError.ts
|
|
5
5
|
var NotWaasWalletProviderError = class extends BaseError {
|
|
@@ -62,4 +62,4 @@ const migrateFromFireblocks = async ({ coinTypes, deviceId, expectedAddresses, j
|
|
|
62
62
|
|
|
63
63
|
//#endregion
|
|
64
64
|
export { getWaasWalletProviderFromWalletAccount as n, NotWaasWalletProviderError as r, migrateFromFireblocks as t };
|
|
65
|
-
//# sourceMappingURL=migrateFromFireblocks-
|
|
65
|
+
//# sourceMappingURL=migrateFromFireblocks-CqL5l58Q.native.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateFromFireblocks-
|
|
1
|
+
{"version":3,"file":"migrateFromFireblocks-CqL5l58Q.native.esm.js","names":["refreshAuth"],"sources":["../src/errors/NotWaasWalletProviderError.ts","../src/modules/waas/getWaasWalletProviderFromWalletAccount/getWaasWalletProviderFromWalletAccount.ts","../src/modules/waas/migrateFromFireblocks/migrateFromFireblocks.ts"],"sourcesContent":["import { BaseError } from './base';\n\ntype NotWaasWalletProviderErrorParams = {\n walletProviderKey: string;\n};\n\nexport class NotWaasWalletProviderError extends BaseError {\n constructor({ walletProviderKey }: NotWaasWalletProviderErrorParams) {\n super({\n cause: null,\n code: 'not_waas_wallet_provider_error',\n docsUrl: null,\n name: 'NotWaasWalletProviderError',\n shortMessage: `Wallet provider ${walletProviderKey} is not a Dynamic WaaS wallet provider`,\n });\n }\n}\n","import type { DynamicClient } from '../../../client/types/DynamicClient';\nimport { NotWaasWalletAccountError } from '../../../errors/NotWaasWalletAccountError';\nimport { getWalletProviderFromWalletAccount } from '../../wallets/utils/getWalletProviderFromWalletAccount';\nimport type { WalletAccount } from '../../wallets/walletAccount';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\nimport type { WaasWalletProvider } from '../waas.types';\n\ntype GetWalletProviderFromWalletAccountParams = {\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\nexport const getWaasWalletProviderFromWalletAccount = (\n { walletAccount }: GetWalletProviderFromWalletAccountParams,\n client: DynamicClient\n): WaasWalletProvider => {\n const walletProvider = getWalletProviderFromWalletAccount(\n { walletAccount },\n client\n );\n\n if (!isWaasWalletProvider(walletProvider)) {\n throw new NotWaasWalletAccountError({\n walletAddress: walletAccount.address,\n });\n }\n\n return walletProvider;\n};\n","import type { MigrateFromFireblocksResponse } from '@dynamic-labs-wallet/browser-wallet-client';\n\nimport { getDefaultClient } from '../../../client/defaultClient';\nimport { NoWalletProviderFoundError } from '../../../errors/NoWalletProviderFoundError';\nimport { NotWaasWalletProviderError } from '../../../errors/NotWaasWalletProviderError';\nimport { refreshAuth } from '../../user/refreshAuth';\nimport { getWalletProviders } from '../../wallets/getWalletProviders';\nimport { DYNAMIC_WAAS_METADATA } from '../constants';\nimport { isWaasWalletProvider } from '../isWaasWalletProvider';\n\ntype MigrateFromFireblocksParams = {\n /**\n * Optional SLIP-0044 coin types per chain name for BIP44 derivation off the\n * Fireblocks takeover xprv (e.g. `{ EVM: 1 }` for Sepolia).\n */\n coinTypes?: Record<string, number>;\n /**\n * The Fireblocks NCW device id whose key material is being migrated.\n */\n deviceId: string;\n /**\n * Required per-chain expected wallet address (the address Fireblocks held). Its\n * keys are the chains migration runs on, and the migration iframe verifies each\n * imported Dynamic address matches the value, so a wrong derivation fails loudly\n * instead of producing an unusable wallet.\n */\n expectedAddresses: Record<string, string>;\n /**\n * The Fireblocks-issued JWT authorizing the takeover.\n */\n jwt: string;\n /**\n * The password that encrypted the legacy Fireblocks NCW device storage.\n */\n password: string;\n /**\n * The serialized Fireblocks NCW device storage (the local key share backup).\n */\n storage: Record<string, string>;\n};\n\n/**\n * Migrates an existing Fireblocks NCW wallet into Dynamic's WaaS infrastructure.\n *\n * Migration is a single cross-chain operation: one call takes over the Fireblocks\n * key material and provisions Dynamic WaaS wallet accounts for every supported\n * chain. Because it is not per-chain, this resolves a single WaaS wallet provider\n * (any registered chain) and delegates the takeover to it.\n *\n * @param params.deviceId - The Fireblocks NCW device id being migrated.\n * @param params.jwt - The Fireblocks-issued JWT authorizing the takeover.\n * @param params.storage - The serialized Fireblocks NCW device storage.\n * @param params.password - The password that encrypted the legacy device storage.\n * @param params.expectedAddresses - Required per-chain expected address; its keys are the chains migration runs on, and each imported address is verified against it.\n * @param [params.coinTypes] - Optional SLIP-0044 coin types per chain name.\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise resolving to the per-chain migration results.\n * @notInstrumented\n */\nexport const migrateFromFireblocks = async (\n {\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n }: MigrateFromFireblocksParams,\n client = getDefaultClient()\n): Promise<MigrateFromFireblocksResponse> => {\n const providers = getWalletProviders(client);\n\n if (providers.length === 0) {\n throw new NoWalletProviderFoundError({\n walletProviderKey: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n // Migration is cross-chain, so any registered WaaS provider can drive the\n // takeover. Resolve the first one rather than iterating per chain.\n const waasProvider = providers.find(isWaasWalletProvider);\n\n if (!waasProvider) {\n throw new NotWaasWalletProviderError({\n walletProviderKey: providers[0].key,\n });\n }\n\n const result = await waasProvider.migrateFromFireblocks({\n coinTypes,\n deviceId,\n expectedAddresses,\n jwt,\n password,\n storage,\n });\n\n await refreshAuth(client);\n\n return result;\n};\n"],"mappings":";;;;AAMA,IAAa,6BAAb,cAAgD,UAAU;CACxD,YAAY,EAAE,qBAAuD;AACnE,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cAAc,mBAAmB,kBAAkB;GACpD,CAAC;;;;;;;ACFN,MAAa,0CACX,EAAE,iBACF,WACuB;CACvB,MAAM,iBAAiB,mCACrB,EAAE,eAAe,EACjB,OACD;AAED,KAAI,CAAC,qBAAqB,eAAe,CACvC,OAAM,IAAI,0BAA0B,EAClC,eAAe,cAAc,SAC9B,CAAC;AAGJ,QAAO;;;;;;;;;;;;;;;;;;;;;;;ACgCT,MAAa,wBAAwB,OACnC,EACE,WACA,UACA,mBACA,KACA,UACA,WAEF,SAAS,kBAAkB,KACgB;CAC3C,MAAM,YAAY,mBAAmB,OAAO;AAE5C,KAAI,UAAU,WAAW,EACvB,OAAM,IAAI,2BAA2B,EACnC,mBAAmB,sBAAsB,aAC1C,CAAC;CAKJ,MAAM,eAAe,UAAU,KAAK,qBAAqB;AAEzD,KAAI,CAAC,aACH,OAAM,IAAI,2BAA2B,EACnC,mBAAmB,UAAU,GAAG,KACjC,CAAC;CAGJ,MAAM,SAAS,MAAM,aAAa,sBAAsB;EACtD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,OAAMA,sBAAY,OAAO;AAEzB,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrateStateWithStorage.d.ts","sourceRoot":"","sources":["../../../../src/modules/storageSync/hydrateStateWithStorage/hydrateStateWithStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,uBAAuB;AACvB,eAAO,MAAM,uBAAuB,WAC1B,aAAa,KACpB,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"hydrateStateWithStorage.d.ts","sourceRoot":"","sources":["../../../../src/modules/storageSync/hydrateStateWithStorage/hydrateStateWithStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,uBAAuB;AACvB,eAAO,MAAM,uBAAuB,WAC1B,aAAa,KACpB,OAAO,CAAC,IAAI,CA4Dd,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ProjectSettings, SdkUser } from '@dynamic-labs/sdk-api-core';
|
|
2
2
|
export declare const stateStorageKeySchema: import("../../services/storage").StorageKeySchema<{
|
|
3
3
|
apiVersion: string;
|
|
4
|
-
prefetchedNonces: string[];
|
|
5
|
-
prefetchedNoncesExpiration: number | null;
|
|
6
4
|
projectSettings: ProjectSettings | null;
|
|
7
5
|
unverifiedWalletAccounts: {
|
|
8
6
|
address: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/storageSync/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAO3E,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/storageSync/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAO3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;EA4DlC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncStateWithStorage.d.ts","sourceRoot":"","sources":["../../../../src/modules/storageSync/syncStateWithStorage/syncStateWithStorage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,uBAAuB;AACvB,eAAO,MAAM,oBAAoB,WAAY,aAAa,
|
|
1
|
+
{"version":3,"file":"syncStateWithStorage.d.ts","sourceRoot":"","sources":["../../../../src/modules/storageSync/syncStateWithStorage/syncStateWithStorage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,uBAAuB;AACvB,eAAO,MAAM,oBAAoB,WAAY,aAAa,SAqCzD,CAAC"}
|
|
@@ -9,6 +9,10 @@ import type { NetworkData } from '../networkProvider/networkProvider.types';
|
|
|
9
9
|
* it will be applied to each network before returning the data. This allows you to
|
|
10
10
|
* customize network properties (such as RPC URLs) in a centralized way.
|
|
11
11
|
*
|
|
12
|
+
* If a `transformers.networksData` callback was provided, it then receives the full
|
|
13
|
+
* flattened list and its (validated) return value is what the SDK uses, allowing
|
|
14
|
+
* networks to be rewritten, filtered, reordered, or added.
|
|
15
|
+
*
|
|
12
16
|
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
13
17
|
* @returns An array of network configuration data for all enabled networks.
|
|
14
18
|
* @notInstrumented
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNetworksData.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wallets/networks/getNetworksData/getNetworksData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getNetworksData.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wallets/networks/getNetworksData/getNetworksData.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,4DAAkC,WAAW,EA4FxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wallets/networks/networkDataSchema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as z from 'zod/mini';
|
|
2
|
+
import type { NetworkData } from '../networkProvider/networkProvider.types';
|
|
3
|
+
/**
|
|
4
|
+
* Runtime shape of {@link NetworkData}. Identical to the declared type except
|
|
5
|
+
* `iconUrl`, which the type declares as required but is legitimately
|
|
6
|
+
* `undefined` at runtime for networks without configured icons.
|
|
7
|
+
*/
|
|
8
|
+
type NetworkDataRuntime = Omit<NetworkData, 'iconUrl'> & {
|
|
9
|
+
iconUrl?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Runtime schema mirroring the {@link NetworkData} type, used to validate the
|
|
13
|
+
* output of the `transformers.networksData` callback before it is handed to the
|
|
14
|
+
* rest of the SDK.
|
|
15
|
+
*
|
|
16
|
+
* The explicit `z.ZodMiniType<NetworkDataRuntime>` annotation pins the schema
|
|
17
|
+
* to the type at compile time: a field added to or changed on `NetworkData`
|
|
18
|
+
* without a matching schema update fails compilation, so the two cannot
|
|
19
|
+
* silently drift apart. Unknown extra properties are accepted and preserved.
|
|
20
|
+
*/
|
|
21
|
+
export declare const networkDataSchema: z.ZodMiniType<NetworkDataRuntime>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=networkDataSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networkDataSchema.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wallets/networks/networkDataSchema/networkDataSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAI9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAE5E;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAwB9D,CAAC"}
|
|
@@ -8,6 +8,8 @@ declare global {
|
|
|
8
8
|
export type WalletAddressType = `${ApiWalletAddressType}`;
|
|
9
9
|
export type WalletAddressWithType = {
|
|
10
10
|
address: string;
|
|
11
|
+
/** Network this address is encoded for (e.g. 'mainnet' | 'testnet'). Present when a wallet exposes an address per network. */
|
|
12
|
+
network?: string;
|
|
11
13
|
publicKey?: string;
|
|
12
14
|
type: WalletAddressType;
|
|
13
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletAccount.types.d.ts","sourceRoot":"","sources":["../../../../src/modules/wallets/walletAccount/walletAccount.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,gBAAgB;KAAG;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,oBAAoB,EAAE,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,IAAI;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GACvB,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,SAAS,KAAK,GAClD,iBAAiB,CAAC,KAAK,CAAC,GACxB,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"walletAccount.types.d.ts","sourceRoot":"","sources":["../../../../src/modules/wallets/walletAccount/walletAccount.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,gBAAgB;KAAG;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,oBAAoB,EAAE,CAAC;AAE1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,8HAA8H;IAC9H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,IAAI;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GACvB,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,SAAS,KAAK,GAClD,iBAAiB,CAAC,KAAK,CAAC,GACxB,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,CAAC"}
|