{"version":3,"sources":["../../src/provider/provider.ts","../../src/provider/public-key.ts","../../src/provider/register.ts","../../src/provider/wallet.ts","../../src/provider/account.ts","../../src/provider/solana.ts","../../src/provider/util.ts","../../src/provider/initialize.ts"],"names":["EventEmitter","NetworkVMType","RpcMethod","SolanaCaip2ChainId","base58","legacyPublicKey","__name","address","byteArray","otherPubKey","_chainAgnosticProvider","_info","_accountsChanged","_getEventHandler","_handleBackgroundMessage","_SolanaWalletProvider","chainAgnosticProvider","icon","version","name","__publicField","__privateAdd","accounts","vm","method","__privateGet","params","eventHandler","__privateSet","onlyIfTrusted","account","caipId","serializedTx","sendOptions","serializedTxs","results","tx","signedTx","serializedMessage","SolanaWalletProvider","registerWallet","wallet","callback","register","RegisterWalletEvent","error","api","_detail","_RegisterWalletEvent","SolanaSignAndSendTransaction","SolanaSignMessage","SolanaSignTransaction","StandardConnect","StandardDisconnect","StandardEvents","base64","SOLANA_MAINNET_CHAIN","SOLANA_DEVNET_CHAIN","SOLANA_TESTNET_CHAIN","SOLANA_CHAINS","SOLANA_CHAIN_TO_CAIP2_ID","isSolanaChain","chain","getSolanaCaip2Id","chains","features","_address","_publicKey","_chains","_features","_label","_icon","_ConnectedWalletAccount","publicKey","label","ConnectedWalletAccount","bytesEqual","a","b","arraysEqual","length","i","ConnectionNamespace","_listeners","_version","_connection","_account","_on","_emit","emit_fn","_off","off_fn","_connected","_disconnected","_reconnected","_connect","_disconnect","_signAndSendTransaction","_signTransaction","_signMessage","_StandardWallet","connection","event","listener","__privateMethod","silent","inputs","outputs","transaction","options","minContextSlot","preflightCommitment","skipPreflight","maxRetries","signature","input","signedTransaction","transactions","signedTransactions","message","args","existingListener","StandardWallet","initialize"],"mappings":"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","sourcesContent":["import EventEmitter from 'events';\nimport { NetworkVMType, RpcMethod, type ChainAgnosticProvider } from '@avalabs/vm-module-types';\nimport type { PublicKey, SendOptions } from '@solana/web3.js';\nimport { SolanaCaip2ChainId } from '@avalabs/core-chains-sdk';\n\nimport type { Connection } from './window';\nimport { legacyPublicKey } from './public-key';\nimport type { WalletIcon } from '@wallet-standard/base';\n\nenum DAppProviderRequest {\n  WALLET_CONNECT = 'wallet_requestAccountPermission',\n}\n\n/**\n * Represents a Solana Wallet Provider that interacts with a chain-agnostic provider\n * to manage wallet connections, transactions, and events.\n *\n * @extends EventEmitter\n * @implements Connection\n */\nexport class SolanaWalletProvider extends EventEmitter implements Connection {\n  public publicKey: PublicKey | null = null;\n\n  readonly #chainAgnosticProvider: ChainAgnosticProvider;\n  readonly #info: { icon: WalletIcon; version: string; name: string };\n\n  /**\n   * Creates an instance of SolanaWalletProvider.\n   *\n   * @param chainAgnosticProvider - The chain-agnostic provider used for communication.\n   * @param options - Wallet information including icon, version, and name.\n   */\n  constructor(\n    chainAgnosticProvider: ChainAgnosticProvider,\n    { icon, version, name }: { icon: WalletIcon; version: string; name: string },\n  ) {\n    super();\n    this.#info = {\n      icon,\n      name,\n      version,\n    };\n    this.#chainAgnosticProvider = chainAgnosticProvider;\n    this.#chainAgnosticProvider.subscribeToMessage(this.#handleBackgroundMessage);\n  }\n\n  /**\n   * Retrieves wallet metadata such as icon, version, and name.\n   */\n  get info() {\n    return this.#info;\n  }\n\n  /**\n   * Connects to the wallet. If already connected, returns the public key.\n   *\n   * @param options - Connection options.\n   * @param options.onlyIfTrusted - If true, connects without approval if previously approved.\n   * @returns An object containing the public key.\n   */\n  async connect({ onlyIfTrusted }: { onlyIfTrusted?: boolean } = {}) {\n    if (this.publicKey) {\n      return { publicKey: this.publicKey };\n    }\n\n    const [address] = await this.#chainAgnosticProvider.request<[string]>({\n      data: {\n        method: DAppProviderRequest.WALLET_CONNECT,\n        params: { addressVM: NetworkVMType.SVM, onlyIfTrusted },\n      },\n    });\n\n    this.publicKey = legacyPublicKey(address);\n    return { publicKey: this.publicKey };\n  }\n\n  async disconnect() {\n    this.publicKey = null;\n    this.emit('disconnect');\n  }\n\n  /**\n   * Signs and sends a transaction.\n   *\n   * @param account - The account to use for signing.\n   * @param caipId - The Solana CAIP-2 chain ID.\n   * @param serializedTx - The serialized transaction to sign and send.\n   * @param sendOptions - Options for sending the transaction. See the docs here: https://solana.com/pl/docs/rpc/http/sendtransaction.\n   * @returns The transaction signature.\n   */\n  async signAndSendTransaction(\n    account: string,\n    caipId: SolanaCaip2ChainId,\n    serializedTx: string,\n    sendOptions: SendOptions,\n  ) {\n    const signature = await this.#chainAgnosticProvider.request<string>({\n      scope: caipId,\n      data: {\n        method: RpcMethod.SOLANA_SIGN_AND_SEND_TRANSACTION,\n        params: [\n          {\n            account,\n            serializedTx,\n            sendOptions,\n          },\n        ],\n      },\n    });\n\n    return signature;\n  }\n\n  /**\n   * Signs a transaction without sending it.\n   *\n   * @param account - The account to use for signing.\n   * @param caipId - The Solana CAIP-2 chain ID.\n   * @param serializedTx - The serialized transaction to sign.\n   * @returns The signed transaction.\n   */\n  async signTransaction(account: string, caipId: SolanaCaip2ChainId, serializedTx: string) {\n    const signedTx = await this.#chainAgnosticProvider.request<string>({\n      scope: caipId,\n      data: {\n        method: RpcMethod.SOLANA_SIGN_TRANSACTION,\n        params: [\n          {\n            account,\n            serializedTx,\n          },\n        ],\n      },\n    });\n\n    return signedTx;\n  }\n\n  /**\n   * Handles account changes by updating the public key and emitting appropriate events.\n   * The incoming {accounts} array may include non-Solana accounts, so we filter for the\n   * address described with the Solana VM type.\n   */\n  #accountsChanged = (accounts: { address: string; vm: NetworkVMType }[]) => {\n    const address = accounts.find(({ vm }) => vm === NetworkVMType.SVM)?.address;\n\n    if (!address) {\n      // Account switched to an unknown account\n      this.disconnect();\n    } else if (this.publicKey) {\n      // Account switched to a known account while we're already connected to a different one\n      this.publicKey = legacyPublicKey(address);\n      this.emit('accountChanged');\n    } else {\n      // Account switched to a known account while we're not connected\n      this.publicKey = legacyPublicKey(address);\n      this.emit('connect');\n    }\n  };\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  #getEventHandler = (method: string): ((...params: any[]) => void) => {\n    const handlerMap = {\n      connect: this.connect,\n      disconnect: this.disconnect,\n      accountsChangedCA: this.#accountsChanged,\n    };\n\n    return handlerMap[method as keyof typeof handlerMap] ?? (() => {});\n  };\n\n  #handleBackgroundMessage = ({ method, params }: { method: string; params: unknown }) => {\n    const eventHandler = this.#getEventHandler(method);\n    if (eventHandler) {\n      return eventHandler(params);\n    }\n\n    this.emit(method, params);\n  };\n\n  /**\n   * Signs multiple transactions without sending them.\n   *\n   * @param address - The address to use for signing.\n   * @param caipId - The Solana CAIP-2 chain ID.\n   * @param serializedTxs - An array of serialized transactions to sign.\n   * @returns An array of signed transactions.\n   */\n  async signAllTransactions(address: string, caipId: SolanaCaip2ChainId, serializedTxs: string[]): Promise<string[]> {\n    const results: string[] = [];\n\n    for (const tx of serializedTxs) {\n      const signedTx = await this.signTransaction(address, caipId, tx);\n      results.push(signedTx);\n    }\n\n    return results;\n  }\n\n  async signMessage(account: string, serializedMessage: string): Promise<string> {\n    const signature = await this.#chainAgnosticProvider.request<string>({\n      scope: SolanaCaip2ChainId.MAINNET, // Solana dApps do not pass it as they do for transactions, so we fake\n      data: {\n        method: RpcMethod.SOLANA_SIGN_MESSAGE,\n        params: [\n          {\n            account,\n            serializedMessage,\n          },\n        ],\n      },\n    });\n\n    return signature;\n  }\n\n  signIn() {\n    throw new Error('signIn() not implemented.');\n  }\n}\n","import { base58 } from '@scure/base';\nimport type { PublicKey } from '@solana/web3.js';\n\n// The wallet adapters expect a PublicKey instance (from @solana/web3.js < 2.0.0),\n// but we're already on v2.1.0.\n// To just straight up satisfy this requirement, we'd have to either use the legacy\n// @solana/web3.js package, which is already deprecated and has its own issues.\n// So here, I'm importing only the PublicKey type from @solana/web3.js < 2.0.0\n// and satisfying its interface with a custom implementation (minus the static\n// methods, which we do not use anyway).\nexport const legacyPublicKey = (address: string): PublicKey => {\n  const byteArray = Buffer.from(base58.decode(address));\n\n  const publicKey = {\n    get [Symbol.toStringTag]() {\n      return `PublicKey(${this.toString()})`;\n    },\n    toBase58: () => address,\n    toBuffer: () => byteArray,\n    toBytes: () => byteArray,\n    toJSON: () => address,\n    toString: () => address,\n    equals: (otherPubKey: PublicKey) => address === otherPubKey.toBase58(),\n    encode: () => byteArray,\n  } as const;\n\n  return publicKey satisfies PublicKey;\n};\n","// This is based on @wallet-standard/wallet\n\nimport type {\n  DEPRECATED_WalletsWindow,\n  Wallet,\n  WalletEventsWindow,\n  WindowRegisterWalletEvent,\n  WindowRegisterWalletEventCallback,\n} from '@wallet-standard/base';\n\nexport function registerWallet(wallet: Wallet): void {\n  const callback: WindowRegisterWalletEventCallback = ({ register }) => register(wallet);\n  try {\n    (window as WalletEventsWindow).dispatchEvent(new RegisterWalletEvent(callback));\n  } catch (error) {\n    console.error('wallet-standard:register-wallet event could not be dispatched\\n', error);\n  }\n  try {\n    (window as WalletEventsWindow).addEventListener('wallet-standard:app-ready', ({ detail: api }) => callback(api));\n  } catch (error) {\n    console.error('wallet-standard:app-ready event listener could not be added\\n', error);\n  }\n}\n\nclass RegisterWalletEvent extends Event implements WindowRegisterWalletEvent {\n  readonly #detail: WindowRegisterWalletEventCallback;\n\n  get detail() {\n    return this.#detail;\n  }\n\n  override get type() {\n    return 'wallet-standard:register-wallet' as const;\n  }\n\n  constructor(callback: WindowRegisterWalletEventCallback) {\n    super('wallet-standard:register-wallet', {\n      bubbles: false,\n      cancelable: false,\n      composed: false,\n    });\n    this.#detail = callback;\n  }\n\n  /** @deprecated */\n  override preventDefault(): never {\n    throw new Error('preventDefault cannot be called');\n  }\n\n  /** @deprecated */\n  override stopImmediatePropagation(): never {\n    throw new Error('stopImmediatePropagation cannot be called');\n  }\n\n  /** @deprecated */\n  override stopPropagation(): never {\n    throw new Error('stopPropagation cannot be called');\n  }\n}\n\n/** @deprecated */\nexport function DEPRECATED_registerWallet(wallet: Wallet): void {\n  registerWallet(wallet);\n  try {\n    ((window as DEPRECATED_WalletsWindow).navigator.wallets ||= []).push(({ register }) => register(wallet));\n  } catch (error) {\n    console.error('window.navigator.wallets could not be pushed\\n', error);\n  }\n}\n","import {\n  SolanaSignAndSendTransaction,\n  type SolanaSignAndSendTransactionFeature,\n  type SolanaSignAndSendTransactionMethod,\n  type SolanaSignAndSendTransactionOutput,\n  SolanaSignMessage,\n  type SolanaSignMessageFeature,\n  // type SolanaSignInMethod,\n  // type SolanaSignInOutput,\n  type SolanaSignMessageMethod,\n  type SolanaSignMessageOutput,\n  SolanaSignTransaction,\n  type SolanaSignTransactionFeature,\n  type SolanaSignTransactionMethod,\n  type SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport type { Wallet } from '@wallet-standard/base';\nimport {\n  StandardConnect,\n  type StandardConnectFeature,\n  type StandardConnectMethod,\n  StandardDisconnect,\n  type StandardDisconnectFeature,\n  type StandardDisconnectMethod,\n  StandardEvents,\n  type StandardEventsFeature,\n  type StandardEventsListeners,\n  type StandardEventsNames,\n  type StandardEventsOnMethod,\n} from '@wallet-standard/features';\nimport { base58, base64 } from '@scure/base';\nimport { ConnectedWalletAccount } from './account';\nimport type { SolanaChain } from './solana';\nimport { getSolanaCaip2Id, isSolanaChain, SOLANA_CHAINS } from './solana';\nimport { bytesEqual } from './util';\nimport type { Connection } from './window';\n\nexport const ConnectionNamespace = 'connection:';\n\nexport type ConnectorFeature = {\n  [ConnectionNamespace]: {\n    connection: Connection;\n  };\n};\n\nexport class StandardWallet implements Wallet {\n  readonly #listeners: {\n    [E in StandardEventsNames]?: StandardEventsListeners[E][];\n  } = {};\n  // Version of the Wallet Standard this wallet implements\n  readonly #version = '1.0.0' as const;\n\n  // Wallet connection\n  readonly #connection: Connection;\n\n  // Current account the wallet is connected with\n  #account: ConnectedWalletAccount | null = null;\n\n  /** Wallet Standard version this wallet implements */\n  get version() {\n    return this.#version;\n  }\n\n  /** Wallet version (i.e. Core Extension's version) */\n  get walletVersion() {\n    return this.#connection.info.version;\n  }\n\n  /** Name of the connected wallet app */\n  get name() {\n    return this.#connection.info.name;\n  }\n\n  /** Icon of the connected wallet app */\n  get icon() {\n    return this.#connection.info.icon;\n  }\n\n  get chains() {\n    return SOLANA_CHAINS.slice();\n  }\n\n  get features(): StandardConnectFeature &\n    StandardDisconnectFeature &\n    StandardEventsFeature &\n    SolanaSignAndSendTransactionFeature &\n    SolanaSignTransactionFeature &\n    SolanaSignMessageFeature &\n    // SolanaSignInFeature &\n    ConnectorFeature {\n    return {\n      [StandardConnect]: {\n        version: '1.0.0',\n        connect: this.#connect,\n      },\n      [StandardDisconnect]: {\n        version: '1.0.0',\n        disconnect: this.#disconnect,\n      },\n      [StandardEvents]: {\n        version: '1.0.0',\n        on: this.#on,\n      },\n      [SolanaSignAndSendTransaction]: {\n        version: '1.0.0',\n        supportedTransactionVersions: ['legacy', 0],\n        signAndSendTransaction: this.#signAndSendTransaction,\n      },\n      [SolanaSignTransaction]: {\n        version: '1.0.0',\n        supportedTransactionVersions: ['legacy', 0],\n        signTransaction: this.#signTransaction,\n      },\n      [SolanaSignMessage]: {\n        version: '1.0.0',\n        signMessage: this.#signMessage,\n      },\n      // [SolanaSignIn]: {\n      //   version: '1.0.0',\n      //   signIn: this.#signIn,\n      // },\n      [ConnectionNamespace]: {\n        connection: this.#connection,\n      },\n    };\n  }\n\n  get accounts() {\n    return this.#account ? [this.#account] : [];\n  }\n\n  constructor(connection: Connection) {\n    if (new.target === StandardWallet) {\n      Object.freeze(this);\n    }\n\n    this.#connection = connection;\n\n    connection.on('connect', this.#connected, this);\n    connection.on('disconnect', this.#disconnected, this);\n    connection.on('accountChanged', this.#reconnected, this);\n\n    this.#connected();\n  }\n\n  #on: StandardEventsOnMethod = (event, listener) => {\n    this.#listeners[event] ??= [];\n    this.#listeners[event]?.push(listener);\n\n    return (): void => this.#off(event, listener);\n  };\n\n  #emit<E extends StandardEventsNames>(event: E, ...args: Parameters<StandardEventsListeners[E]>): void {\n    // eslint-disable-next-line prefer-spread\n    this.#listeners[event]?.forEach((listener) => listener.apply(null, args));\n  }\n\n  #off<E extends StandardEventsNames>(event: E, listener: StandardEventsListeners[E]): void {\n    this.#listeners[event] = this.#listeners[event]?.filter((existingListener) => listener !== existingListener);\n  }\n\n  #connected = () => {\n    const address = this.#connection.publicKey?.toBase58();\n    if (address) {\n      const publicKey = this.#connection.publicKey!.toBytes();\n\n      const account = this.#account;\n      if (!account || account.address !== address || !bytesEqual(account.publicKey, publicKey)) {\n        this.#account = new ConnectedWalletAccount({ address, publicKey });\n        this.#emit('change', { accounts: this.accounts });\n      }\n    }\n  };\n\n  #disconnected = () => {\n    if (this.#account) {\n      this.#account = null;\n      this.#emit('change', { accounts: this.accounts });\n    }\n  };\n\n  #reconnected = () => {\n    if (this.#connection.publicKey) {\n      this.#connected();\n    } else {\n      this.#disconnected();\n    }\n  };\n\n  #connect: StandardConnectMethod = async ({ silent } = {}) => {\n    if (!this.#account) {\n      await this.#connection.connect(silent ? { onlyIfTrusted: true } : undefined);\n    }\n\n    this.#connected();\n\n    return { accounts: this.accounts };\n  };\n\n  #disconnect: StandardDisconnectMethod = async () => {\n    await this.#connection.disconnect();\n  };\n\n  #signAndSendTransaction: SolanaSignAndSendTransactionMethod = async (...inputs) => {\n    if (!this.#account) throw new Error('not connected');\n\n    const outputs: SolanaSignAndSendTransactionOutput[] = [];\n\n    if (inputs.length === 1) {\n      const { transaction, account, chain, options } = inputs[0]!;\n      const { minContextSlot, preflightCommitment, skipPreflight, maxRetries } = options || {};\n      if (account !== this.#account) throw new Error('invalid account');\n      if (!isSolanaChain(chain)) throw new Error('invalid chain');\n\n      const signature = await this.#connection.signAndSendTransaction(\n        this.#account.address,\n        getSolanaCaip2Id(chain),\n        base64.encode(transaction),\n        {\n          preflightCommitment,\n          minContextSlot,\n          maxRetries,\n          skipPreflight,\n        },\n      );\n\n      outputs.push({ signature: base58.decode(signature) });\n    } else if (inputs.length > 1) {\n      for (const input of inputs) {\n        outputs.push(...(await this.#signAndSendTransaction(input)));\n      }\n    }\n\n    return outputs;\n  };\n\n  #signTransaction: SolanaSignTransactionMethod = async (...inputs) => {\n    if (!this.#account) throw new Error('not connected');\n\n    const outputs: SolanaSignTransactionOutput[] = [];\n\n    if (inputs.length === 1) {\n      const { transaction, account, chain } = inputs[0]!;\n      if (account !== this.#account) throw new Error('invalid account');\n      if (chain && !isSolanaChain(chain)) throw new Error('invalid chain');\n\n      const signedTransaction = await this.#connection.signTransaction(\n        this.#account.address,\n        getSolanaCaip2Id(chain || SOLANA_CHAINS[0]),\n        base64.encode(transaction),\n      );\n\n      outputs.push({ signedTransaction: base64.decode(signedTransaction) });\n    } else if (inputs.length > 1) {\n      let chain: SolanaChain | undefined = undefined;\n      for (const input of inputs) {\n        if (input.account !== this.#account) throw new Error('invalid account');\n        if (input.chain) {\n          if (!isSolanaChain(input.chain)) throw new Error('invalid chain');\n          if (chain) {\n            if (input.chain !== chain) throw new Error('conflicting chain');\n          } else {\n            chain = input.chain;\n          }\n        }\n      }\n\n      const transactions = inputs.map(({ transaction }) => base64.encode(transaction));\n\n      const signedTransactions = await this.#connection.signAllTransactions(\n        this.#account.address,\n        getSolanaCaip2Id(chain || SOLANA_CHAINS[0]),\n        transactions,\n      );\n\n      outputs.push(\n        ...signedTransactions.map((signedTransaction) => ({\n          signedTransaction: base64.decode(signedTransaction),\n        })),\n      );\n    }\n\n    return outputs;\n  };\n\n  #signMessage: SolanaSignMessageMethod = async (...inputs) => {\n    if (!this.#account) throw new Error('not connected');\n\n    const outputs: SolanaSignMessageOutput[] = [];\n\n    if (inputs.length === 1) {\n      const { message, account } = inputs[0]!;\n      if (account !== this.#account) throw new Error('invalid account');\n      const serializedMessage = base64.encode(message);\n\n      const signature = await this.#connection.signMessage(account.address, serializedMessage);\n\n      outputs.push({ signedMessage: message, signature: base64.decode(signature) });\n    } else if (inputs.length > 1) {\n      for (const input of inputs) {\n        outputs.push(...(await this.#signMessage(input)));\n      }\n    }\n\n    return outputs;\n  };\n\n  // #signIn: SolanaSignInMethod = async (...inputs) => {\n  //   const outputs: SolanaSignInOutput[] = [];\n\n  //   if (inputs.length > 1) {\n  //     for (const input of inputs) {\n  //       outputs.push(await this.#connection.signIn(input));\n  //     }\n  //   } else {\n  //     return [await this.#connection.signIn(inputs[0])];\n  //   }\n\n  //   return outputs;\n  // };\n}\n","// This is based on from @wallet-standard/wallet\n\nimport {\n  SolanaSignAndSendTransaction,\n  SolanaSignMessage,\n  SolanaSignTransaction,\n} from '@solana/wallet-standard-features';\nimport type { WalletAccount } from '@wallet-standard/base';\nimport { SOLANA_CHAINS } from './solana';\n\nconst chains = SOLANA_CHAINS;\nconst features = [SolanaSignAndSendTransaction, SolanaSignTransaction, SolanaSignMessage] as const;\n\nexport class ConnectedWalletAccount implements WalletAccount {\n  readonly #address: WalletAccount['address'];\n  readonly #publicKey: WalletAccount['publicKey'];\n  readonly #chains: WalletAccount['chains'];\n  readonly #features: WalletAccount['features'];\n  readonly #label: WalletAccount['label'];\n  readonly #icon: WalletAccount['icon'];\n\n  get address() {\n    return this.#address;\n  }\n\n  get publicKey() {\n    return this.#publicKey.slice();\n  }\n\n  get chains() {\n    return this.#chains.slice();\n  }\n\n  get features() {\n    return this.#features.slice();\n  }\n\n  get label() {\n    return this.#label;\n  }\n\n  get icon() {\n    return this.#icon;\n  }\n\n  constructor({ address, publicKey, label, icon }: Omit<WalletAccount, 'chains' | 'features'>) {\n    if (new.target === ConnectedWalletAccount) {\n      Object.freeze(this);\n    }\n\n    this.#address = address;\n    this.#publicKey = publicKey;\n    this.#chains = chains;\n    this.#features = features;\n    this.#label = label;\n    this.#icon = icon;\n  }\n}\n","// This is based on @solana/wallet-standard-chains\n\nimport type { IdentifierString } from '@wallet-standard/base';\nimport type { Transaction, VersionedTransaction } from '@solana/web3.js';\nimport { SolanaCaip2ChainId } from '@avalabs/core-chains-sdk';\n\n/** Solana Mainnet (beta) cluster, e.g. https://api.mainnet-beta.solana.com */\nexport const SOLANA_MAINNET_CHAIN = 'solana:mainnet';\n\n/** Solana Devnet cluster, e.g. https://api.devnet.solana.com */\nexport const SOLANA_DEVNET_CHAIN = 'solana:devnet';\n\n/** Solana Testnet cluster, e.g. https://api.testnet.solana.com */\nexport const SOLANA_TESTNET_CHAIN = 'solana:testnet';\n\n/** Solana Localnet cluster, e.g. http://localhost:8899 */\n// export const SOLANA_LOCALNET_CHAIN = 'solana:localnet';\n\n/** Array of all Solana clusters */\nexport const SOLANA_CHAINS = [\n  SOLANA_MAINNET_CHAIN,\n  SOLANA_DEVNET_CHAIN,\n  SOLANA_TESTNET_CHAIN,\n  // SOLANA_LOCALNET_CHAIN,\n] as const;\n\n/** Type of all Solana clusters */\nexport type SolanaChain = (typeof SOLANA_CHAINS)[number];\n\nexport const SOLANA_CHAIN_TO_CAIP2_ID = {\n  [SOLANA_MAINNET_CHAIN]: SolanaCaip2ChainId.MAINNET,\n  [SOLANA_DEVNET_CHAIN]: SolanaCaip2ChainId.DEVNET,\n  [SOLANA_TESTNET_CHAIN]: SolanaCaip2ChainId.TESTNET,\n};\n\n/**\n * Check if a chain corresponds with one of the Solana clusters.\n */\nexport function isSolanaChain(chain: IdentifierString): chain is SolanaChain {\n  return SOLANA_CHAINS.includes(chain as SolanaChain);\n}\n\nexport function getSolanaCaip2Id(chain: SolanaChain): SolanaCaip2ChainId {\n  return SOLANA_CHAIN_TO_CAIP2_ID[chain];\n}\n\nexport function isVersionedTransaction(\n  transaction: Transaction | VersionedTransaction,\n): transaction is VersionedTransaction {\n  return 'version' in transaction;\n}\n","// This is copied from @wallet-standard/wallet\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n  return arraysEqual(a, b);\n}\n\ninterface Indexed<T> {\n  length: number;\n  [index: number]: T;\n}\n\nexport function arraysEqual<T>(a: Indexed<T>, b: Indexed<T>): boolean {\n  if (a === b) return true;\n\n  const length = a.length;\n  if (length !== b.length) return false;\n\n  for (let i = 0; i < length; i++) {\n    if (a[i] !== b[i]) return false;\n  }\n\n  return true;\n}\n","import { registerWallet } from './register';\nimport { StandardWallet } from './wallet';\nimport type { Connection } from './window';\n\nexport function initialize(connection: Connection): void {\n  registerWallet(new StandardWallet(connection));\n}\n"]}