@wallet-ui/react-native-web3js 2.2.1 → 2.2.2-canary-20260120001346

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 (33) hide show
  1. package/dist/index.browser.cjs +96 -57
  2. package/dist/index.browser.cjs.map +1 -1
  3. package/dist/index.browser.mjs +97 -58
  4. package/dist/index.browser.mjs.map +1 -1
  5. package/dist/index.native.mjs +97 -58
  6. package/dist/index.native.mjs.map +1 -1
  7. package/dist/index.node.cjs +96 -57
  8. package/dist/index.node.cjs.map +1 -1
  9. package/dist/index.node.mjs +97 -58
  10. package/dist/index.node.mjs.map +1 -1
  11. package/dist/types/async-storage-cache.d.ts +10 -0
  12. package/dist/types/async-storage-cache.d.ts.map +1 -0
  13. package/dist/types/cache.d.ts +29 -0
  14. package/dist/types/cache.d.ts.map +1 -0
  15. package/dist/types/index.d.ts +1 -0
  16. package/dist/types/index.d.ts.map +1 -1
  17. package/dist/types/mobile-wallet-provider.d.ts +4 -4
  18. package/dist/types/mobile-wallet-provider.d.ts.map +1 -1
  19. package/dist/types/use-authorization-storage.d.ts +21 -0
  20. package/dist/types/use-authorization-storage.d.ts.map +1 -0
  21. package/dist/types/use-authorization.d.ts +7 -3
  22. package/dist/types/use-authorization.d.ts.map +1 -1
  23. package/dist/types/use-fetch-authorization.d.ts +5 -1
  24. package/dist/types/use-fetch-authorization.d.ts.map +1 -1
  25. package/dist/types/use-mobile-wallet.d.ts +3 -2
  26. package/dist/types/use-mobile-wallet.d.ts.map +1 -1
  27. package/dist/types/use-persist-authorization.d.ts +5 -1
  28. package/dist/types/use-persist-authorization.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/dist/types/use-invalidate-authorizations.d.ts +0 -2
  31. package/dist/types/use-invalidate-authorizations.d.ts.map +0 -1
  32. package/dist/types/use-query-config.d.ts +0 -6
  33. package/dist/types/use-query-config.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mobile-wallet-provider.tsx","../src/get-public-key-from-address.ts","../src/get-account-from-authorized-account.ts","../src/get-authorization-from-authorization-result.ts","../src/use-query-config.ts","../src/use-fetch-authorization.ts","../src/use-invalidate-authorizations.ts","../src/use-persist-authorization.ts","../src/use-authorization.ts","../src/use-mobile-wallet.ts"],"names":["PublicKey","AsyncStorage","useMemo","useCallback"],"mappings":";;;;;;;;;;;;AAiBO,IAAM,2BAAA,GAA8B,aAAA,CAAyC,EAA+B;AAC5G,SAAS,oBAAA,CAAqB;AAAA,EACjC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,kBAAA,GAAqB,EAAE,UAAA,EAAY,WAAA,EAAY;AAAA,EAC/C,QAAA;AAAA,EACA;AACJ,CAAA,EAA8B;AAC1B,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,MAAM,IAAI,UAAA,CAAW,QAAA,EAAU,kBAAkB,CAAA,EAAG,CAAC,kBAAA,EAAoB,QAAQ,CAAC,CAAA;AAE7G,EAAA,uBACI,KAAA,CAAA,aAAA;AAAA,IAAC,2BAAA,CAA4B,QAAA;AAAA,IAA5B;AAAA,MACG,KAAA,EAAO,OAAA;AAAA,QACH,OAAO;AAAA,UACH,KAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA,SACJ,CAAA;AAAA,QACA,CAAC,UAAA,EAAY,QAAA,EAAU,KAAK;AAAA;AAChC,KAAA;AAAA,IAEC;AAAA,GACL;AAER;ACrCO,SAAS,wBAAwB,OAAA,EAA0C;AAC9E,EAAA,MAAM,kBAAA,GAAqB,aAAa,OAAO,CAAA;AAE/C,EAAA,OAAO,IAAI,UAAU,kBAAkB,CAAA;AAC3C;;;ACHA,SAAS,UAAU,GAAA,GAAM,EAAA,EAAI,GAAA,GAAM,CAAA,EAAG,YAAY,IAAA,EAAM;AACpD,EAAA,MAAM,KAAA,GAAQ,GAAA,GAAM,CAAA,GAAI,SAAA,CAAU,MAAA;AAElC,EAAA,OAAO,GAAA,CAAI,MAAA,GAAS,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAI,SAAA,GAAY,GAAA,CAAI,KAAA,CAAM,CAAC,GAAG,CAAA,GAAI,GAAA;AAClF;AAEO,SAAS,gCAAgC,OAAA,EAAqC;AACjF,EAAA,MAAM,SAAA,GAAY,uBAAA,CAAwB,OAAA,CAAQ,OAAO,CAAA;AAEzD,EAAA,OAAO;AAAA,IACH,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,OAAO,OAAA,CAAQ,KAAA,IAAS,UAAU,SAAA,CAAU,QAAA,IAAY,CAAC,CAAA;AAAA,IACzD;AAAA,GACJ;AACJ;;;ACfO,SAAS,uCAAA,CACZ,qBACA,yBAAA,EACmB;AACnB,EAAA,IAAI,eAAA;AACJ,EAAA;AAAA;AAAA,IAEI,yBAAA,IAA6B,IAAA;AAAA,IAE7B,CAAC,mBAAA,CAAoB,QAAA,CAAS,IAAA,CAAK,CAAC,EAAE,OAAA,EAAQ,KAAM,OAAA,KAAY,yBAAA,CAA0B,OAAO;AAAA,IACnG;AACE,IAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,QAAA,CAAS,CAAC,CAAA;AACnD,IAAA,eAAA,GAAkB,gCAAgC,YAAY,CAAA;AAAA,EAClE,CAAA,MAAO;AACH,IAAA,eAAA,GAAkB,yBAAA;AAAA,EACtB;AACA,EAAA,OAAO;AAAA,IACH,QAAA,EAAU,mBAAA,CAAoB,QAAA,CAAS,GAAA,CAAI,+BAA+B,CAAA;AAAA,IAC1E,WAAW,mBAAA,CAAoB,UAAA;AAAA,IAC/B;AAAA,GACJ;AACJ;ACxBO,SAAS,cAAA,GAAiB;AAC7B,EAAA,MAAM,UAAA,GAAa,qBAAA;AACnB,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,QAAA,GAAW,CAAC,sBAAsB,CAAA;AAExC,EAAA,OAAO,EAAE,WAAA,EAAa,QAAA,EAAU,UAAA,EAAW;AAC/C;;;ACDA,SAAS,YAAA,CAAa,KAAa,KAAA,EAAgB;AAC/C,EAAA,IAAI,QAAQ,WAAA,EAAa;AACrB,IAAA,OAAO,IAAIA,UAAU,KAA0B,CAAA;AAAA,EACnD,CAAA,MAAO;AACH,IAAA,OAAO,KAAA;AAAA,EACX;AACJ;AAEO,SAAS,qBAAA,GAAwB;AACpC,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAW,GAAI,cAAA,EAAe;AAChD,EAAA,OAAO,QAAA,CAAS;AAAA,IACZ,SAAS,YAAiD;AACtD,MAAA,MAAM,gBAAA,GAAmB,MAAM,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA;AAG9D,MAAA,OAAO,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,gBAAA,EAAkB,YAAY,CAAA,GAAI,IAAA;AAAA,IAC3E,CAAA;AAAA,IACA;AAAA,GACH,CAAA;AACL;;;ACxBO,SAAS,2BAAA,GAA8B;AAC1C,EAAA,MAAM,EAAE,WAAA,EAAa,QAAA,EAAS,GAAI,cAAA,EAAe;AAEjD,EAAA,OAAO,MAAM,WAAA,CAAY,iBAAA,CAAkB,EAAE,UAAU,CAAA;AAC3D;ACAO,SAAS,uBAAA,GAA0B;AACtC,EAAA,MAAM,EAAE,WAAA,EAAa,QAAA,EAAU,UAAA,KAAe,cAAA,EAAe;AAC7D,EAAA,OAAO,WAAA,CAAY;AAAA,IACf,UAAA,EAAY,OAAO,IAAA,KAAoD;AACnE,MAAA,MAAMC,aAAa,OAAA,CAAQ,UAAA,EAAY,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,IAC/D,CAAA;AAAA,IACA,WAAW,YAAY;AACnB,MAAA,MAAM,WAAA,CAAY,iBAAA,CAAkB,EAAE,QAAA,EAAU,CAAA;AAAA,IACpD;AAAA,GACH,CAAA;AACL;;;ACkBO,SAAS,gBAAA,CAAiB,EAAE,KAAA,EAAO,QAAA,EAAS,EAA4C;AAC3F,EAAA,MAAM,aAAa,qBAAA,EAAsB;AACzC,EAAA,MAAM,2BAA2B,2BAAA,EAA4B;AAC7D,EAAA,MAAM,kBAAkB,uBAAA,EAAwB;AAEhD,EAAA,MAAM,yBAAA,GAA4B,WAAA;AAAA,IAC9B,OAAO,mBAAA,KAA2E;AAC9E,MAAA,MAAM,iBAAA,GAAoB,uCAAA;AAAA,QACtB,mBAAA;AAAA,QACA,WAAW,IAAA,EAAM;AAAA,OACrB;AACA,MAAA,MAAM,eAAA,CAAgB,YAAY,iBAAiB,CAAA;AACnD,MAAA,OAAO,iBAAA;AAAA,IACX,CAAA;AAAA,IACA,CAAC,UAAA,CAAW,IAAA,EAAM,eAAA,EAAiB,eAAe;AAAA,GACtD;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACrB,OAAO,MAAA,KAAyB;AAC5B,MAAA,IAAI;AACA,QAAA,MAAM,mBAAA,GAAsB,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,UAC/C,UAAA,EAAY,WAAW,IAAA,EAAM,SAAA;AAAA,UAC7B,KAAA;AAAA,UACA;AAAA,SACH,CAAA;AACD,QAAA,OAAA,CAAQ,MAAM,yBAAA,CAA0B,mBAAmB,CAAA,EAAG,eAAA;AAAA,MAClE,SAAS,KAAA,EAAO;AACZ,QAAA,IACI,KAAA,YAAiB,sCAAA,IACjB,KAAA,CAAM,IAAA,KAAS,2CAA2C,0BAAA,EAC5D;AACE,UAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,YACvC,KAAA;AAAA,YACA;AAAA,WACH,CAAA;AACD,UAAA,OAAA,CAAQ,MAAM,yBAAA,CAA0B,WAAW,CAAA,EAAG,eAAA;AAAA,QAC1D;AACA,QAAA,MAAM,KAAA;AAAA,MACV;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,UAAA,CAAW,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,UAAU,yBAAyB;AAAA,GAC3E;AAEA,EAAA,MAAM,0BAAA,GAA6B,WAAA;AAAA,IAC/B,OAAO,QAAsB,aAAA,KAAiC;AAC1D,MAAA,IAAI;AACA,QAAA,MAAM,mBAAA,GAAsB,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,UAC/C,UAAA,EAAY,WAAW,IAAA,EAAM,SAAA;AAAA,UAC7B,KAAA;AAAA,UACA,QAAA;AAAA,UACA,eAAA,EAAiB;AAAA,SACpB,CAAA;AACD,QAAA,OAAA,CAAQ,MAAM,yBAAA,CAA0B,mBAAmB,CAAA,EAAG,eAAA;AAAA,MAClE,SAAS,KAAA,EAAO;AACZ,QAAA,IACI,KAAA,YAAiB,sCAAA,IACjB,KAAA,CAAM,IAAA,KAAS,2CAA2C,0BAAA,EAC5D;AACE,UAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,SAAA,CAAU;AAAA,YACvC,KAAA;AAAA,YACA,QAAA;AAAA,YACA,eAAA,EAAiB;AAAA,WACpB,CAAA;AACD,UAAA,OAAA,CAAQ,MAAM,yBAAA,CAA0B,WAAW,CAAA,EAAG,eAAA;AAAA,QAC1D;AACA,QAAA,MAAM,KAAA;AAAA,MACV;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,UAAA,CAAW,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,UAAU,yBAAyB;AAAA,GAC3E;AAEA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACvB,OAAO,MAAA,KAA2B;AAC9B,MAAA,IAAI,UAAA,CAAW,IAAA,EAAM,SAAA,IAAa,IAAA,EAAM;AACpC,QAAA;AAAA,MACJ;AACA,MAAA,MAAM,OAAO,WAAA,CAAY,EAAE,YAAY,UAAA,CAAW,IAAA,CAAK,WAAW,CAAA;AAClE,MAAA,MAAM,eAAA,CAAgB,YAAY,IAAI,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA,CAAC,UAAA,CAAW,IAAA,EAAM,SAAA,EAAW,eAAe;AAAA,GAChD;AAEA,EAAA,MAAM,mBAAA,GAAsB,YAAY,YAAY;AAChD,IAAA,MAAM,wBAAA,EAAyB;AAC/B,IAAA,MAAM,eAAA,CAAgB,YAAY,IAAI,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,wBAAA,EAA0B,eAAe,CAAC,CAAA;AAE9C,EAAA,OAAOC,OAAAA;AAAA,IACH,OAAO;AAAA,MACH,QAAA,EAAU,UAAA,CAAW,IAAA,EAAM,QAAA,IAAY,IAAA;AAAA,MACvC,gBAAA;AAAA,MACA,0BAAA;AAAA,MACA,kBAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAW,UAAA,CAAW,SAAA;AAAA,MACtB,eAAA,EAAiB,UAAA,CAAW,IAAA,EAAM,eAAA,IAAmB;AAAA,KACzD,CAAA;AAAA,IACA;AAAA,MACI,gBAAA;AAAA,MACA,0BAAA;AAAA,MACA,kBAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAW,IAAA,EAAM,QAAA;AAAA,MACjB,WAAW,IAAA,EAAM,eAAA;AAAA,MACjB,UAAA,CAAW;AAAA;AACf,GACJ;AACJ;ACrIO,SAAS,eAAA,GAAkB;AAC9B,EAAA,MAAM,GAAA,GAAM,WAAW,2BAA2B,CAAA;AAClD,EAAA,MAAM,EAAE,4BAA4B,gBAAA,EAAkB,mBAAA,EAAqB,iBAAiB,GAAG,aAAA,EAAc,GACzG,gBAAA,CAAiB,GAAG,CAAA;AAExB,EAAA,MAAM,OAAA,GAAUC,WAAAA;AAAA,IACZ,YAA8B,MAAM,QAAA,CAAS,OAAM,WAAU,MAAM,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,IAC3F,CAAC,gBAAgB;AAAA,GACrB;AAEA,EAAA,MAAM,UAAA,GAAaA,WAAAA;AAAA,IACf,OAAO,EAAA,KAAmF;AACtF,MAAA,OAAO,MAAM,QAAA,CAAS,OAAM,WAAU,MAAM,EAAA,CAAG,MAAM,CAAC,CAAA;AAAA,IAC1D,CAAA;AAAA,IACA;AAAC,GACL;AAEA,EAAA,MAAM,MAAA,GAASA,WAAAA;AAAA,IACX,OAAO,aAAA,KACH,MAAM,QAAA,CAAS,OAAM,WAAU,MAAM,0BAAA,CAA2B,MAAA,EAAQ,aAAa,CAAC,CAAA;AAAA,IAC1F,CAAC,0BAA0B;AAAA,GAC/B;AAEA,EAAA,MAAM,UAAA,GAAaA,YAAY,YAA2B,MAAM,qBAAoB,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAE5G,EAAA,MAAM,sBAAA,GAAyBA,WAAAA;AAAA,IAC3B,OACI,WAAA,EACA,cAAA,KAEA,MAAM,QAAA,CAAS,OAAM,MAAA,KAAU;AAC3B,MAAA,MAAM,iBAAiB,MAAM,CAAA;AAC7B,MAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,uBAAA,CAAwB;AAAA,QACpD,cAAA;AAAA,QACA,YAAA,EAAc,CAAC,WAAW;AAAA,OAC7B,CAAA;AACD,MAAA,OAAO,WAAW,CAAC,CAAA;AAAA,IACvB,CAAC,CAAA;AAAA,IACL,CAAC,gBAAgB;AAAA,GACrB;AAEA,EAAA,MAAM,WAAA,GAAcA,WAAAA;AAAA,IAChB,OAAO,OAAA,KACH,MAAM,QAAA,CAAS,OAAM,MAAA,KAAU;AAC3B,MAAA,MAAM,UAAA,GAAa,MAAM,gBAAA,CAAiB,MAAM,CAAA;AAChD,MAAA,MAAM,cAAA,GAAiB,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,QAC7C,SAAA,EAAW,CAAC,UAAA,CAAW,OAAO,CAAA;AAAA,QAC9B,QAAA,EAAU,CAAC,OAAO;AAAA,OACrB,CAAA;AACD,MAAA,OAAO,eAAe,CAAC,CAAA;AAAA,IAC3B,CAAC,CAAA;AAAA,IACL,CAAC,gBAAgB;AAAA,GACrB;AAEA,EAAA,OAAOD,OAAAA;AAAA,IACH,OAAO;AAAA,MACH,GAAG,GAAA;AAAA,MACH,GAAG,aAAA;AAAA,MACH,OAAA,EAAS,eAAA;AAAA,MACT,OAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACJ,CAAA;AAAA,IACA;AAAA,MACI,aAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,eAAA;AAAA,MACA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA;AACJ,GACJ;AACJ","file":"index.node.mjs","sourcesContent":["import { Commitment, Connection, ConnectionConfig } from '@solana/web3.js';\nimport { AppIdentity, Chain } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport React, { createContext, type ReactNode, useMemo } from 'react';\n\nexport interface MobileWalletProviderProps {\n chain: Chain;\n children: ReactNode;\n commitmentOrConfig?: Commitment | ConnectionConfig;\n endpoint: string;\n identity: AppIdentity;\n}\nexport interface MobileWalletProviderState {\n chain: Chain;\n connection: Connection;\n identity: AppIdentity;\n}\n\nexport const MobileWalletProviderContext = createContext<MobileWalletProviderState>({} as MobileWalletProviderState);\nexport function MobileWalletProvider({\n children,\n chain,\n commitmentOrConfig = { commitment: 'confirmed' },\n endpoint,\n identity,\n}: MobileWalletProviderProps) {\n const connection = useMemo(() => new Connection(endpoint, commitmentOrConfig), [commitmentOrConfig, endpoint]);\n\n return (\n <MobileWalletProviderContext.Provider\n value={useMemo(\n () => ({\n chain,\n connection,\n identity,\n }),\n [connection, identity, chain],\n )}\n >\n {children}\n </MobileWalletProviderContext.Provider>\n );\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { Base64EncodedAddress } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { toUint8Array } from 'js-base64';\n\nexport function getPublicKeyFromAddress(address: Base64EncodedAddress): PublicKey {\n const publicKeyByteArray = toUint8Array(address);\n\n return new PublicKey(publicKeyByteArray);\n}\n","import { Account as AuthorizedAccount } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getPublicKeyFromAddress } from './get-public-key-from-address';\nimport { Account } from './use-authorization';\n\nfunction ellipsify(str = '', len = 4, delimiter = '..') {\n const limit = len * 2 + delimiter.length;\n\n return str.length > limit ? str.slice(0, len) + delimiter + str.slice(-len) : str;\n}\n\nexport function getAccountFromAuthorizedAccount(account: AuthorizedAccount): Account {\n const publicKey = getPublicKeyFromAddress(account.address);\n\n return {\n address: account.address,\n icon: account.icon,\n label: account.label ?? ellipsify(publicKey.toString(), 8),\n publicKey,\n };\n}\n","import { AuthorizationResult } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getAccountFromAuthorizedAccount } from './get-account-from-authorized-account';\nimport { Account, WalletAuthorization } from './use-authorization';\n\nexport function getAuthorizationFromAuthorizationResult(\n authorizationResult: AuthorizationResult,\n previouslySelectedAccount?: Account,\n): WalletAuthorization {\n let selectedAccount: Account;\n if (\n // We have yet to select an account.\n previouslySelectedAccount == null ||\n // The previously selected account is no longer in the set of authorized addresses.\n !authorizationResult.accounts.some(({ address }) => address === previouslySelectedAccount.address)\n ) {\n const firstAccount = authorizationResult.accounts[0];\n selectedAccount = getAccountFromAuthorizedAccount(firstAccount);\n } else {\n selectedAccount = previouslySelectedAccount;\n }\n return {\n accounts: authorizationResult.accounts.map(getAccountFromAuthorizedAccount),\n authToken: authorizationResult.auth_token,\n selectedAccount,\n };\n}\n","import { useQueryClient } from '@tanstack/react-query';\n\nexport function useQueryConfig() {\n const storageKey = 'authorization-cache';\n const queryClient = useQueryClient();\n const queryKey = ['wallet-authorization'];\n\n return { queryClient, queryKey, storageKey };\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { PublicKey, PublicKeyInitData } from '@solana/web3.js';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { WalletAuthorization } from './use-authorization';\nimport { useQueryConfig } from './use-query-config';\n\nfunction cacheReviver(key: string, value: unknown) {\n if (key === 'publicKey') {\n return new PublicKey(value as PublicKeyInitData); // the PublicKeyInitData should match the actual data structure stored in AsyncStorage\n } else {\n return value;\n }\n}\n\nexport function useFetchAuthorization() {\n const { queryKey, storageKey } = useQueryConfig();\n return useQuery({\n queryFn: async (): Promise<WalletAuthorization | null> => {\n const cacheFetchResult = await AsyncStorage.getItem(storageKey);\n\n // Return prior authorization, if found.\n return cacheFetchResult ? JSON.parse(cacheFetchResult, cacheReviver) : null;\n },\n queryKey,\n });\n}\n","import { useQueryConfig } from './use-query-config';\n\nexport function useInvalidateAuthorizations() {\n const { queryClient, queryKey } = useQueryConfig();\n\n return () => queryClient.invalidateQueries({ queryKey });\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { WalletAuthorization } from './use-authorization';\nimport { useQueryConfig } from './use-query-config';\n\nexport function usePersistAuthorization() {\n const { queryClient, queryKey, storageKey } = useQueryConfig();\n return useMutation({\n mutationFn: async (auth: WalletAuthorization | null): Promise<void> => {\n await AsyncStorage.setItem(storageKey, JSON.stringify(auth));\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey });\n },\n });\n}\n","import { PublicKey } from '@solana/web3.js';\nimport {\n AppIdentity,\n AuthorizationResult,\n AuthorizeAPI,\n AuthToken,\n Base64EncodedAddress,\n Chain,\n DeauthorizeAPI,\n SignInPayload,\n SolanaMobileWalletAdapterProtocolError,\n SolanaMobileWalletAdapterProtocolErrorCode,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { WalletIcon } from '@wallet-standard/core';\nimport { useCallback, useMemo } from 'react';\n\nimport { getAuthorizationFromAuthorizationResult } from './get-authorization-from-authorization-result';\nimport { useFetchAuthorization } from './use-fetch-authorization';\nimport { useInvalidateAuthorizations } from './use-invalidate-authorizations';\nimport { usePersistAuthorization } from './use-persist-authorization';\n\nexport type Account = Readonly<{\n address: Base64EncodedAddress;\n icon?: WalletIcon;\n label?: string;\n publicKey: PublicKey;\n}>;\n\nexport type WalletAuthorization = Readonly<{\n accounts: Account[];\n authToken: AuthToken;\n selectedAccount: Account;\n}>;\n\nexport function useAuthorization({ chain, identity }: { chain: Chain; identity: AppIdentity }) {\n const fetchQuery = useFetchAuthorization();\n const invalidateAuthorizations = useInvalidateAuthorizations();\n const persistMutation = usePersistAuthorization();\n\n const handleAuthorizationResult = useCallback(\n async (authorizationResult: AuthorizationResult): Promise<WalletAuthorization> => {\n const nextAuthorization = getAuthorizationFromAuthorizationResult(\n authorizationResult,\n fetchQuery.data?.selectedAccount,\n );\n await persistMutation.mutateAsync(nextAuthorization);\n return nextAuthorization;\n },\n [fetchQuery.data?.selectedAccount, persistMutation],\n );\n\n const authorizeSession = useCallback(\n async (wallet: AuthorizeAPI) => {\n try {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain,\n identity,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n } catch (error) {\n if (\n error instanceof SolanaMobileWalletAdapterProtocolError &&\n error.code === SolanaMobileWalletAdapterProtocolErrorCode.ERROR_AUTHORIZATION_FAILED\n ) {\n const retryResult = await wallet.authorize({\n chain,\n identity,\n });\n return (await handleAuthorizationResult(retryResult)).selectedAccount;\n }\n throw error;\n }\n },\n [fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult],\n );\n\n const authorizeSessionWithSignIn = useCallback(\n async (wallet: AuthorizeAPI, signInPayload: SignInPayload) => {\n try {\n const authorizationResult = await wallet.authorize({\n auth_token: fetchQuery.data?.authToken,\n chain,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n } catch (error) {\n if (\n error instanceof SolanaMobileWalletAdapterProtocolError &&\n error.code === SolanaMobileWalletAdapterProtocolErrorCode.ERROR_AUTHORIZATION_FAILED\n ) {\n const retryResult = await wallet.authorize({\n chain,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(retryResult)).selectedAccount;\n }\n throw error;\n }\n },\n [fetchQuery.data?.authToken, chain, identity, handleAuthorizationResult],\n );\n\n const deauthorizeSession = useCallback(\n async (wallet: DeauthorizeAPI) => {\n if (fetchQuery.data?.authToken == null) {\n return;\n }\n await wallet.deauthorize({ auth_token: fetchQuery.data.authToken });\n await persistMutation.mutateAsync(null);\n },\n [fetchQuery.data?.authToken, persistMutation],\n );\n\n const deauthorizeSessions = useCallback(async () => {\n await invalidateAuthorizations();\n await persistMutation.mutateAsync(null);\n }, [invalidateAuthorizations, persistMutation]);\n\n return useMemo(\n () => ({\n accounts: fetchQuery.data?.accounts ?? null,\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n isLoading: fetchQuery.isLoading,\n selectedAccount: fetchQuery.data?.selectedAccount ?? null,\n }),\n [\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n fetchQuery.data?.accounts,\n fetchQuery.data?.selectedAccount,\n fetchQuery.isLoading,\n ],\n );\n}\n","import { Transaction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';\nimport { AuthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\nimport { useCallback, useContext, useMemo } from 'react';\n\nimport { MobileWalletProviderContext } from './mobile-wallet-provider';\nimport { Account, useAuthorization } from './use-authorization';\n\nexport function useMobileWallet() {\n const ctx = useContext(MobileWalletProviderContext);\n const { authorizeSessionWithSignIn, authorizeSession, deauthorizeSessions, selectedAccount, ...authorization } =\n useAuthorization(ctx);\n\n const connect = useCallback(\n async (): Promise<Account> => await transact(async wallet => await authorizeSession(wallet)),\n [authorizeSession],\n );\n\n const connectAnd = useCallback(\n async (cb: (wallet: AuthorizeAPI) => Promise<Account | void>): Promise<Account | void> => {\n return await transact(async wallet => await cb(wallet));\n },\n [],\n );\n\n const signIn = useCallback(\n async (signInPayload: SignInPayload): Promise<Account> =>\n await transact(async wallet => await authorizeSessionWithSignIn(wallet, signInPayload)),\n [authorizeSessionWithSignIn],\n );\n\n const disconnect = useCallback(async (): Promise<void> => await deauthorizeSessions(), [deauthorizeSessions]);\n\n const signAndSendTransaction = useCallback(\n async (\n transaction: Transaction | VersionedTransaction,\n minContextSlot: number,\n ): Promise<TransactionSignature> =>\n await transact(async wallet => {\n await authorizeSession(wallet);\n const signatures = await wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }),\n [authorizeSession],\n );\n\n const signMessage = useCallback(\n async (message: Uint8Array): Promise<Uint8Array> =>\n await transact(async wallet => {\n const authResult = await authorizeSession(wallet);\n const signedMessages = await wallet.signMessages({\n addresses: [authResult.address],\n payloads: [message],\n });\n return signedMessages[0];\n }),\n [authorizeSession],\n );\n\n return useMemo(\n () => ({\n ...ctx,\n ...authorization,\n account: selectedAccount,\n connect,\n connectAnd,\n disconnect,\n signAndSendTransaction,\n signIn,\n signMessage,\n }),\n [\n authorization,\n connect,\n connectAnd,\n ctx,\n disconnect,\n selectedAccount,\n signAndSendTransaction,\n signIn,\n signMessage,\n ],\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/mobile-wallet-provider.tsx","../src/async-storage-cache.ts","../src/get-public-key-from-address.ts","../src/get-account-from-authorized-account.ts","../src/get-authorization-from-authorization-result.ts","../src/use-fetch-authorization.ts","../src/use-persist-authorization.ts","../src/use-authorization-storage.ts","../src/use-authorization.ts","../src/use-mobile-wallet.ts"],"names":["PublicKey","useQueryClient","useMemo","useCallback"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { Commitment, Connection, ConnectionConfig } from '@solana/web3.js';\nimport { AppIdentity, Chain } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport React, { createContext, type ReactNode, useMemo } from 'react';\n\nimport { WalletAuthorizationCache, WalletAuthorizationProps } from './use-authorization';\n\nexport interface MobileWalletProviderProps {\n cache?: WalletAuthorizationCache;\n chain: Chain;\n children: ReactNode;\n commitmentOrConfig?: Commitment | ConnectionConfig;\n endpoint: string;\n identity: AppIdentity;\n}\nexport interface MobileWalletProviderState extends WalletAuthorizationProps {\n connection: Connection;\n}\n\nexport const MobileWalletProviderContext = createContext<MobileWalletProviderState>({} as MobileWalletProviderState);\nexport function MobileWalletProvider({\n cache,\n children,\n chain,\n commitmentOrConfig = { commitment: 'confirmed' },\n endpoint,\n identity,\n}: MobileWalletProviderProps) {\n const connection = useMemo(() => new Connection(endpoint, commitmentOrConfig), [commitmentOrConfig, endpoint]);\n\n return (\n <MobileWalletProviderContext.Provider\n value={useMemo(\n () => ({\n cache,\n chain,\n connection,\n identity,\n }),\n [cache, chain, connection, identity],\n )}\n >\n {children}\n </MobileWalletProviderContext.Provider>\n );\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { PublicKey, PublicKeyInitData } from '@solana/web3.js';\n\nimport { Cache } from './cache';\n\nfunction cacheReviver(key: string, value: unknown) {\n if (key === 'publicKey') {\n return new PublicKey(value as PublicKeyInitData);\n } else {\n return value;\n }\n}\n\nexport class AsyncStorageCache<T> implements Cache<T> {\n constructor(private readonly storageKey: string) {}\n\n async clear(): Promise<void> {\n await AsyncStorage.removeItem(this.storageKey);\n }\n\n async get(): Promise<T | undefined> {\n const cacheFetchResult = await AsyncStorage.getItem(this.storageKey);\n if (!cacheFetchResult) {\n return undefined;\n }\n try {\n return JSON.parse(cacheFetchResult, cacheReviver) as T;\n } catch (error) {\n console.warn(`Failed to parse cached data for key ${this.storageKey}:`, error);\n return undefined;\n }\n }\n\n async set(value: T): Promise<void> {\n await AsyncStorage.setItem(this.storageKey, JSON.stringify(value));\n }\n}\n\nexport function createAsyncStorageCache<T>(storageKey = 'authorization-cache') {\n return new AsyncStorageCache<T>(storageKey);\n}\n","import { PublicKey } from '@solana/web3.js';\nimport { Base64EncodedAddress } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { toUint8Array } from 'js-base64';\n\nexport function getPublicKeyFromAddress(address: Base64EncodedAddress): PublicKey {\n const publicKeyByteArray = toUint8Array(address);\n\n return new PublicKey(publicKeyByteArray);\n}\n","import { Account as AuthorizedAccount } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getPublicKeyFromAddress } from './get-public-key-from-address';\nimport { Account } from './use-authorization';\n\nfunction ellipsify(str = '', len = 4, delimiter = '..') {\n const limit = len * 2 + delimiter.length;\n\n return str.length > limit ? str.slice(0, len) + delimiter + str.slice(-len) : str;\n}\n\nexport function getAccountFromAuthorizedAccount(account: AuthorizedAccount): Account {\n const publicKey = getPublicKeyFromAddress(account.address);\n\n return {\n address: account.address,\n icon: account.icon,\n label: account.label ?? ellipsify(publicKey.toString(), 8),\n publicKey,\n };\n}\n","import { AuthorizationResult } from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { getAccountFromAuthorizedAccount } from './get-account-from-authorized-account';\nimport { Account, WalletAuthorization } from './use-authorization';\n\nexport function getAuthorizationFromAuthorizationResult(\n authorizationResult: AuthorizationResult,\n previouslySelectedAccount?: Account,\n): WalletAuthorization {\n let selectedAccount: Account;\n if (\n // We have yet to select an account.\n previouslySelectedAccount == null ||\n // The previously selected account is no longer in the set of authorized addresses.\n !authorizationResult.accounts.some(({ address }) => address === previouslySelectedAccount.address)\n ) {\n const firstAccount = authorizationResult.accounts[0];\n selectedAccount = getAccountFromAuthorizedAccount(firstAccount);\n } else {\n selectedAccount = previouslySelectedAccount;\n }\n return {\n accounts: authorizationResult.accounts.map(getAccountFromAuthorizedAccount),\n authToken: authorizationResult.auth_token,\n selectedAccount,\n };\n}\n","import { useQuery } from '@tanstack/react-query';\n\nimport { WalletAuthorization, WalletAuthorizationCache } from './use-authorization';\n\nexport function useFetchAuthorization({ cache, queryKey }: { cache: WalletAuthorizationCache; queryKey: string[] }) {\n return useQuery({\n queryFn: async (): Promise<WalletAuthorization | null> => {\n const result = await cache.get();\n return result ?? null;\n },\n queryKey,\n });\n}\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport { WalletAuthorization, WalletAuthorizationCache } from './use-authorization';\n\nexport function usePersistAuthorization({ cache, queryKey }: { cache: WalletAuthorizationCache; queryKey: string[] }) {\n const queryClient = useQueryClient();\n return useMutation({\n mutationFn: async (auth: WalletAuthorization | null): Promise<void> => {\n if (auth) {\n await cache.set(auth);\n } else {\n await cache.clear();\n }\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey });\n },\n });\n}\n","import { useQueryClient } from '@tanstack/react-query';\n\nimport { Account, WalletAuthorization, WalletAuthorizationCache } from './use-authorization';\nimport { useFetchAuthorization } from './use-fetch-authorization';\nimport { usePersistAuthorization } from './use-persist-authorization';\n\nexport function useAuthorizationStorage({ cache }: { cache: WalletAuthorizationCache }) {\n const queryKey = ['wallet-authorization'];\n const queryClient = useQueryClient();\n const fetchQuery = useFetchAuthorization({ cache, queryKey });\n const persistMutation = usePersistAuthorization({ cache, queryKey });\n\n async function persist(next: WalletAuthorization | null, invalidate = false) {\n await persistMutation.mutateAsync(next);\n if (invalidate) {\n await queryClient.invalidateQueries({ queryKey });\n }\n }\n\n const accounts = fetchQuery.data?.accounts ?? null;\n const authToken: string | undefined = fetchQuery.data?.authToken ?? undefined;\n const isLoading = fetchQuery.isLoading;\n const selectedAccount: Account | undefined = fetchQuery.data?.selectedAccount ?? undefined;\n\n return {\n accounts,\n authToken,\n isLoading,\n persist,\n selectedAccount,\n } as const;\n}\n","import { PublicKey } from '@solana/web3.js';\nimport {\n AppIdentity,\n AuthorizationResult,\n AuthorizeAPI,\n AuthToken,\n Base64EncodedAddress,\n Chain,\n DeauthorizeAPI,\n SignInPayload,\n SolanaMobileWalletAdapterProtocolError,\n SolanaMobileWalletAdapterProtocolErrorCode,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { WalletIcon } from '@wallet-standard/core';\nimport { useCallback, useMemo } from 'react';\n\nimport { createAsyncStorageCache } from './async-storage-cache';\nimport { Cache } from './cache';\nimport { getAuthorizationFromAuthorizationResult } from './get-authorization-from-authorization-result';\nimport { useAuthorizationStorage } from './use-authorization-storage';\n\nexport type Account = Readonly<{\n address: Base64EncodedAddress;\n icon?: WalletIcon;\n label?: string;\n publicKey: PublicKey;\n}>;\n\nexport type WalletAuthorization = Readonly<{\n accounts: Account[];\n authToken: AuthToken;\n selectedAccount: Account;\n}>;\nexport type WalletAuthorizationCache = Cache<WalletAuthorization | undefined>;\nexport type WalletAuthorizationProps = Readonly<{\n cache?: WalletAuthorizationCache;\n chain: Chain;\n identity: AppIdentity;\n}>;\nexport function useAuthorization({ cache, chain, identity }: WalletAuthorizationProps) {\n const memoizedCache = useMemo(() => cache ?? createAsyncStorageCache<WalletAuthorization>(), [cache]);\n\n const { accounts, authToken, isLoading, persist, selectedAccount } = useAuthorizationStorage({\n cache: memoizedCache,\n });\n\n const handleAuthorizationResult = useCallback(\n async (authorizationResult: AuthorizationResult): Promise<WalletAuthorization> => {\n const nextAuthorization = getAuthorizationFromAuthorizationResult(authorizationResult, selectedAccount);\n await persist(nextAuthorization);\n return nextAuthorization;\n },\n [selectedAccount, persist],\n );\n\n const authorizeSession = useCallback(\n async (wallet: AuthorizeAPI) => {\n try {\n const authorizationResult = await wallet.authorize({\n auth_token: authToken,\n chain,\n identity,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n } catch (error) {\n if (\n error instanceof SolanaMobileWalletAdapterProtocolError &&\n error.code === SolanaMobileWalletAdapterProtocolErrorCode.ERROR_AUTHORIZATION_FAILED\n ) {\n const retryResult = await wallet.authorize({\n chain,\n identity,\n });\n return (await handleAuthorizationResult(retryResult)).selectedAccount;\n }\n throw error;\n }\n },\n [authToken, chain, identity, handleAuthorizationResult],\n );\n\n const authorizeSessionWithSignIn = useCallback(\n async (wallet: AuthorizeAPI, signInPayload: SignInPayload) => {\n try {\n const authorizationResult = await wallet.authorize({\n auth_token: authToken,\n chain,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(authorizationResult)).selectedAccount;\n } catch (error) {\n if (\n error instanceof SolanaMobileWalletAdapterProtocolError &&\n error.code === SolanaMobileWalletAdapterProtocolErrorCode.ERROR_AUTHORIZATION_FAILED\n ) {\n const retryResult = await wallet.authorize({\n chain,\n identity,\n sign_in_payload: signInPayload,\n });\n return (await handleAuthorizationResult(retryResult)).selectedAccount;\n }\n throw error;\n }\n },\n [authToken, chain, identity, handleAuthorizationResult],\n );\n\n const deauthorizeSession = useCallback(\n async (wallet: DeauthorizeAPI) => {\n if (authToken == null) {\n return;\n }\n await wallet.deauthorize({ auth_token: authToken });\n await persist(null);\n },\n [authToken, persist],\n );\n\n const deauthorizeSessions = useCallback(async () => {\n await persist(null, true);\n }, [persist]);\n\n return useMemo(\n () => ({\n accounts,\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n isLoading,\n selectedAccount,\n }),\n [\n accounts,\n authorizeSession,\n authorizeSessionWithSignIn,\n deauthorizeSession,\n deauthorizeSessions,\n isLoading,\n selectedAccount,\n ],\n );\n}\n","import { Transaction, TransactionSignature, VersionedTransaction } from '@solana/web3.js';\nimport { AuthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';\nimport { transact } from '@solana-mobile/mobile-wallet-adapter-protocol-web3js';\nimport { useCallback, useContext, useMemo } from 'react';\n\nimport { MobileWalletProviderContext } from './mobile-wallet-provider';\nimport { Account, useAuthorization } from './use-authorization';\n\nexport function useMobileWallet() {\n const ctx = useContext(MobileWalletProviderContext);\n const { authorizeSessionWithSignIn, authorizeSession, deauthorizeSessions, selectedAccount, ...authorization } =\n useAuthorization(ctx);\n\n const connect = useCallback(\n async (): Promise<Account> => await transact(async wallet => await authorizeSession(wallet)),\n [authorizeSession],\n );\n\n const connectAnd = useCallback(\n async (cb: (wallet: AuthorizeAPI) => Promise<Account | void>): Promise<Account | void> => {\n return await transact(async wallet => await cb(wallet));\n },\n [],\n );\n\n const signIn = useCallback(\n async (signInPayload: SignInPayload): Promise<Account> =>\n await transact(async wallet => await authorizeSessionWithSignIn(wallet, signInPayload)),\n [authorizeSessionWithSignIn],\n );\n\n const disconnect = useCallback(async (): Promise<void> => await deauthorizeSessions(), [deauthorizeSessions]);\n\n const signAndSendTransaction = useCallback(\n async (\n transaction: Transaction | VersionedTransaction,\n minContextSlot: number,\n ): Promise<TransactionSignature> =>\n await transact(async wallet => {\n await authorizeSession(wallet);\n const signatures = await wallet.signAndSendTransactions({\n minContextSlot,\n transactions: [transaction],\n });\n return signatures[0];\n }),\n [authorizeSession],\n );\n\n const signMessage = useCallback(\n async (message: Uint8Array): Promise<Uint8Array> =>\n await transact(async wallet => {\n const authResult = await authorizeSession(wallet);\n const signedMessages = await wallet.signMessages({\n addresses: [authResult.address],\n payloads: [message],\n });\n return signedMessages[0];\n }),\n [authorizeSession],\n );\n\n return useMemo(\n () => ({\n ...ctx,\n ...authorization,\n account: selectedAccount,\n connect,\n connectAnd,\n disconnect,\n signAndSendTransaction,\n signIn,\n signMessage,\n }),\n [\n authorization,\n connect,\n connectAnd,\n ctx,\n disconnect,\n selectedAccount,\n signAndSendTransaction,\n signIn,\n signMessage,\n ],\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { Cache } from './cache';
2
+ export declare class AsyncStorageCache<T> implements Cache<T> {
3
+ private readonly storageKey;
4
+ constructor(storageKey: string);
5
+ clear(): Promise<void>;
6
+ get(): Promise<T | undefined>;
7
+ set(value: T): Promise<void>;
8
+ }
9
+ export declare function createAsyncStorageCache<T>(storageKey?: string): AsyncStorageCache<T>;
10
+ //# sourceMappingURL=async-storage-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-storage-cache.d.ts","sourceRoot":"","sources":["../../src/async-storage-cache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAUhC,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAa7B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrC;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,UAAU,SAAwB,wBAE5E"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @example
3
+ * This example demonstrates how to create an in-memory cache using the `createMemoryCache` function. This function returns an object that conforms to the `Cache` interface, providing methods to `clear`, `get`, and `set` data. The cache stores a single value of type `T` and logs its operations to the console.
4
+ * ```ts
5
+ * export function createMemoryCache<T>(data: T | undefined = undefined): Cache<T> {
6
+ * return {
7
+ * async clear(): Promise<void> {
8
+ * console.log(`Clear data:`, { data });
9
+ * data = undefined;
10
+ * },
11
+ * async get(): Promise<T | undefined> {
12
+ * console.log('Get data:', { data });
13
+ * return data;
14
+ * },
15
+ * async set(value: T): Promise<void> {
16
+ * console.log('Set data:', { data, value });
17
+ * data = value;
18
+ * },
19
+ * };
20
+ * }
21
+ * const cache = createMemoryCache<WalletAuthorization>();
22
+ * ```
23
+ */
24
+ export interface Cache<T> {
25
+ clear(): Promise<void>;
26
+ get(): Promise<T | undefined>;
27
+ set(value: T): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC;IACpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
@@ -1,4 +1,5 @@
1
1
  export * from './mobile-wallet-provider';
2
+ export * from './cache';
2
3
  export * from './use-authorization';
3
4
  export * from './use-mobile-wallet';
4
5
  export type { AppIdentity, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAChG,cAAc,sDAAsD,CAAC;AACrE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAChG,cAAc,sDAAsD,CAAC;AACrE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -1,18 +1,18 @@
1
1
  import { Commitment, Connection, ConnectionConfig } from '@solana/web3.js';
2
2
  import { AppIdentity, Chain } from '@solana-mobile/mobile-wallet-adapter-protocol';
3
3
  import React, { type ReactNode } from 'react';
4
+ import { WalletAuthorizationCache, WalletAuthorizationProps } from './use-authorization';
4
5
  export interface MobileWalletProviderProps {
6
+ cache?: WalletAuthorizationCache;
5
7
  chain: Chain;
6
8
  children: ReactNode;
7
9
  commitmentOrConfig?: Commitment | ConnectionConfig;
8
10
  endpoint: string;
9
11
  identity: AppIdentity;
10
12
  }
11
- export interface MobileWalletProviderState {
12
- chain: Chain;
13
+ export interface MobileWalletProviderState extends WalletAuthorizationProps {
13
14
  connection: Connection;
14
- identity: AppIdentity;
15
15
  }
16
16
  export declare const MobileWalletProviderContext: React.Context<MobileWalletProviderState>;
17
- export declare function MobileWalletProvider({ children, chain, commitmentOrConfig, endpoint, identity, }: MobileWalletProviderProps): React.JSX.Element;
17
+ export declare function MobileWalletProvider({ cache, children, chain, commitmentOrConfig, endpoint, identity, }: MobileWalletProviderProps): React.JSX.Element;
18
18
  //# sourceMappingURL=mobile-wallet-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-wallet-provider.d.ts","sourceRoot":"","sources":["../../src/mobile-wallet-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;CACzB;AACD,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,WAAW,CAAC;CACzB;AAED,eAAO,MAAM,2BAA2B,0CAA4E,CAAC;AACrH,wBAAgB,oBAAoB,CAAC,EACjC,QAAQ,EACR,KAAK,EACL,kBAAgD,EAChD,QAAQ,EACR,QAAQ,GACX,EAAE,yBAAyB,qBAiB3B"}
1
+ {"version":3,"file":"mobile-wallet-provider.d.ts","sourceRoot":"","sources":["../../src/mobile-wallet-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEzF,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,kBAAkB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;CACzB;AACD,MAAM,WAAW,yBAA0B,SAAQ,wBAAwB;IACvE,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,eAAO,MAAM,2BAA2B,0CAA4E,CAAC;AACrH,wBAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,kBAAgD,EAChD,QAAQ,EACR,QAAQ,GACX,EAAE,yBAAyB,qBAkB3B"}
@@ -0,0 +1,21 @@
1
+ import { WalletAuthorization, WalletAuthorizationCache } from './use-authorization';
2
+ export declare function useAuthorizationStorage({ cache }: {
3
+ cache: WalletAuthorizationCache;
4
+ }): {
5
+ readonly accounts: Readonly<{
6
+ address: import("@solana-mobile/mobile-wallet-adapter-protocol").Base64EncodedAddress;
7
+ icon?: import("@wallet-standard/core").WalletIcon;
8
+ label?: string;
9
+ publicKey: import("@solana/web3.js").PublicKey;
10
+ }>[] | null;
11
+ readonly authToken: string | undefined;
12
+ readonly isLoading: boolean;
13
+ readonly persist: (next: WalletAuthorization | null, invalidate?: boolean) => Promise<void>;
14
+ readonly selectedAccount: Readonly<{
15
+ address: import("@solana-mobile/mobile-wallet-adapter-protocol").Base64EncodedAddress;
16
+ icon?: import("@wallet-standard/core").WalletIcon;
17
+ label?: string;
18
+ publicKey: import("@solana/web3.js").PublicKey;
19
+ }> | undefined;
20
+ };
21
+ //# sourceMappingURL=use-authorization-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-authorization-storage.d.ts","sourceRoot":"","sources":["../../src/use-authorization-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAI7F,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE;;;;;;;;;6BAMrD,mBAAmB,GAAG,IAAI;;;;;;;EAmB1D"}
@@ -1,6 +1,7 @@
1
1
  import { PublicKey } from '@solana/web3.js';
2
2
  import { AppIdentity, AuthorizeAPI, AuthToken, Base64EncodedAddress, Chain, DeauthorizeAPI, SignInPayload } from '@solana-mobile/mobile-wallet-adapter-protocol';
3
3
  import { WalletIcon } from '@wallet-standard/core';
4
+ import { Cache } from './cache';
4
5
  export type Account = Readonly<{
5
6
  address: Base64EncodedAddress;
6
7
  icon?: WalletIcon;
@@ -12,10 +13,13 @@ export type WalletAuthorization = Readonly<{
12
13
  authToken: AuthToken;
13
14
  selectedAccount: Account;
14
15
  }>;
15
- export declare function useAuthorization({ chain, identity }: {
16
+ export type WalletAuthorizationCache = Cache<WalletAuthorization | undefined>;
17
+ export type WalletAuthorizationProps = Readonly<{
18
+ cache?: WalletAuthorizationCache;
16
19
  chain: Chain;
17
20
  identity: AppIdentity;
18
- }): {
21
+ }>;
22
+ export declare function useAuthorization({ cache, chain, identity }: WalletAuthorizationProps): {
19
23
  accounts: Readonly<{
20
24
  address: Base64EncodedAddress;
21
25
  icon?: WalletIcon;
@@ -42,6 +46,6 @@ export declare function useAuthorization({ chain, identity }: {
42
46
  icon?: WalletIcon;
43
47
  label?: string;
44
48
  publicKey: PublicKey;
45
- }> | null;
49
+ }> | undefined;
46
50
  };
47
51
  //# sourceMappingURL=use-authorization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-authorization.d.ts","sourceRoot":"","sources":["../../src/use-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACH,WAAW,EAEX,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,KAAK,EACL,cAAc,EACd,aAAa,EAGhB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAC,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE;;iBAZhF,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;+BA2BD,YAAY;iBA9BtB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;yCAqDD,YAAY,iBAAiB,aAAa;iBAxDpD,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;iCAiFD,cAAc;;;;iBApFxB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;EAoHvB"}
1
+ {"version":3,"file":"use-authorization.d.ts","sourceRoot":"","sources":["../../src/use-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACH,WAAW,EAEX,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,KAAK,EACL,cAAc,EACd,aAAa,EAGhB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC;IAC3B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACvC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC5B,CAAC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;AAC9E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC5C,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;CACzB,CAAC,CAAC;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,wBAAwB;;iBAjBxE,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;+BA+BD,YAAY;iBAlCtB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;yCAyDD,YAAY,iBAAiB,aAAa;iBA5DpD,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;iCAqFD,cAAc;;;;iBAxFxB,oBAAoB;eACtB,UAAU;gBACT,MAAM;mBACH,SAAS;;EAuHvB"}
@@ -1,4 +1,8 @@
1
- export declare function useFetchAuthorization(): import("@tanstack/react-query").UseQueryResult<Readonly<{
1
+ import { WalletAuthorizationCache } from './use-authorization';
2
+ export declare function useFetchAuthorization({ cache, queryKey }: {
3
+ cache: WalletAuthorizationCache;
4
+ queryKey: string[];
5
+ }): import("@tanstack/react-query").UseQueryResult<Readonly<{
2
6
  accounts: import("./use-authorization").Account[];
3
7
  authToken: import("@solana-mobile/mobile-wallet-adapter-protocol").AuthToken;
4
8
  selectedAccount: import("./use-authorization").Account;
@@ -1 +1 @@
1
- {"version":3,"file":"use-fetch-authorization.d.ts","sourceRoot":"","sources":["../../src/use-fetch-authorization.ts"],"names":[],"mappings":"AAeA,wBAAgB,qBAAqB;;;;kBAWpC"}
1
+ {"version":3,"file":"use-fetch-authorization.d.ts","sourceRoot":"","sources":["../../src/use-fetch-authorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,wBAAgB,qBAAqB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;;;;kBAQjH"}
@@ -7,7 +7,7 @@ export declare function useMobileWallet(): {
7
7
  icon?: import("@wallet-standard/core").WalletIcon;
8
8
  label?: string;
9
9
  publicKey: import("@solana/web3.js").PublicKey;
10
- }> | null;
10
+ }> | undefined;
11
11
  connect: () => Promise<Account>;
12
12
  connectAnd: (cb: (wallet: AuthorizeAPI) => Promise<Account | void>) => Promise<Account | void>;
13
13
  disconnect: () => Promise<void>;
@@ -22,8 +22,9 @@ export declare function useMobileWallet(): {
22
22
  }>[] | null;
23
23
  deauthorizeSession: (wallet: import("@solana-mobile/mobile-wallet-adapter-protocol").DeauthorizeAPI) => Promise<void>;
24
24
  isLoading: boolean;
25
- chain: import("@solana-mobile/mobile-wallet-adapter-protocol").Chain;
26
25
  connection: import("@solana/web3.js").Connection;
26
+ cache?: import("./use-authorization").WalletAuthorizationCache;
27
+ chain: import("@solana-mobile/mobile-wallet-adapter-protocol").Chain;
27
28
  identity: import("@solana-mobile/mobile-wallet-adapter-protocol").AppIdentity;
28
29
  };
29
30
  //# sourceMappingURL=use-mobile-wallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-mobile-wallet.d.ts","sourceRoot":"","sources":["../../src/use-mobile-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAK5F,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAEhE,wBAAgB,eAAe;;;;;;;mBAMb,OAAO,CAAC,OAAO,CAAC;qBAKf,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;sBAYjD,OAAO,CAAC,IAAI,CAAC;0CAIjC,WAAW,GAAG,oBAAoB,kBAC/B,MAAM,KACvB,OAAO,CAAC,oBAAoB,CAAC;4BAXV,aAAa,KAAG,OAAO,CAAC,OAAO,CAAC;2BAwBtC,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;EAoCvD"}
1
+ {"version":3,"file":"use-mobile-wallet.d.ts","sourceRoot":"","sources":["../../src/use-mobile-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAK5F,OAAO,EAAE,OAAO,EAAoB,MAAM,qBAAqB,CAAC;AAEhE,wBAAgB,eAAe;;;;;;;mBAMb,OAAO,CAAC,OAAO,CAAC;qBAKf,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;sBAYjD,OAAO,CAAC,IAAI,CAAC;0CAIjC,WAAW,GAAG,oBAAoB,kBAC/B,MAAM,KACvB,OAAO,CAAC,oBAAoB,CAAC;4BAXV,aAAa,KAAG,OAAO,CAAC,OAAO,CAAC;2BAwBtC,UAAU,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;EAoCvD"}
@@ -1,4 +1,8 @@
1
- export declare function usePersistAuthorization(): import("@tanstack/react-query").UseMutationResult<void, Error, Readonly<{
1
+ import { WalletAuthorizationCache } from './use-authorization';
2
+ export declare function usePersistAuthorization({ cache, queryKey }: {
3
+ cache: WalletAuthorizationCache;
4
+ queryKey: string[];
5
+ }): import("@tanstack/react-query").UseMutationResult<void, Error, Readonly<{
2
6
  accounts: import("./use-authorization").Account[];
3
7
  authToken: import("@solana-mobile/mobile-wallet-adapter-protocol").AuthToken;
4
8
  selectedAccount: import("./use-authorization").Account;
@@ -1 +1 @@
1
- {"version":3,"file":"use-persist-authorization.d.ts","sourceRoot":"","sources":["../../src/use-persist-authorization.ts"],"names":[],"mappings":"AAMA,wBAAgB,uBAAuB;;;;oBAUtC"}
1
+ {"version":3,"file":"use-persist-authorization.d.ts","sourceRoot":"","sources":["../../src/use-persist-authorization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE;;;;oBAcnH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wallet-ui/react-native-web3js",
3
- "version": "2.2.1",
3
+ "version": "2.2.2-canary-20260120001346",
4
4
  "description": "React components for Wallet UI",
5
5
  "exports": {
6
6
  ".": {
@@ -67,7 +67,7 @@
67
67
  "@wallet-standard/core": "1.1.1",
68
68
  "@wallet-standard/react": "1.0.1",
69
69
  "js-base64": "^3.7.8",
70
- "@wallet-ui/core": "2.2.1"
70
+ "@wallet-ui/core": "2.2.2-canary-20260120001346"
71
71
  },
72
72
  "peerDependencies": {
73
73
  "react": ">=18"
@@ -1,2 +0,0 @@
1
- export declare function useInvalidateAuthorizations(): () => Promise<void>;
2
- //# sourceMappingURL=use-invalidate-authorizations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-invalidate-authorizations.d.ts","sourceRoot":"","sources":["../../src/use-invalidate-authorizations.ts"],"names":[],"mappings":"AAEA,wBAAgB,2BAA2B,wBAI1C"}
@@ -1,6 +0,0 @@
1
- export declare function useQueryConfig(): {
2
- queryClient: import("@tanstack/react-query").QueryClient;
3
- queryKey: string[];
4
- storageKey: string;
5
- };
6
- //# sourceMappingURL=use-query-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-query-config.d.ts","sourceRoot":"","sources":["../../src/use-query-config.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc;;;;EAM7B"}