@rango-dev/provider-coin98 0.60.1-next.0 → 0.60.1-next.2

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 (42) hide show
  1. package/dist/actions/solana.d.ts +8 -0
  2. package/dist/actions/solana.d.ts.map +1 -0
  3. package/dist/constants.d.ts +6 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/mod.d.ts +3 -0
  6. package/dist/mod.d.ts.map +1 -0
  7. package/dist/mod.js +2 -0
  8. package/dist/mod.js.map +7 -0
  9. package/dist/namespaces/evm.d.ts +4 -0
  10. package/dist/namespaces/evm.d.ts.map +1 -0
  11. package/dist/namespaces/solana.d.ts +4 -0
  12. package/dist/namespaces/solana.d.ts.map +1 -0
  13. package/dist/provider-coin98.build.json +1 -1
  14. package/dist/provider.d.ts +3 -0
  15. package/dist/provider.d.ts.map +1 -0
  16. package/dist/{solana-signer.d.ts → signers/solana.d.ts} +3 -4
  17. package/dist/signers/solana.d.ts.map +1 -0
  18. package/dist/types.d.ts +10 -0
  19. package/dist/types.d.ts.map +1 -0
  20. package/dist/utils.d.ts +8 -0
  21. package/dist/utils.d.ts.map +1 -0
  22. package/package.json +8 -8
  23. package/readme.md +23 -0
  24. package/src/actions/solana.ts +19 -0
  25. package/src/constants.ts +55 -0
  26. package/src/mod.ts +8 -0
  27. package/src/namespaces/evm.ts +47 -0
  28. package/src/namespaces/solana.ts +57 -0
  29. package/src/provider.ts +25 -0
  30. package/src/signer.ts +2 -2
  31. package/src/{solana-signer.ts → signers/solana.ts} +24 -14
  32. package/src/types.ts +13 -0
  33. package/src/utils.ts +56 -0
  34. package/dist/helpers.d.ts +0 -5
  35. package/dist/helpers.d.ts.map +0 -1
  36. package/dist/index.d.ts +0 -16
  37. package/dist/index.d.ts.map +0 -1
  38. package/dist/index.js +0 -2
  39. package/dist/index.js.map +0 -7
  40. package/dist/solana-signer.d.ts.map +0 -1
  41. package/src/helpers.ts +0 -36
  42. package/src/index.ts +0 -121
@@ -0,0 +1,8 @@
1
+ import type { Context, FunctionWithContext } from '@rango-dev/wallets-core';
2
+ import { type SolanaActions, type ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
3
+ declare function connect(getInstance: () => SolanaProviderApi): FunctionWithContext<SolanaActions['connect'], Context>;
4
+ export declare const solanaActions: {
5
+ connect: typeof connect;
6
+ };
7
+ export {};
8
+ //# sourceMappingURL=solana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/actions/solana.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,IAAI,iBAAiB,EAEtC,MAAM,2CAA2C,CAAC;AAEnD,iBAAS,OAAO,CACd,WAAW,EAAE,MAAM,iBAAiB,GACnC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAMxD;AAED,eAAO,MAAM,aAAa;;CAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ProviderMetadata } from '@rango-dev/wallets-core';
2
+ import { WalletTypes } from '@rango-dev/wallets-shared';
3
+ export declare const WALLET_ID = WalletTypes.COIN98;
4
+ export declare const COIN98_INJECTION_DELAY = 1000;
5
+ export declare const metadata: ProviderMetadata;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxD,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAC5C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,QAAQ,EAAE,gBAwCtB,CAAC"}
package/dist/mod.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare const versions: () => import("@rango-dev/wallets-core/utils").VersionedProviders;
2
+ export { versions };
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,kEAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/mod.js ADDED
@@ -0,0 +1,2 @@
1
+ var M=Object.defineProperty;var n=(o,e)=>M(o,"name",{value:e,configurable:!0});import{defineVersions as ro}from"@rango-dev/wallets-core/utils";import{ProviderBuilder as to}from"@rango-dev/wallets-core";import{WalletTypes as V}from"@rango-dev/wallets-shared";import{evmBlockchains as W,solanaBlockchain as j}from"rango-types";import{dynamicImportWithRefinedError as D,getNetworkInstance as w,Networks as v}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as B,TransactionType as S}from"rango-types";import"@rango-dev/signer-solana";import{generalSolanaTransactionExecutor as O}from"@rango-dev/signer-solana";import{PublicKey as _}from"@solana/web3.js";import R from"bs58";import{SignerError as d,SignerErrorCode as u}from"rango-types";var s=class{static{n(this,"Coin98SolanaSigner")}provider;constructor(e){this.provider=e}async signMessage(e){try{return(await this.provider.signMessage(e)).signature}catch(r){throw new d(u.SIGN_TX_ERROR,void 0,r)}}async signAndSendTx(e){let r=n(async t=>{let i=await this.provider.request({method:"sol_sign",params:[t]}),k=new _(i.publicKey),L=R.decode(i.signature);return t.addSignature(k,Buffer.from(L)),t.serialize()},"DefaultSolanaSigner");try{return{hash:await O(e,r)}}catch(t){throw t&&typeof t=="object"&&"code"in t&&t.code===4001?new d(u.REJECTED_BY_USER,void 0,t):new d(u.SIGN_TX_ERROR,void 0,t)}}};async function g(o){let e=w(o,v.ETHEREUM),r=w(o,v.SOLANA),t=new B,{DefaultEvmSigner:i}=await D(async()=>await import("@rango-dev/signer-evm"));return t.registerSigner(S.EVM,new i(e)),t.registerSigner(S.SOLANA,new s(r)),t}n(g,"getSigners");import{Networks as l}from"@rango-dev/wallets-shared";function c(){let{coin98:o}=window;if(!o)return null;let e=new Map;return o.provider&&e.set(l.ETHEREUM,o.provider),o.sol&&e.set(l.SOLANA,o.sol),e}n(c,"coin98");function E(){let o=c();if(!o)throw new Error("Coin98 is not injected. Please check your wallet.");return o}n(E,"getInstanceOrThrow");function m(){let e=c()?.get(l.ETHEREUM);if(!e)throw new Error("Coin98 not injected or EVM not enabled. Please check your wallet.");return e}n(m,"evmCoin98");function f(){let e=c()?.get(l.SOLANA);if(!e)throw new Error("Coin98 Solana instance is not available. Ensure that Solana support is enabled in your wallet.");return e}n(f,"solanaCoin98");var a=V.COIN98,y=1e3,A={name:"Coin98",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg",brave:"https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg",homepage:"https://coin98.com/wallet"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"EVM",value:"EVM",id:"ETH",getSupportedChains:o=>W(o)},{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:o=>j(o)}]}},{name:"signers",value:{getSigners:async()=>g(E())}}]};import{NamespaceBuilder as F}from"@rango-dev/wallets-core";import{builders as J,standardizeAndThrowError as G}from"@rango-dev/wallets-core/namespaces/common";import{actions as h,builders as p}from"@rango-dev/wallets-core/namespaces/evm";var[H,b]=p.changeAccountSubscriber(m).build(),K=p.connect().action(h.connect(m)).before(H).or(b).or(G).build(),U=J.disconnect().after(b).build(),z=p.canSwitchNetwork().action(h.canSwitchNetwork()).build(),Y=p.getChainId().action(h.getChainId(m)).build(),P=new F("EVM",a).action(K).action(U).action(z).action(Y).build();import{NamespaceBuilder as Q}from"@rango-dev/wallets-core";import{builders as Z,standardizeAndThrowError as $}from"@rango-dev/wallets-core/namespaces/common";import{builders as T}from"@rango-dev/wallets-core/namespaces/solana";import{utils as X}from"@rango-dev/wallets-core/namespaces/solana";function q(o){return async()=>{let r=await o().connect();return X.formatAccountsToCAIP(r)}}n(q,"connect");var C={connect:q};var[oo,I]=T.changeAccountSubscriber(f).onSwitchAccount(async(o,e)=>{o.preventDefault(),o.payload&&o.payload.length!==0?e.action("connect"):e.action("disconnect")}).addEventListener((o,e)=>o.on("accountsChanged",e)).removeEventListener((o,e)=>o.off("accountsChanged",e)).build(),eo=T.connect().action(C.connect(f)).before(oo).or(I).or($).build(),no=Z.disconnect().after(I).build(),N=new Q("Solana",a).action(eo).action(no).build();var x=n(()=>new to(a).init(function(o){let[,e]=o.state();setTimeout(()=>{c()&&(e("installed",!0),console.debug("[coin98] instance detected.",o))},y)}).config("metadata",A).add("evm",P).add("solana",N).build(),"buildProvider");var $o=n(()=>ro().version("1.0.0",x()).build(),"versions");export{$o as versions};
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/utils.ts", "../src/namespaces/evm.ts", "../src/namespaces/solana.ts", "../src/actions/solana.ts"],
4
+ "sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@rango-dev/wallets-core';\n\nimport { COIN98_INJECTION_DELAY, metadata, WALLET_ID } from './constants.js';\nimport { evm } from './namespaces/evm.js';\nimport { solana } from './namespaces/solana.js';\nimport { coin98 } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n\n setTimeout(() => {\n if (coin98()) {\n setState('installed', true);\n console.debug('[coin98] instance detected.', context);\n }\n }, COIN98_INJECTION_DELAY);\n })\n .config('metadata', metadata)\n .add('evm', evm)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@rango-dev/wallets-core';\n\nimport { WalletTypes } from '@rango-dev/wallets-shared';\nimport {\n type BlockchainMeta,\n evmBlockchains,\n solanaBlockchain,\n} from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = WalletTypes.COIN98;\nexport const COIN98_INJECTION_DELAY = 1000;\nexport const metadata: ProviderMetadata = {\n name: 'Coin98',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',\n brave:\n 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',\n homepage: 'https://coin98.com/wallet',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'EVM',\n value: 'EVM',\n id: 'ETH',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n evmBlockchains(allBlockchains),\n },\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: {\n getSigners: async () => getSigners(getInstanceOrThrow()),\n },\n },\n ],\n};\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { Coin98SolanaSigner } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new Coin98SolanaSigner(solProvider));\n return signers;\n}\n", "import type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { GenericSigner, SolanaTransaction } from 'rango-types';\n\nimport {\n type SolanaExternalProvider,\n type SolanaWeb3Signer,\n} from '@rango-dev/signer-solana';\nimport { generalSolanaTransactionExecutor } from '@rango-dev/signer-solana';\nimport { PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\nexport class Coin98SolanaSigner implements GenericSigner<SolanaTransaction> {\n private provider: SolanaExternalProvider;\n constructor(provider: SolanaExternalProvider) {\n this.provider = provider;\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const result = await this.provider.signMessage(msg);\n return result.signature as unknown as string;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction: Transaction | VersionedTransaction\n ) => {\n const response: { publicKey: string; signature: string } =\n await this.provider.request({\n method: 'sol_sign',\n params: [solanaWeb3Transaction],\n });\n const publicKey = new PublicKey(response.publicKey);\n const sign = bs58.decode(response.signature);\n\n solanaWeb3Transaction.addSignature(publicKey, Buffer.from(sign));\n const raw = solanaWeb3Transaction.serialize();\n return raw;\n };\n try {\n const hash = await generalSolanaTransactionExecutor(\n tx,\n DefaultSolanaSigner\n );\n return { hash };\n } catch (e: unknown) {\n const REJECTION_CODE = 4001;\n if (\n e &&\n typeof e === 'object' &&\n 'code' in e &&\n e.code === REJECTION_CODE\n ) {\n throw new SignerError(SignerErrorCode.REJECTED_BY_USER, undefined, e);\n }\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, e);\n }\n }\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';\nimport type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { Networks } from '@rango-dev/wallets-shared';\n\nexport function coin98() {\n const { coin98 } = window;\n\n if (!coin98) {\n return null;\n }\n\n const instances = new Map();\n\n if (coin98.provider) {\n instances.set(Networks.ETHEREUM, coin98.provider);\n }\n if (coin98.sol) {\n instances.set(Networks.SOLANA, coin98.sol);\n }\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = coin98();\n\n if (!instances) {\n throw new Error('Coin98 is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function evmCoin98(): EvmProviderApi {\n const instances = coin98();\n const evmInstance = instances?.get(Networks.ETHEREUM);\n if (!evmInstance) {\n throw new Error(\n 'Coin98 not injected or EVM not enabled. Please check your wallet.'\n );\n }\n return evmInstance as EvmProviderApi;\n}\n\nexport function solanaCoin98(): SolanaProviderApi {\n const instances = coin98();\n const solanaInstance = instances?.get(Networks.SOLANA);\n if (!solanaInstance) {\n throw new Error(\n 'Coin98 Solana instance is not available. Ensure that Solana support is enabled in your wallet.'\n );\n }\n return solanaInstance as SolanaProviderApi;\n}\n", "import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';\n\nimport { WALLET_ID } from '../constants.js';\nimport { evmCoin98 } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(evmCoin98)\n .build();\n\nconst connect = builders\n .connect()\n .action(actions.connect(evmCoin98))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<EvmActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst canSwitchNetwork = builders\n .canSwitchNetwork()\n .action(actions.canSwitchNetwork())\n .build();\n\nconst getChainId = builders\n .getChainId()\n .action(actions.getChainId(evmCoin98))\n .build();\n\nconst evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canSwitchNetwork)\n .action(getChainId)\n .build();\n\nexport { evm };\n", "import { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n builders,\n type SolanaActions,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaCoin98 } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = builders\n .changeAccountSubscriber(solanaCoin98)\n /*\n * Coin98 returns EVM addresses on account change instead of Solana addresses even though\n * we are listening to the changes on the Solana instance.\n * But if we get the EVM address, it means that we also have permission to eagerly get\n * the Solana address of the new account.\n */\n .onSwitchAccount(async (event, context) => {\n event.preventDefault();\n if (event.payload && event.payload.length !== 0) {\n context.action('connect');\n } else {\n context.action('disconnect');\n }\n })\n .addEventListener((instance, callback) =>\n instance.on('accountsChanged', callback)\n )\n .removeEventListener((instance, callback) =>\n instance.off('accountsChanged', callback)\n )\n .build();\n\nconst connect = builders\n .connect()\n .action(solanaActions.connect(solanaCoin98))\n .before(changeAccountSubscriber)\n .or(changeAccountCleanup)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .build();\n\nexport { solana };\n", "import type { Context, FunctionWithContext } from '@rango-dev/wallets-core';\n\nimport {\n type SolanaActions,\n type ProviderAPI as SolanaProviderApi,\n utils,\n} from '@rango-dev/wallets-core/namespaces/solana';\n\nfunction connect(\n getInstance: () => SolanaProviderApi\n): FunctionWithContext<SolanaActions['connect'], Context> {\n return async () => {\n const solanaInstance = getInstance();\n const connectResult = await solanaInstance.connect();\n return utils.formatAccountsToCAIP(connectResult);\n };\n}\n\nexport const solanaActions = { connect };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "WalletTypes", "evmBlockchains", "solanaBlockchain", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "generalSolanaTransactionExecutor", "PublicKey", "bs58", "SignerError", "SignerErrorCode", "Coin98SolanaSigner", "__name", "provider", "msg", "error", "SignerError", "SignerErrorCode", "tx", "DefaultSolanaSigner", "solanaWeb3Transaction", "response", "publicKey", "PublicKey", "sign", "bs58", "generalSolanaTransactionExecutor", "e", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "Coin98SolanaSigner", "__name", "Networks", "coin98", "instances", "Networks", "__name", "getInstanceOrThrow", "evmCoin98", "evmInstance", "solanaCoin98", "solanaInstance", "WALLET_ID", "WalletTypes", "COIN98_INJECTION_DELAY", "metadata", "allBlockchains", "evmBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "actions", "builders", "changeAccountSubscriber", "changeAccountCleanup", "builders", "evmCoin98", "connect", "actions", "standardizeAndThrowError", "disconnect", "commonBuilders", "canSwitchNetwork", "getChainId", "evm", "NamespaceBuilder", "WALLET_ID", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "builders", "utils", "connect", "getInstance", "connectResult", "utils", "__name", "solanaActions", "changeAccountSubscriber", "changeAccountCleanup", "builders", "solanaCoin98", "event", "context", "instance", "callback", "connect", "solanaActions", "standardizeAndThrowError", "disconnect", "commonBuilders", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "coin98", "COIN98_INJECTION_DELAY", "metadata", "evm", "solana", "versions", "__name", "defineVersions", "buildProvider"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2
+ declare const evm: import("@rango-dev/wallets-core").ProxiedNamespace<EvmActions>;
3
+ export { evm };
4
+ //# sourceMappingURL=evm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm.d.ts","sourceRoot":"","sources":["../../src/namespaces/evm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAuCzE,QAAA,MAAM,GAAG,gEAKC,CAAC;AAEX,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type SolanaActions } from '@rango-dev/wallets-core/namespaces/solana';
2
+ declare const solana: import("@rango-dev/wallets-core").ProxiedNamespace<SolanaActions>;
3
+ export { solana };
4
+ //# sourceMappingURL=solana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/namespaces/solana.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,2CAA2C,CAAC;AA2CnD,QAAA,MAAM,MAAM,mEAGF,CAAC;AAEX,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"inputs":{"src/helpers.ts":{"bytes":796,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/solana-signer.ts":{"bytes":1784,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@solana/web3.js","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":972,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/solana-signer.ts","kind":"import-statement","original":"./solana-signer.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":3500,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/helpers.ts","kind":"import-statement","original":"./helpers.js"},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":11857},"dist/index.js":{"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@solana/web3.js","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true}],"exports":["canSwitchNetworkTo","config","connect","getInstance","getSigners","getWalletInfo","subscribe","switchNetwork"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":1355},"src/helpers.ts":{"bytesInOutput":379},"src/signer.ts":{"bytesInOutput":423},"src/solana-signer.ts":{"bytesInOutput":667}},"bytes":3089}}}
1
+ {"inputs":{"src/signers/solana.ts":{"bytes":2100,"imports":[{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@solana/web3.js","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/signer.ts":{"bytes":973,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signers/solana.ts","kind":"import-statement","original":"./signers/solana.js"},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":1454,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1548,"imports":[{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/namespaces/evm.ts":{"bytes":1212,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/actions/solana.ts":{"bytes":556,"imports":[{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/solana.ts":{"bytes":1695,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"src/actions/solana.ts","kind":"import-statement","original":"../actions/solana.js"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":732,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/evm.ts","kind":"import-statement","original":"./namespaces/evm.js"},{"path":"src/namespaces/solana.ts","kind":"import-statement","original":"./namespaces/solana.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":220,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":17417},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@rango-dev/signer-solana","kind":"import-statement","external":true},{"path":"@solana/web3.js","kind":"import-statement","external":true},{"path":"bs58","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-evm","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/evm","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/solana","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":123},"src/provider.ts":{"bytesInOutput":285},"src/constants.ts":{"bytesInOutput":753},"src/signer.ts":{"bytesInOutput":423},"src/signers/solana.ts":{"bytesInOutput":844},"src/utils.ts":{"bytesInOutput":689},"src/namespaces/evm.ts":{"bytesInOutput":556},"src/namespaces/solana.ts":{"bytesInOutput":657},"src/actions/solana.ts":{"bytesInOutput":190}},"bytes":4655}}}
@@ -0,0 +1,3 @@
1
+ declare const buildProvider: () => import("@rango-dev/wallets-core").Provider;
2
+ export { buildProvider };
3
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kDAeP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { GenericSigner, SolanaTransaction } from 'rango-types';
2
- type SolanaExternalProvider = any;
3
- export declare class CustomSolanaSigner implements GenericSigner<SolanaTransaction> {
2
+ import { type SolanaExternalProvider } from '@rango-dev/signer-solana';
3
+ export declare class Coin98SolanaSigner implements GenericSigner<SolanaTransaction> {
4
4
  private provider;
5
5
  constructor(provider: SolanaExternalProvider);
6
6
  signMessage(msg: string): Promise<string>;
@@ -8,5 +8,4 @@ export declare class CustomSolanaSigner implements GenericSigner<SolanaTransacti
8
8
  hash: string;
9
9
  }>;
10
10
  }
11
- export {};
12
- //# sourceMappingURL=solana-signer.d.ts.map
11
+ //# sourceMappingURL=solana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/signers/solana.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,kBAAmB,YAAW,aAAa,CAAC,iBAAiB,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAyB;gBAC7B,QAAQ,EAAE,sBAAsB;IAItC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzC,aAAa,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAmCtE"}
@@ -0,0 +1,10 @@
1
+ import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ type ProviderObject = {
5
+ [LegacyNetworks.ETHEREUM]: EvmProviderApi;
6
+ [LegacyNetworks.SOLANA]: SolanaProviderApi;
7
+ };
8
+ export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
9
+ export {};
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAElG,KAAK,cAAc,GAAG;IACpB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Provider } from './types.js';
2
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+ export declare function coin98(): Map<any, any> | null;
5
+ export declare function getInstanceOrThrow(): Provider;
6
+ export declare function evmCoin98(): EvmProviderApi;
7
+ export declare function solanaCoin98(): SolanaProviderApi;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAIlG,wBAAgB,MAAM,yBAiBrB;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,SAAS,IAAI,cAAc,CAS1C;AAED,wBAAgB,YAAY,IAAI,iBAAiB,CAShD"}
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-coin98",
3
- "version": "0.60.1-next.0",
3
+ "version": "0.60.1-next.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
- "source": "./src/index.ts",
7
- "main": "./dist/index.js",
6
+ "source": "./src/mod.ts",
7
+ "main": "./dist/mod.js",
8
8
  "exports": {
9
- ".": "./dist/index.js"
9
+ ".": "./dist/mod.js"
10
10
  },
11
- "typings": "dist/index.d.ts",
11
+ "typings": "dist/mod.d.ts",
12
12
  "files": [
13
13
  "dist",
14
14
  "src"
15
15
  ],
16
16
  "scripts": {
17
- "build": "node ../../scripts/build/command.mjs --path wallets/provider-coin98",
17
+ "build": "node ../../scripts/build/command.mjs --path wallets/provider-coin98 --inputs src/mod.ts",
18
18
  "ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
19
19
  "clean": "rimraf dist",
20
20
  "format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
@@ -24,7 +24,7 @@
24
24
  "@rango-dev/signer-evm": "^0.40.0",
25
25
  "@rango-dev/signer-solana": "^0.46.1",
26
26
  "@rango-dev/wallets-core": "^0.57.0",
27
- "@rango-dev/wallets-shared": "^0.58.1-next.0",
27
+ "@rango-dev/wallets-shared": "^0.58.1-next.1",
28
28
  "@solana/web3.js": "^1.91.4",
29
29
  "bs58": "^5.0.0",
30
30
  "rango-types": "^0.1.89"
@@ -32,4 +32,4 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  }
35
- }
35
+ }
package/readme.md CHANGED
@@ -1 +1,24 @@
1
1
  # @rango-dev/provider-coin98
2
+
3
+ Coin98 integration for hub.
4
+ [Homepage](https://coin98.com/) | [Docs](https://docs.coin98.com/)
5
+
6
+ More about implementation status can be found [here](../readme.md).
7
+
8
+ ## Implementation notes/limitations
9
+
10
+ ### Feature
11
+
12
+ #### ⚠️ Switch Account
13
+
14
+ When the user switches to an account that **does not have prior permissions** granted to the dApp,
15
+ Coin98 **automatically disconnects** the current session.
16
+
17
+ #### ❌ Auto Connect
18
+
19
+ Can't auto connect because if we don't have permission and try to connect to the wallet,
20
+ it will still show the connect popup
21
+
22
+ ---
23
+
24
+ More wallet information can be found in [readme.md](../readme.md).
@@ -0,0 +1,19 @@
1
+ import type { Context, FunctionWithContext } from '@rango-dev/wallets-core';
2
+
3
+ import {
4
+ type SolanaActions,
5
+ type ProviderAPI as SolanaProviderApi,
6
+ utils,
7
+ } from '@rango-dev/wallets-core/namespaces/solana';
8
+
9
+ function connect(
10
+ getInstance: () => SolanaProviderApi
11
+ ): FunctionWithContext<SolanaActions['connect'], Context> {
12
+ return async () => {
13
+ const solanaInstance = getInstance();
14
+ const connectResult = await solanaInstance.connect();
15
+ return utils.formatAccountsToCAIP(connectResult);
16
+ };
17
+ }
18
+
19
+ export const solanaActions = { connect };
@@ -0,0 +1,55 @@
1
+ import type { ProviderMetadata } from '@rango-dev/wallets-core';
2
+
3
+ import { WalletTypes } from '@rango-dev/wallets-shared';
4
+ import {
5
+ type BlockchainMeta,
6
+ evmBlockchains,
7
+ solanaBlockchain,
8
+ } from 'rango-types';
9
+
10
+ import getSigners from './signer.js';
11
+ import { getInstanceOrThrow } from './utils.js';
12
+
13
+ export const WALLET_ID = WalletTypes.COIN98;
14
+ export const COIN98_INJECTION_DELAY = 1000;
15
+ export const metadata: ProviderMetadata = {
16
+ name: 'Coin98',
17
+ icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg',
18
+ extensions: {
19
+ chrome:
20
+ 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',
21
+ brave:
22
+ 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',
23
+ homepage: 'https://coin98.com/wallet',
24
+ },
25
+ properties: [
26
+ {
27
+ name: 'namespaces',
28
+ value: {
29
+ selection: 'multiple',
30
+ data: [
31
+ {
32
+ label: 'EVM',
33
+ value: 'EVM',
34
+ id: 'ETH',
35
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
36
+ evmBlockchains(allBlockchains),
37
+ },
38
+ {
39
+ label: 'Solana',
40
+ value: 'Solana',
41
+ id: 'SOLANA',
42
+ getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
43
+ solanaBlockchain(allBlockchains),
44
+ },
45
+ ],
46
+ },
47
+ },
48
+ {
49
+ name: 'signers',
50
+ value: {
51
+ getSigners: async () => getSigners(getInstanceOrThrow()),
52
+ },
53
+ },
54
+ ],
55
+ };
package/src/mod.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { defineVersions } from '@rango-dev/wallets-core/utils';
2
+
3
+ import { buildProvider } from './provider.js';
4
+
5
+ const versions = () =>
6
+ defineVersions().version('1.0.0', buildProvider()).build();
7
+
8
+ export { versions };
@@ -0,0 +1,47 @@
1
+ import type { EvmActions } from '@rango-dev/wallets-core/namespaces/evm';
2
+
3
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
4
+ import {
5
+ builders as commonBuilders,
6
+ standardizeAndThrowError,
7
+ } from '@rango-dev/wallets-core/namespaces/common';
8
+ import { actions, builders } from '@rango-dev/wallets-core/namespaces/evm';
9
+
10
+ import { WALLET_ID } from '../constants.js';
11
+ import { evmCoin98 } from '../utils.js';
12
+
13
+ const [changeAccountSubscriber, changeAccountCleanup] = builders
14
+ .changeAccountSubscriber(evmCoin98)
15
+ .build();
16
+
17
+ const connect = builders
18
+ .connect()
19
+ .action(actions.connect(evmCoin98))
20
+ .before(changeAccountSubscriber)
21
+ .or(changeAccountCleanup)
22
+ .or(standardizeAndThrowError)
23
+ .build();
24
+
25
+ const disconnect = commonBuilders
26
+ .disconnect<EvmActions>()
27
+ .after(changeAccountCleanup)
28
+ .build();
29
+
30
+ const canSwitchNetwork = builders
31
+ .canSwitchNetwork()
32
+ .action(actions.canSwitchNetwork())
33
+ .build();
34
+
35
+ const getChainId = builders
36
+ .getChainId()
37
+ .action(actions.getChainId(evmCoin98))
38
+ .build();
39
+
40
+ const evm = new NamespaceBuilder<EvmActions>('EVM', WALLET_ID)
41
+ .action(connect)
42
+ .action(disconnect)
43
+ .action(canSwitchNetwork)
44
+ .action(getChainId)
45
+ .build();
46
+
47
+ export { evm };
@@ -0,0 +1,57 @@
1
+ import { NamespaceBuilder } from '@rango-dev/wallets-core';
2
+ import {
3
+ builders as commonBuilders,
4
+ standardizeAndThrowError,
5
+ } from '@rango-dev/wallets-core/namespaces/common';
6
+ import {
7
+ builders,
8
+ type SolanaActions,
9
+ } from '@rango-dev/wallets-core/namespaces/solana';
10
+
11
+ import { solanaActions } from '../actions/solana.js';
12
+ import { WALLET_ID } from '../constants.js';
13
+ import { solanaCoin98 } from '../utils.js';
14
+
15
+ const [changeAccountSubscriber, changeAccountCleanup] = builders
16
+ .changeAccountSubscriber(solanaCoin98)
17
+ /*
18
+ * Coin98 returns EVM addresses on account change instead of Solana addresses even though
19
+ * we are listening to the changes on the Solana instance.
20
+ * But if we get the EVM address, it means that we also have permission to eagerly get
21
+ * the Solana address of the new account.
22
+ */
23
+ .onSwitchAccount(async (event, context) => {
24
+ event.preventDefault();
25
+ if (event.payload && event.payload.length !== 0) {
26
+ context.action('connect');
27
+ } else {
28
+ context.action('disconnect');
29
+ }
30
+ })
31
+ .addEventListener((instance, callback) =>
32
+ instance.on('accountsChanged', callback)
33
+ )
34
+ .removeEventListener((instance, callback) =>
35
+ instance.off('accountsChanged', callback)
36
+ )
37
+ .build();
38
+
39
+ const connect = builders
40
+ .connect()
41
+ .action(solanaActions.connect(solanaCoin98))
42
+ .before(changeAccountSubscriber)
43
+ .or(changeAccountCleanup)
44
+ .or(standardizeAndThrowError)
45
+ .build();
46
+
47
+ const disconnect = commonBuilders
48
+ .disconnect<SolanaActions>()
49
+ .after(changeAccountCleanup)
50
+ .build();
51
+
52
+ const solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)
53
+ .action(connect)
54
+ .action(disconnect)
55
+ .build();
56
+
57
+ export { solana };
@@ -0,0 +1,25 @@
1
+ import { ProviderBuilder } from '@rango-dev/wallets-core';
2
+
3
+ import { COIN98_INJECTION_DELAY, metadata, WALLET_ID } from './constants.js';
4
+ import { evm } from './namespaces/evm.js';
5
+ import { solana } from './namespaces/solana.js';
6
+ import { coin98 } from './utils.js';
7
+
8
+ const buildProvider = () =>
9
+ new ProviderBuilder(WALLET_ID)
10
+ .init(function (context) {
11
+ const [, setState] = context.state();
12
+
13
+ setTimeout(() => {
14
+ if (coin98()) {
15
+ setState('installed', true);
16
+ console.debug('[coin98] instance detected.', context);
17
+ }
18
+ }, COIN98_INJECTION_DELAY);
19
+ })
20
+ .config('metadata', metadata)
21
+ .add('evm', evm)
22
+ .add('solana', solana)
23
+ .build();
24
+
25
+ export { buildProvider };
package/src/signer.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  } from '@rango-dev/wallets-shared';
9
9
  import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
10
10
 
11
- import { CustomSolanaSigner } from './solana-signer.js';
11
+ import { Coin98SolanaSigner } from './signers/solana.js';
12
12
 
13
13
  export default async function getSigners(
14
14
  provider: LegacyNetworkProviderMap
@@ -20,6 +20,6 @@ export default async function getSigners(
20
20
  async () => await import('@rango-dev/signer-evm')
21
21
  );
22
22
  signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));
23
- signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));
23
+ signers.registerSigner(TxType.SOLANA, new Coin98SolanaSigner(solProvider));
24
24
  return signers;
25
25
  }
@@ -1,19 +1,16 @@
1
- import type { SolanaWeb3Signer } from '@rango-dev/signer-solana';
2
1
  import type { Transaction, VersionedTransaction } from '@solana/web3.js';
3
2
  import type { GenericSigner, SolanaTransaction } from 'rango-types';
4
3
 
4
+ import {
5
+ type SolanaExternalProvider,
6
+ type SolanaWeb3Signer,
7
+ } from '@rango-dev/signer-solana';
5
8
  import { generalSolanaTransactionExecutor } from '@rango-dev/signer-solana';
6
9
  import { PublicKey } from '@solana/web3.js';
7
10
  import bs58 from 'bs58';
8
11
  import { SignerError, SignerErrorCode } from 'rango-types';
9
12
 
10
- /*
11
- * TODO - replace with real type
12
- * tslint:disable-next-line: no-any
13
- */
14
- type SolanaExternalProvider = any;
15
-
16
- export class CustomSolanaSigner implements GenericSigner<SolanaTransaction> {
13
+ export class Coin98SolanaSigner implements GenericSigner<SolanaTransaction> {
17
14
  private provider: SolanaExternalProvider;
18
15
  constructor(provider: SolanaExternalProvider) {
19
16
  this.provider = provider;
@@ -22,7 +19,7 @@ export class CustomSolanaSigner implements GenericSigner<SolanaTransaction> {
22
19
  async signMessage(msg: string): Promise<string> {
23
20
  try {
24
21
  const result = await this.provider.signMessage(msg);
25
- return result.signature;
22
+ return result.signature as unknown as string;
26
23
  } catch (error) {
27
24
  throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);
28
25
  }
@@ -44,10 +41,23 @@ export class CustomSolanaSigner implements GenericSigner<SolanaTransaction> {
44
41
  const raw = solanaWeb3Transaction.serialize();
45
42
  return raw;
46
43
  };
47
- const hash = await generalSolanaTransactionExecutor(
48
- tx,
49
- DefaultSolanaSigner
50
- );
51
- return { hash };
44
+ try {
45
+ const hash = await generalSolanaTransactionExecutor(
46
+ tx,
47
+ DefaultSolanaSigner
48
+ );
49
+ return { hash };
50
+ } catch (e: unknown) {
51
+ const REJECTION_CODE = 4001;
52
+ if (
53
+ e &&
54
+ typeof e === 'object' &&
55
+ 'code' in e &&
56
+ e.code === REJECTION_CODE
57
+ ) {
58
+ throw new SignerError(SignerErrorCode.REJECTED_BY_USER, undefined, e);
59
+ }
60
+ throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, e);
61
+ }
52
62
  }
53
63
  }
package/src/types.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
2
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+
5
+ type ProviderObject = {
6
+ [LegacyNetworks.ETHEREUM]: EvmProviderApi;
7
+ [LegacyNetworks.SOLANA]: SolanaProviderApi;
8
+ };
9
+
10
+ export type Provider = Map<
11
+ keyof ProviderObject,
12
+ ProviderObject[keyof ProviderObject]
13
+ >;
package/src/utils.ts ADDED
@@ -0,0 +1,56 @@
1
+ import type { Provider } from './types.js';
2
+ import type { ProviderAPI as EvmProviderApi } from '@rango-dev/wallets-core/namespaces/evm';
3
+ import type { ProviderAPI as SolanaProviderApi } from '@rango-dev/wallets-core/namespaces/solana';
4
+
5
+ import { Networks } from '@rango-dev/wallets-shared';
6
+
7
+ export function coin98() {
8
+ const { coin98 } = window;
9
+
10
+ if (!coin98) {
11
+ return null;
12
+ }
13
+
14
+ const instances = new Map();
15
+
16
+ if (coin98.provider) {
17
+ instances.set(Networks.ETHEREUM, coin98.provider);
18
+ }
19
+ if (coin98.sol) {
20
+ instances.set(Networks.SOLANA, coin98.sol);
21
+ }
22
+
23
+ return instances;
24
+ }
25
+
26
+ export function getInstanceOrThrow(): Provider {
27
+ const instances = coin98();
28
+
29
+ if (!instances) {
30
+ throw new Error('Coin98 is not injected. Please check your wallet.');
31
+ }
32
+
33
+ return instances;
34
+ }
35
+
36
+ export function evmCoin98(): EvmProviderApi {
37
+ const instances = coin98();
38
+ const evmInstance = instances?.get(Networks.ETHEREUM);
39
+ if (!evmInstance) {
40
+ throw new Error(
41
+ 'Coin98 not injected or EVM not enabled. Please check your wallet.'
42
+ );
43
+ }
44
+ return evmInstance as EvmProviderApi;
45
+ }
46
+
47
+ export function solanaCoin98(): SolanaProviderApi {
48
+ const instances = coin98();
49
+ const solanaInstance = instances?.get(Networks.SOLANA);
50
+ if (!solanaInstance) {
51
+ throw new Error(
52
+ 'Coin98 Solana instance is not available. Ensure that Solana support is enabled in your wallet.'
53
+ );
54
+ }
55
+ return solanaInstance as SolanaProviderApi;
56
+ }
package/dist/helpers.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export declare function coin98(): Map<any, any> | null;
2
- export declare function getSolanaAccounts(instance: any): Promise<{
3
- accounts: any;
4
- }>;
5
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,yBAqBrB;AAMD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,GAAG;;GAMpD"}
package/dist/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import type { CanSwitchNetwork, Connect, Subscribe, SwitchNetwork, WalletInfo } from '@rango-dev/wallets-shared';
2
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
3
- import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
4
- import { coin98 as coin98_instances } from './helpers.js';
5
- export declare const config: {
6
- type: WalletTypes;
7
- defaultNetwork: Networks;
8
- };
9
- export declare const getInstance: typeof coin98_instances;
10
- export declare const connect: Connect;
11
- export declare const subscribe: Subscribe;
12
- export declare const switchNetwork: SwitchNetwork;
13
- export declare const canSwitchNetworkTo: CanSwitchNetwork;
14
- export declare const getSigners: (provider: any) => Promise<SignerFactory>;
15
- export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAKL,QAAQ,EAER,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAqB,MAAM,cAAc,CAAC;AAK7E,eAAO,MAAM,MAAM;;;CAIlB,CAAC;AACF,eAAO,MAAM,WAAW,yBAAmB,CAAC;AAE5C,eAAO,MAAM,OAAO,EAAE,OAarB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAqCvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAU3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAwC,CAAC;AAE1E,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAU,CAAC;AAE5E,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAkBjE,CAAC"}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- var k=Object.defineProperty;var n=(e,o)=>k(e,"name",{value:o,configurable:!0});import{canSwitchNetworkToEvm as M,chooseInstance as i,getBlockChainNameFromId as I,getEvmAccounts as P,Networks as c,switchNetworkForEvm as R,WalletTypes as L}from"@rango-dev/wallets-shared";import{evmBlockchains as F,solanaBlockchain as O}from"rango-types";import{Networks as p}from"@rango-dev/wallets-shared";function u(){let{coin98:e,ethereum:o}=window;if(!e)return null;let t=new Map;return e.provider&&t.set(p.ETHEREUM,e.provider),o&&o.isCoin98&&t.set(p.ETHEREUM,o),e.sol&&t.set(p.SOLANA,e.sol),t}n(u,"coin98");async function w(e){return await e.enable(),{accounts:await e.request({method:"sol_accounts"})}}n(w,"getSolanaAccounts");import{dynamicImportWithRefinedError as b,getNetworkInstance as d,Networks as S}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as C,TransactionType as f}from"rango-types";import{generalSolanaTransactionExecutor as v}from"@rango-dev/signer-solana";import{PublicKey as N}from"@solana/web3.js";import T from"bs58";import{SignerError as x,SignerErrorCode as A}from"rango-types";var m=class{static{n(this,"CustomSolanaSigner")}provider;constructor(o){this.provider=o}async signMessage(o){try{return(await this.provider.signMessage(o)).signature}catch(t){throw new x(A.SIGN_TX_ERROR,void 0,t)}}async signAndSendTx(o){return{hash:await v(o,n(async r=>{let s=await this.provider.request({method:"sol_sign",params:[r]}),l=new N(s.publicKey),g=T.decode(s.signature);return r.addSignature(l,Buffer.from(g)),r.serialize()},"DefaultSolanaSigner"))}}};async function h(e){let o=d(e,S.ETHEREUM),t=d(e,S.SOLANA),a=new C,{DefaultEvmSigner:r}=await b(async()=>await import("@rango-dev/signer-evm"));return a.registerSigner(f.EVM,new r(o)),a.registerSigner(f.SOLANA,new m(t)),a}n(h,"getSigners");var U=L.COIN98,te={type:U,defaultNetwork:c.ETHEREUM},ne=u,re=n(async({instance:e,meta:o})=>{let t=i(e,o,c.ETHEREUM),a=i(e,o,c.SOLANA),r=await P(t),{accounts:s}=await w(a);return[r,{accounts:s,chainId:c.SOLANA}]},"connect"),ae=n(({instance:e,meta:o,updateChainId:t,connect:a})=>{let r=i(e,o,c.ETHEREUM),s=n(l=>{let g=I(l,o)||c.Unknown;i(e,o,g).request({method:"eth_requestAccounts"}).then(()=>{}).catch(E=>{console.log({err:E})}),t(l),a(g)},"handleChainChanged");return r?.on?.("chainChanged",s),()=>{r?.off?.("chainChanged",s)}},"subscribe"),se=n(async e=>{let o=i(e.instance,e.meta,e.network);return R({...e,instance:o})},"switchNetwork"),ce=M,ie=h,le=n(e=>{let o=F(e),t=O(e);return{name:"Coin98",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg",BRAVE:"https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg",DEFAULT:"https://coin98.com/wallet"},color:"#1d1c25",supportedChains:[...o,...t]}},"getWalletInfo");export{ce as canSwitchNetworkTo,te as config,re as connect,ne as getInstance,ie as getSigners,le as getWalletInfo,ae as subscribe,se as switchNetwork};
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts", "../src/solana-signer.ts"],
4
- "sourcesContent": ["import type {\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canSwitchNetworkToEvm,\n chooseInstance,\n getBlockChainNameFromId,\n getEvmAccounts,\n Networks,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains, solanaBlockchain } from 'rango-types';\n\nimport { coin98 as coin98_instances, getSolanaAccounts } from './helpers.js';\nimport signer from './signer.js';\n\nconst WALLET = WalletTypes.COIN98;\n\nexport const config = {\n type: WALLET,\n // TODO: Get from evm networks\n defaultNetwork: Networks.ETHEREUM,\n};\nexport const getInstance = coin98_instances;\n\nexport const connect: Connect = async ({ instance, meta }) => {\n const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);\n const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);\n const evm = await getEvmAccounts(evm_instance);\n const { accounts: solanaAccounts } = await getSolanaAccounts(sol_instance);\n\n return [\n evm,\n {\n accounts: solanaAccounts,\n chainId: Networks.SOLANA,\n },\n ];\n};\n\nexport const subscribe: Subscribe = ({\n instance,\n meta,\n updateChainId,\n connect,\n}) => {\n const eth = chooseInstance(instance, meta, Networks.ETHEREUM);\n const handleChainChanged = (chainId: string) => {\n const network = getBlockChainNameFromId(chainId, meta) || Networks.Unknown;\n const targetInstance = chooseInstance(instance, meta, network);\n targetInstance\n .request({ method: 'eth_requestAccounts' })\n .then(() => undefined)\n .catch((err: unknown) => {\n console.log({ err });\n });\n /*\n *TODO:\n *We are calling `connect` here because signer can't detect\n *currect network, I guess the bug is in our signer and it\n *gets the wrong network by calling a wrong method or something.\n *Anyways, this works for now, maybe we can reconsider it in future\n *Whenever we refactored the signer code as well.\n */\n\n /*\n * we need to update `network` first, if not, it will goes through\n * the switching network and will open unneccessary pop ups.\n */\n updateChainId(chainId);\n connect(network);\n };\n eth?.on?.('chainChanged', handleChainChanged);\n\n return () => {\n eth?.off?.('chainChanged', handleChainChanged);\n };\n};\n\nexport const switchNetwork: SwitchNetwork = async (options) => {\n const instance = chooseInstance(\n options.instance,\n options.meta,\n options.network\n );\n return switchNetworkForEvm({\n ...options,\n instance,\n });\n};\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => Promise<SignerFactory> = signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n const solana = solanaBlockchain(allBlockChains);\n return {\n name: 'Coin98',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',\n DEFAULT: 'https://coin98.com/wallet',\n },\n color: '#1d1c25',\n supportedChains: [...evms, ...solana],\n };\n};\n", "import { Networks } from '@rango-dev/wallets-shared';\n\nexport function coin98() {\n const { coin98, ethereum } = window;\n\n if (!coin98) {\n return null;\n }\n\n const instances = new Map();\n\n // When disabled overring metamask\n if (coin98.provider) {\n instances.set(Networks.ETHEREUM, coin98.provider);\n }\n if (ethereum && ethereum.isCoin98) {\n instances.set(Networks.ETHEREUM, ethereum);\n }\n if (coin98.sol) {\n instances.set(Networks.SOLANA, coin98.sol);\n }\n\n return instances;\n}\n\n/*\n *This is how coin98 is getting solana accounts.\n *That's the reason we haven't moved it to `shared`\n */\nexport async function getSolanaAccounts(instance: any) {\n await instance.enable();\n const accounts = await instance.request({ method: 'sol_accounts' });\n return {\n accounts,\n };\n}\n", "import type { LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';\nimport type { SignerFactory } from 'rango-types';\n\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n Networks,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { CustomSolanaSigner } from './solana-signer.js';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const ethProvider = getNetworkInstance(provider, Networks.ETHEREUM);\n const solProvider = getNetworkInstance(provider, Networks.SOLANA);\n const signers = new DefaultSignerFactory();\n const { DefaultEvmSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-evm')\n );\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(ethProvider));\n signers.registerSigner(TxType.SOLANA, new CustomSolanaSigner(solProvider));\n return signers;\n}\n", "import type { SolanaWeb3Signer } from '@rango-dev/signer-solana';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { GenericSigner, SolanaTransaction } from 'rango-types';\n\nimport { generalSolanaTransactionExecutor } from '@rango-dev/signer-solana';\nimport { PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\nimport { SignerError, SignerErrorCode } from 'rango-types';\n\n/*\n * TODO - replace with real type\n * tslint:disable-next-line: no-any\n */\ntype SolanaExternalProvider = any;\n\nexport class CustomSolanaSigner implements GenericSigner<SolanaTransaction> {\n private provider: SolanaExternalProvider;\n constructor(provider: SolanaExternalProvider) {\n this.provider = provider;\n }\n\n async signMessage(msg: string): Promise<string> {\n try {\n const result = await this.provider.signMessage(msg);\n return result.signature;\n } catch (error) {\n throw new SignerError(SignerErrorCode.SIGN_TX_ERROR, undefined, error);\n }\n }\n\n async signAndSendTx(tx: SolanaTransaction): Promise<{ hash: string }> {\n const DefaultSolanaSigner: SolanaWeb3Signer = async (\n solanaWeb3Transaction: Transaction | VersionedTransaction\n ) => {\n const response: { publicKey: string; signature: string } =\n await this.provider.request({\n method: 'sol_sign',\n params: [solanaWeb3Transaction],\n });\n const publicKey = new PublicKey(response.publicKey);\n const sign = bs58.decode(response.signature);\n\n solanaWeb3Transaction.addSignature(publicKey, Buffer.from(sign));\n const raw = solanaWeb3Transaction.serialize();\n return raw;\n };\n const hash = await generalSolanaTransactionExecutor(\n tx,\n DefaultSolanaSigner\n );\n return { hash };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["canSwitchNetworkToEvm", "chooseInstance", "getBlockChainNameFromId", "getEvmAccounts", "Networks", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "solanaBlockchain", "Networks", "coin98", "ethereum", "instances", "Networks", "__name", "getSolanaAccounts", "instance", "dynamicImportWithRefinedError", "getNetworkInstance", "Networks", "DefaultSignerFactory", "TxType", "generalSolanaTransactionExecutor", "PublicKey", "bs58", "SignerError", "SignerErrorCode", "CustomSolanaSigner", "__name", "provider", "msg", "error", "SignerError", "SignerErrorCode", "tx", "generalSolanaTransactionExecutor", "solanaWeb3Transaction", "response", "publicKey", "PublicKey", "sign", "bs58", "getSigners", "provider", "ethProvider", "getNetworkInstance", "Networks", "solProvider", "signers", "DefaultSignerFactory", "DefaultEvmSigner", "dynamicImportWithRefinedError", "TxType", "CustomSolanaSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "coin98", "connect", "__name", "instance", "meta", "evm_instance", "chooseInstance", "sol_instance", "evm", "getEvmAccounts", "solanaAccounts", "getSolanaAccounts", "subscribe", "updateChainId", "eth", "handleChainChanged", "chainId", "network", "getBlockChainNameFromId", "err", "switchNetwork", "options", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains", "solana", "solanaBlockchain"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana-signer.d.ts","sourceRoot":"","sources":["../src/solana-signer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAWpE,KAAK,sBAAsB,GAAG,GAAG,CAAC;AAElC,qBAAa,kBAAmB,YAAW,aAAa,CAAC,iBAAiB,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAyB;gBAC7B,QAAQ,EAAE,sBAAsB;IAItC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzC,aAAa,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAsBtE"}
package/src/helpers.ts DELETED
@@ -1,36 +0,0 @@
1
- import { Networks } from '@rango-dev/wallets-shared';
2
-
3
- export function coin98() {
4
- const { coin98, ethereum } = window;
5
-
6
- if (!coin98) {
7
- return null;
8
- }
9
-
10
- const instances = new Map();
11
-
12
- // When disabled overring metamask
13
- if (coin98.provider) {
14
- instances.set(Networks.ETHEREUM, coin98.provider);
15
- }
16
- if (ethereum && ethereum.isCoin98) {
17
- instances.set(Networks.ETHEREUM, ethereum);
18
- }
19
- if (coin98.sol) {
20
- instances.set(Networks.SOLANA, coin98.sol);
21
- }
22
-
23
- return instances;
24
- }
25
-
26
- /*
27
- *This is how coin98 is getting solana accounts.
28
- *That's the reason we haven't moved it to `shared`
29
- */
30
- export async function getSolanaAccounts(instance: any) {
31
- await instance.enable();
32
- const accounts = await instance.request({ method: 'sol_accounts' });
33
- return {
34
- accounts,
35
- };
36
- }
package/src/index.ts DELETED
@@ -1,121 +0,0 @@
1
- import type {
2
- CanSwitchNetwork,
3
- Connect,
4
- Subscribe,
5
- SwitchNetwork,
6
- WalletInfo,
7
- } from '@rango-dev/wallets-shared';
8
- import type { BlockchainMeta, SignerFactory } from 'rango-types';
9
-
10
- import {
11
- canSwitchNetworkToEvm,
12
- chooseInstance,
13
- getBlockChainNameFromId,
14
- getEvmAccounts,
15
- Networks,
16
- switchNetworkForEvm,
17
- WalletTypes,
18
- } from '@rango-dev/wallets-shared';
19
- import { evmBlockchains, solanaBlockchain } from 'rango-types';
20
-
21
- import { coin98 as coin98_instances, getSolanaAccounts } from './helpers.js';
22
- import signer from './signer.js';
23
-
24
- const WALLET = WalletTypes.COIN98;
25
-
26
- export const config = {
27
- type: WALLET,
28
- // TODO: Get from evm networks
29
- defaultNetwork: Networks.ETHEREUM,
30
- };
31
- export const getInstance = coin98_instances;
32
-
33
- export const connect: Connect = async ({ instance, meta }) => {
34
- const evm_instance = chooseInstance(instance, meta, Networks.ETHEREUM);
35
- const sol_instance = chooseInstance(instance, meta, Networks.SOLANA);
36
- const evm = await getEvmAccounts(evm_instance);
37
- const { accounts: solanaAccounts } = await getSolanaAccounts(sol_instance);
38
-
39
- return [
40
- evm,
41
- {
42
- accounts: solanaAccounts,
43
- chainId: Networks.SOLANA,
44
- },
45
- ];
46
- };
47
-
48
- export const subscribe: Subscribe = ({
49
- instance,
50
- meta,
51
- updateChainId,
52
- connect,
53
- }) => {
54
- const eth = chooseInstance(instance, meta, Networks.ETHEREUM);
55
- const handleChainChanged = (chainId: string) => {
56
- const network = getBlockChainNameFromId(chainId, meta) || Networks.Unknown;
57
- const targetInstance = chooseInstance(instance, meta, network);
58
- targetInstance
59
- .request({ method: 'eth_requestAccounts' })
60
- .then(() => undefined)
61
- .catch((err: unknown) => {
62
- console.log({ err });
63
- });
64
- /*
65
- *TODO:
66
- *We are calling `connect` here because signer can't detect
67
- *currect network, I guess the bug is in our signer and it
68
- *gets the wrong network by calling a wrong method or something.
69
- *Anyways, this works for now, maybe we can reconsider it in future
70
- *Whenever we refactored the signer code as well.
71
- */
72
-
73
- /*
74
- * we need to update `network` first, if not, it will goes through
75
- * the switching network and will open unneccessary pop ups.
76
- */
77
- updateChainId(chainId);
78
- connect(network);
79
- };
80
- eth?.on?.('chainChanged', handleChainChanged);
81
-
82
- return () => {
83
- eth?.off?.('chainChanged', handleChainChanged);
84
- };
85
- };
86
-
87
- export const switchNetwork: SwitchNetwork = async (options) => {
88
- const instance = chooseInstance(
89
- options.instance,
90
- options.meta,
91
- options.network
92
- );
93
- return switchNetworkForEvm({
94
- ...options,
95
- instance,
96
- });
97
- };
98
-
99
- export const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;
100
-
101
- export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
102
-
103
- export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
104
- allBlockChains
105
- ) => {
106
- const evms = evmBlockchains(allBlockChains);
107
- const solana = solanaBlockchain(allBlockChains);
108
- return {
109
- name: 'Coin98',
110
- img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/coin98/icon.svg',
111
- installLink: {
112
- CHROME:
113
- 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',
114
- BRAVE:
115
- 'https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg',
116
- DEFAULT: 'https://coin98.com/wallet',
117
- },
118
- color: '#1d1c25',
119
- supportedChains: [...evms, ...solana],
120
- };
121
- };