{"version":3,"sources":["../src/index.ts","../src/wallet-adapter/dialect-solana-wallet-adapter-wrapper.ts","../src/wallet-adapter/node-dialect-solana-wallet-adapter.ts","../src/auth/ed25519/solana-ed25519-authentication-facade-factory.ts","../src/auth/ed25519/solana-ed25519-token-validator.ts","../src/sdk/constants.ts","../src/auth/ed25519/solana-ed25519-token-signer.ts","../src/auth/tx/solana-tx-authentication-facade-factory.ts","../src/auth/tx/solana-tx-token-body-parser.ts","../src/auth/tx/solana-tx-token-generator.ts","../src/auth/tx/solana-tx-token-validator.ts","../src/auth/tx/solana-tx-token-signer.ts","../src/sdk/sdk.ts","../src/encryption/encryption-keys-provider.ts","../src/auth/v2/sign-message/solana-sign-message-v2-authentication-facade-factory.ts","../src/auth/v2/sign-message/solana-sign-message-v2-token-generator.ts","../src/auth/v2/solana-v2-token-validator.ts","../src/auth/v2/sign-tx/solana-sign-tx-v2-authentication-facade-factory.ts","../src/auth/v2/sign-tx/solana-sign-tx-v2-token-generator.ts","../src/auth/v2/sign-tx/solana-tx-signer.ts"],"sourcesContent":["export * from './wallet-adapter/dialect-solana-wallet-adapter.interface';\nexport * from './wallet-adapter/dialect-solana-wallet-adapter-wrapper';\nexport * from './wallet-adapter/node-dialect-solana-wallet-adapter';\nexport * from './auth/ed25519/solana-ed25519-authentication-facade-factory';\nexport * from './auth/ed25519/solana-ed25519-token-signer';\nexport * from './auth/tx/solana-tx-authentication-facade-factory';\nexport * from './sdk/sdk';\nexport * from './sdk/constants';\n","import type {\n  PublicKey,\n  Transaction,\n  VersionedTransaction,\n} from '@solana/web3.js';\nimport type { DialectSolanaWalletAdapter } from './dialect-solana-wallet-adapter.interface';\nimport { UnsupportedOperationError } from '@dialectlabs/sdk';\n\nexport class DialectSolanaWalletAdapterWrapper\n  implements DialectSolanaWalletAdapter\n{\n  constructor(private readonly delegate: DialectSolanaWalletAdapter) {}\n\n  get publicKey(): PublicKey {\n    if (!this.delegate.publicKey) {\n      throw new UnsupportedOperationError(\n        'Public key not available',\n        'Wallet does not have public key, please provide a valid public key.',\n      );\n    }\n    return this.delegate.publicKey;\n  }\n\n  get canEncrypt(): boolean {\n    return Boolean(this.publicKey && this.delegate.diffieHellman);\n  }\n\n  static create(\n    adapter: DialectSolanaWalletAdapter,\n  ): DialectSolanaWalletAdapterWrapper {\n    return new DialectSolanaWalletAdapterWrapper(adapter);\n  }\n\n  signTransaction<T extends Transaction | VersionedTransaction>(\n    transaction: T,\n  ): Promise<T> {\n    if (!this.delegate.signTransaction) {\n      throw new UnsupportedOperationError(\n        'Signing not supported',\n        'Wallet does not support signing, please use wallet-adapter that supports signTransaction() operation.',\n      );\n    }\n    return this.delegate.signTransaction(transaction);\n  }\n\n  signAllTransactions<T extends Transaction | VersionedTransaction>(\n    transactions: T[],\n  ): Promise<T[]> {\n    if (!this.delegate.signAllTransactions) {\n      throw new UnsupportedOperationError(\n        'Signing not supported',\n        'Wallet does not support signing, please use wallet-adapter that supports signAllTransactions() operation.',\n      );\n    }\n    return this.delegate.signAllTransactions(transactions);\n  }\n\n  signMessage(message: Uint8Array): Promise<Uint8Array> {\n    if (!this.delegate.signMessage) {\n      throw new UnsupportedOperationError(\n        'Message signing not supported',\n        'Wallet does not support message signing, please use wallet-adapter that supports signMessage() operation.',\n      );\n    }\n    return this.delegate.signMessage(message);\n  }\n\n  diffieHellman(): Promise<{ publicKey: Uint8Array; secretKey: Uint8Array }> {\n    if (!this.delegate.diffieHellman) {\n      throw new UnsupportedOperationError(\n        'Encryption not supported',\n        'Wallet does not support encryption, please use wallet-adapter that supports diffieHellman() operation.',\n      );\n    }\n    return this.delegate.diffieHellman(this.publicKey.toBytes());\n  }\n\n  canSignMessage(): boolean {\n    return Boolean(this.delegate.signMessage);\n  }\n\n  canSignTransaction(): boolean {\n    return Boolean(this.delegate.signTransaction);\n  }\n}\n","import {\n  Keypair,\n  PublicKey,\n  Signer,\n  Transaction,\n  VersionedTransaction,\n} from '@solana/web3.js';\nimport type { DialectSolanaWalletAdapter } from './dialect-solana-wallet-adapter.interface';\nimport nacl from 'tweetnacl';\nimport ed2curve from 'ed2curve';\n\nexport class NodeDialectSolanaWalletAdapter\n  implements DialectSolanaWalletAdapter\n{\n  constructor(private readonly keypair: Keypair) {}\n\n  get publicKey(): PublicKey {\n    return this.keypair.publicKey;\n  }\n\n  static create(keypair?: Keypair) {\n    if (keypair) {\n      console.log(\n        `Initializing ${\n          NodeDialectSolanaWalletAdapter.name\n        } using provided ${keypair.publicKey.toBase58()} key.`,\n      );\n      return new NodeDialectSolanaWalletAdapter(keypair);\n    } else if (process.env.DIALECT_SDK_CREDENTIALS) {\n      const privateKey = process.env.DIALECT_SDK_CREDENTIALS;\n      const keypair: Keypair = Keypair.fromSecretKey(\n        new Uint8Array(JSON.parse(privateKey as string)),\n      );\n      console.log(\n        `Initializing ${\n          NodeDialectSolanaWalletAdapter.name\n        } using env-provided ${keypair.publicKey.toBase58()} key.`,\n      );\n      return new NodeDialectSolanaWalletAdapter(keypair);\n    } else {\n      throw new Error(\n        `Error initializing ${NodeDialectSolanaWalletAdapter.name}: SDK credential must be provided.`,\n      );\n    }\n  }\n\n  async signTransaction<T extends Transaction | VersionedTransaction>(\n    transaction: T,\n  ): Promise<T> {\n    if (transaction instanceof VersionedTransaction) {\n      const signer: Signer = {\n        publicKey: this.keypair.publicKey,\n        secretKey: this.keypair.secretKey,\n      };\n      const signers: Signer[] = [signer];\n      transaction.sign(signers);\n    } else {\n      transaction.partialSign(this.keypair);\n    }\n    return transaction;\n  }\n\n  async signAllTransactions<T extends Transaction | VersionedTransaction>(\n    transactions: T[],\n  ): Promise<T[]> {\n    return Promise.all(transactions.map((tx) => this.signTransaction(tx)));\n  }\n\n  signMessage(message: Uint8Array): Promise<Uint8Array> {\n    return Promise.resolve(nacl.sign.detached(message, this.keypair.secretKey));\n  }\n\n  diffieHellman(\n    publicKey: Uint8Array,\n  ): Promise<{ publicKey: Uint8Array; secretKey: Uint8Array }> {\n    const keypair = ed2curve.convertKeyPair({\n      secretKey: this.keypair.secretKey,\n      publicKey,\n    });\n    if (!keypair) {\n      throw new Error('Failed to convert keypair');\n    }\n    return Promise.resolve(keypair);\n  }\n}\n","import {\n  AuthenticationFacade,\n  AuthenticationFacadeFactory,\n  Authenticator,\n  DefaultTokenGenerator,\n  Ed25519TokenBodyParser,\n  TokenParser,\n} from '@dialectlabs/sdk';\nimport { SolanaEd25519TokenValidator } from './solana-ed25519-token-validator';\nimport type { SolanaEd25519TokenSigner } from './solana-ed25519-token-signer';\n\nexport class SolanaEd25519AuthenticationFacadeFactory extends AuthenticationFacadeFactory {\n  constructor(private readonly tokenSigner: SolanaEd25519TokenSigner) {\n    super();\n  }\n\n  static createAuthenticator(): Authenticator {\n    return new Authenticator(\n      new TokenParser(new Ed25519TokenBodyParser()),\n      new SolanaEd25519TokenValidator(),\n    );\n  }\n\n  get(): AuthenticationFacade {\n    return new AuthenticationFacade(\n      this.tokenSigner,\n      new DefaultTokenGenerator(this.tokenSigner),\n      SolanaEd25519AuthenticationFacadeFactory.createAuthenticator(),\n    );\n  }\n}\n","import type { Token, TokenHeader } from '@dialectlabs/sdk';\nimport { Ed25519PublicKey, TokenValidator } from '@dialectlabs/sdk';\nimport nacl from 'tweetnacl';\nimport {\n  SOLANA_ED25519_TOKEN_SIGNER_ALG,\n  SOLANA_ED25519_TOKEN_SIGNER_ALG_BACKWARD_COMPATIBLE,\n} from './solana-ed25519-token-signer';\n\nexport class SolanaEd25519TokenValidator extends TokenValidator {\n  canValidate(tokenHeader: TokenHeader): boolean {\n    return (\n      tokenHeader.alg === SOLANA_ED25519_TOKEN_SIGNER_ALG ||\n      tokenHeader.alg === SOLANA_ED25519_TOKEN_SIGNER_ALG_BACKWARD_COMPATIBLE\n    );\n  }\n\n  async isSignatureValid(token: Token): Promise<boolean> {\n    const signedPayload = token.base64Header + '.' + token.base64Body;\n    const signingPayload = new TextEncoder().encode(signedPayload);\n    return nacl.sign.detached.verify(\n      signingPayload,\n      token.signature,\n      new Ed25519PublicKey(token.body.sub_jwk ?? token.body.sub).toBytes(),\n    );\n  }\n\n  protected override performExtraValidation(token: Token): boolean {\n    if (!token.body.sub_jwk) {\n      return true;\n    }\n    return token.body.sub === token.body.sub_jwk;\n  }\n}\n","export const DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA = 'solana';\n","import type { DialectSolanaWalletAdapterWrapper } from '../../wallet-adapter/dialect-solana-wallet-adapter-wrapper';\nimport type {\n  AccountAddress,\n  PublicKey,\n  TokenSigner,\n  TokenSignerResult,\n} from '@dialectlabs/sdk';\nimport { DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA } from '../../sdk/constants';\n\nexport const SOLANA_ED25519_TOKEN_SIGNER_ALG = `${DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA}-ed25519`;\nexport const SOLANA_ED25519_TOKEN_SIGNER_ALG_BACKWARD_COMPATIBLE = 'ed25519';\n\nexport abstract class SolanaEd25519TokenSigner implements TokenSigner {\n  readonly alg = SOLANA_ED25519_TOKEN_SIGNER_ALG;\n\n  abstract subject: AccountAddress;\n  abstract subjectPublicKey: PublicKey;\n\n  abstract sign(payload: Uint8Array): Promise<TokenSignerResult>;\n}\n\nexport class DialectWalletAdapterSolanaEd25519TokenSigner extends SolanaEd25519TokenSigner {\n  constructor(\n    readonly dialectWalletAdapter: DialectSolanaWalletAdapterWrapper,\n  ) {\n    super();\n  }\n\n  get subject(): AccountAddress {\n    return this.dialectWalletAdapter.publicKey.toBase58();\n  }\n\n  get subjectPublicKey(): PublicKey {\n    return this.dialectWalletAdapter.publicKey;\n  }\n\n  async sign(payload: Uint8Array): Promise<TokenSignerResult> {\n    return {\n      payload,\n      signature: await this.dialectWalletAdapter.signMessage(payload),\n    };\n  }\n}\n","import {\n  AuthenticationFacade,\n  AuthenticationFacadeFactory,\n  Authenticator,\n  TokenParser,\n} from '@dialectlabs/sdk';\nimport { SolanaTxTokenBodyParser } from './solana-tx-token-body-parser';\nimport type { SolanaTxTokenSigner } from './solana-tx-token-signer';\nimport { SolanaTxTokenGenerator } from './solana-tx-token-generator';\nimport { SolanaTxTokenValidator } from './solana-tx-token-validator';\n\nexport class SolanaTxAuthenticationFacadeFactory extends AuthenticationFacadeFactory {\n  constructor(private readonly tokenSigner: SolanaTxTokenSigner) {\n    super();\n  }\n\n  static createAuthenticator(): Authenticator {\n    return new Authenticator(\n      new TokenParser(new SolanaTxTokenBodyParser()),\n      new SolanaTxTokenValidator(),\n    );\n  }\n\n  get(): AuthenticationFacade {\n    return new AuthenticationFacade(\n      this.tokenSigner,\n      new SolanaTxTokenGenerator(this.tokenSigner),\n      SolanaTxAuthenticationFacadeFactory.createAuthenticator(),\n    );\n  }\n}\n","import type { TokenBody } from '@dialectlabs/sdk';\nimport {\n  bytesFromBase64,\n  jsonParseFromBase64,\n  TokenBodyParser,\n  TokenStructureValidationError,\n} from '@dialectlabs/sdk';\nimport { Transaction } from '@solana/web3.js';\n\nexport class SolanaTxTokenBodyParser extends TokenBodyParser {\n  parse(base64Body: string): TokenBody {\n    const byteBody = bytesFromBase64(base64Body);\n    const tx = Transaction.from(byteBody);\n    const dataInstruction = tx.instructions.filter(\n      (it) => it.programId === tx.feePayer,\n    )[0];\n    if (!dataInstruction) {\n      throw new TokenStructureValidationError();\n    }\n    const [headerBase64, bodyBase64] = dataInstruction.data\n      .toString()\n      .split('.');\n\n    if (!headerBase64 || !bodyBase64) {\n      throw new TokenStructureValidationError();\n    }\n\n    return jsonParseFromBase64(bodyBase64);\n  }\n}\n","import type { Token } from '@dialectlabs/sdk';\nimport {\n  bytesToBase64,\n  jsonStringifyToBase64,\n  TokenGenerator,\n} from '@dialectlabs/sdk';\n\nexport class SolanaTxTokenGenerator extends TokenGenerator {\n  override async generate(ttlSeconds: number): Promise<Token> {\n    const header = this.header();\n    const base64Header = jsonStringifyToBase64(header);\n\n    const body = this.body(ttlSeconds);\n    const base64Body = jsonStringifyToBase64(body);\n\n    const { signature, base64Signature, signedPayload } = await this.sign(\n      base64Header,\n      base64Body,\n      this.signer,\n    );\n\n    const base64SignedBody = bytesToBase64(signedPayload);\n\n    const rawValue = `${base64Header}.${base64SignedBody}.${base64Signature}`;\n    return {\n      rawValue,\n      body,\n      header,\n      signature,\n      base64Signature,\n      base64Body: base64SignedBody,\n      base64Header,\n    };\n  }\n}\n","import { decodeURLSafe } from '@stablelib/base64';\nimport { PublicKey, Transaction } from '@solana/web3.js';\nimport type { Token, TokenHeader } from '@dialectlabs/sdk';\nimport { TokenValidator } from '@dialectlabs/sdk';\nimport { SOLANA_TX_TOKEN_SIGNER_ALG } from './solana-tx-token-signer';\n\nexport class SolanaTxTokenValidator extends TokenValidator {\n  canValidate(tokenHeader: TokenHeader): boolean {\n    return tokenHeader.alg === SOLANA_TX_TOKEN_SIGNER_ALG;\n  }\n\n  async isSignatureValid(token: Token): Promise<boolean> {\n    const byteBody = decodeURLSafe(token.base64Body);\n    const tx = Transaction.from(byteBody);\n    tx.recentBlockhash = PublicKey.default.toString();\n    return tx.verifySignatures();\n  }\n\n  override performExtraValidation(token: Token): boolean {\n    if (!token.body.sub_jwk) {\n      return true;\n    }\n    return token.body.sub === token.body.sub_jwk;\n  }\n}\n","import {\n  PublicKey as SolanaPublicKey,\n  Transaction,\n  TransactionInstruction,\n} from '@solana/web3.js';\nimport type { DialectSolanaWalletAdapterWrapper } from '../../wallet-adapter/dialect-solana-wallet-adapter-wrapper';\nimport type {\n  AccountAddress,\n  PublicKey,\n  TokenSigner,\n  TokenSignerResult,\n} from '@dialectlabs/sdk';\nimport { DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA } from '../../sdk/constants';\n\nexport const SOLANA_TX_TOKEN_SIGNER_ALG = `${DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA}-tx`;\n\nexport abstract class SolanaTxTokenSigner implements TokenSigner {\n  readonly alg = SOLANA_TX_TOKEN_SIGNER_ALG;\n\n  abstract subject: AccountAddress;\n  abstract subjectPublicKey: PublicKey;\n\n  abstract sign(payload: Uint8Array): Promise<TokenSignerResult>;\n}\n\nexport class DialectWalletAdapterSolanaTxTokenSigner extends SolanaTxTokenSigner {\n  constructor(\n    readonly dialectWalletAdapter: DialectSolanaWalletAdapterWrapper,\n  ) {\n    super();\n  }\n\n  get subject(): AccountAddress {\n    return this.dialectWalletAdapter.publicKey.toBase58();\n  }\n\n  get subjectPublicKey(): PublicKey {\n    return this.dialectWalletAdapter.publicKey;\n  }\n\n  async sign(payload: Uint8Array): Promise<TokenSignerResult> {\n    const tx = new Transaction();\n    const subjectPublicKey = new SolanaPublicKey(this.subject);\n    tx.add(\n      new TransactionInstruction({\n        keys: [\n          {\n            pubkey: subjectPublicKey,\n            isSigner: false,\n            isWritable: false,\n          },\n        ],\n        programId: subjectPublicKey,\n        data: Buffer.from(payload),\n      }),\n    );\n    tx.recentBlockhash = SolanaPublicKey.default.toString();\n    tx.feePayer = subjectPublicKey;\n    const signedTx = await this.dialectWalletAdapter.signTransaction(tx);\n    return {\n      payload: signedTx.serialize(),\n      signature: signedTx.signature!,\n    };\n  }\n}\n","import { DialectSolanaWalletAdapterWrapper } from '../wallet-adapter/dialect-solana-wallet-adapter-wrapper';\nimport {\n  AuthV2Api,\n  BlockchainSdk,\n  BlockchainSdkFactory,\n  Config,\n  EncryptionKeysProvider,\n  Environment,\n  IllegalArgumentError,\n} from '@dialectlabs/sdk';\nimport type { DialectSolanaWalletAdapter } from '../wallet-adapter/dialect-solana-wallet-adapter.interface';\nimport { DialectSolanaWalletAdapterEncryptionKeysProvider } from '../encryption/encryption-keys-provider';\nimport { SolanaEd25519AuthenticationFacadeFactory } from '../auth/ed25519/solana-ed25519-authentication-facade-factory';\nimport { DialectWalletAdapterSolanaEd25519TokenSigner } from '../auth/ed25519/solana-ed25519-token-signer';\nimport { SolanaTxAuthenticationFacadeFactory } from '../auth/tx/solana-tx-authentication-facade-factory';\nimport { DialectWalletAdapterSolanaTxTokenSigner } from '../auth/tx/solana-tx-token-signer';\nimport { SolanaSignMessageV2AuthenticationFacadeFactory } from '../auth/v2/sign-message/solana-sign-message-v2-authentication-facade-factory';\nimport { DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA } from './constants';\nimport { SolanaSignTxV2AuthenticationFacadeFactory } from '../auth/v2/sign-tx/solana-sign-tx-v2-authentication-facade-factory';\nimport { DialectWalletAdapterSolanaTxSigner } from '../auth/v2/sign-tx/solana-tx-signer';\n\nexport interface SolanaConfigProps {\n  wallet: DialectSolanaWalletAdapter;\n}\n\nexport interface SolanaConfig extends SolanaConfigProps {\n  wallet: DialectSolanaWalletAdapterWrapper;\n}\n\nexport type SolanaNetwork = 'mainnet-beta' | 'devnet' | 'localnet';\n\nexport interface Solana extends BlockchainSdk {\n  readonly config: SolanaConfig;\n}\n\nexport class SolanaSdkFactory implements BlockchainSdkFactory<Solana> {\n  private constructor(readonly solanaConfigProps: SolanaConfigProps) {}\n\n  static create(props: SolanaConfigProps) {\n    return new SolanaSdkFactory(props);\n  }\n\n  private static logConfiguration(\n    config: SolanaConfig,\n    environment: Environment,\n  ) {\n    if (environment !== 'production') {\n      console.log(\n        `Initializing Dialect Solana SDK using configuration:\nSolana settings:\n  Wallet public key: ${config.wallet.publicKey}\n  Wallet supports encryption: ${config.wallet.canEncrypt}\n  Wallet supports authentication: ${\n    config.wallet.canSignMessage() || config.wallet.canSignTransaction()\n  }\n`,\n      );\n    }\n  }\n\n  create(config: Config): Solana {\n    const solanaConfig = this.initializeSolanaConfig();\n    const wallet = solanaConfig.wallet;\n    SolanaSdkFactory.logConfiguration(solanaConfig, config.environment);\n    const walletAdapterEncryptionKeysProvider =\n      new DialectSolanaWalletAdapterEncryptionKeysProvider(wallet);\n    const encryptionKeysProvider = EncryptionKeysProvider.create(\n      walletAdapterEncryptionKeysProvider,\n      config.encryptionKeysStore,\n    );\n\n    const authenticationFacadeFactory = this.createAuthenticationFacadeFactory(\n      solanaConfig,\n      config,\n    );\n    const authenticationFacade = authenticationFacadeFactory.get();\n\n    return {\n      type: DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA,\n      encryptionKeysProvider,\n      authenticationFacade,\n      config: solanaConfig,\n      info: {\n        supportsOnChainMessaging: false,\n      },\n    };\n  }\n\n  createAuthenticationFacadeFactory(\n    solanaConfig: SolanaConfig,\n    config: Config,\n  ) {\n    if (config.dialectCloud.apiVersion === 1) {\n      if (solanaConfig.wallet.canSignMessage()) {\n        return new SolanaEd25519AuthenticationFacadeFactory(\n          new DialectWalletAdapterSolanaEd25519TokenSigner(solanaConfig.wallet),\n        );\n      }\n      if (solanaConfig.wallet.canSignTransaction()) {\n        return new SolanaTxAuthenticationFacadeFactory(\n          new DialectWalletAdapterSolanaTxTokenSigner(solanaConfig.wallet),\n        );\n      }\n    }\n    if (\n      config.dialectCloud.apiVersion === 2 ||\n      config.dialectCloud.apiVersion === '2_compat'\n    ) {\n      const v2AuthApi = new AuthV2Api(config.dialectCloud.v2Url);\n      if (solanaConfig.wallet.canSignMessage()) {\n        return new SolanaSignMessageV2AuthenticationFacadeFactory(\n          new DialectWalletAdapterSolanaEd25519TokenSigner(solanaConfig.wallet),\n          v2AuthApi,\n        );\n      }\n      if (solanaConfig.wallet.canSignTransaction()) {\n        return new SolanaSignTxV2AuthenticationFacadeFactory(\n          new DialectWalletAdapterSolanaTxSigner(solanaConfig.wallet),\n          v2AuthApi,\n        );\n      }\n    }\n    throw new IllegalArgumentError(\n      `Unable to create authentication facade, ${config.dialectCloud.apiVersion} is not supported`,\n    );\n  }\n\n  private initializeSolanaConfig(): SolanaConfig {\n    const wallet = new DialectSolanaWalletAdapterWrapper(\n      this.solanaConfigProps.wallet,\n    );\n    return {\n      wallet,\n    };\n  }\n}\n","import type { DiffeHellmanKeys } from '@dialectlabs/sdk';\nimport { EncryptionKeysProvider } from '@dialectlabs/sdk';\nimport type { DialectSolanaWalletAdapterWrapper } from '../wallet-adapter/dialect-solana-wallet-adapter-wrapper';\n\nexport class DialectSolanaWalletAdapterEncryptionKeysProvider extends EncryptionKeysProvider {\n  constructor(\n    private readonly dialectWalletAdapter: DialectSolanaWalletAdapterWrapper,\n  ) {\n    super();\n  }\n\n  isAvailable(): boolean {\n    return this.dialectWalletAdapter.canEncrypt;\n  }\n\n  getFailSafe(): Promise<DiffeHellmanKeys | null> {\n    return this.dialectWalletAdapter.canEncrypt\n      ? this.dialectWalletAdapter.diffieHellman()\n      : Promise.resolve(null);\n  }\n\n  getFailFast(): Promise<DiffeHellmanKeys> {\n    return this.dialectWalletAdapter.diffieHellman();\n  }\n}\n","import {\n  AuthenticationFacade,\n  AuthenticationFacadeFactory,\n  Authenticator,\n  AuthV2Api,\n  Ed25519TokenBodyParser,\n  TokenParser,\n  TokenSigner,\n} from '@dialectlabs/sdk';\n\nimport { SolanaSignMessageV2TokenGenerator } from './solana-sign-message-v2-token-generator';\nimport { SolanaV2TokenValidator } from '../solana-v2-token-validator';\n\nexport class SolanaSignMessageV2AuthenticationFacadeFactory extends AuthenticationFacadeFactory {\n  constructor(\n    private readonly tokenSigner: TokenSigner,\n    private readonly api: AuthV2Api,\n  ) {\n    super();\n  }\n\n  static createAuthenticator(api: AuthV2Api): Authenticator {\n    return new Authenticator(\n      new TokenParser(new Ed25519TokenBodyParser()),\n      new SolanaV2TokenValidator(api),\n    );\n  }\n\n  get(): AuthenticationFacade {\n    return new AuthenticationFacade(\n      this.tokenSigner,\n      new SolanaSignMessageV2TokenGenerator(this.tokenSigner, this.api),\n      SolanaSignMessageV2AuthenticationFacadeFactory.createAuthenticator(\n        this.api,\n      ),\n    );\n  }\n}\n","import {\n  type AuthV2Api,\n  bytesFromBase64,\n  jsonParseFromBase64,\n  type Token,\n  TokenGenerator,\n  type TokenSigner,\n  withApiErrorParsing,\n} from '@dialectlabs/sdk';\nimport bs58 from 'bs58';\nimport { v2tokenValidationCache } from '../solana-v2-token-validator';\n\nexport class SolanaSignMessageV2TokenGenerator extends TokenGenerator {\n  constructor(signer: TokenSigner, private readonly api: AuthV2Api) {\n    super(signer);\n  }\n\n  override async generate(): Promise<Token> {\n    const prepareResponse = await withApiErrorParsing(\n      this.api.prepareSolanaAuth(this.signer.subject),\n    );\n\n    const messageToSign = prepareResponse.message;\n\n    const { signature } = await this.signer.sign(\n      new TextEncoder().encode(messageToSign),\n    );\n\n    const tokenResponse = await withApiErrorParsing(\n      this.api.verifySolanaAuth(messageToSign, bs58.encode(signature)),\n    );\n\n    const tokenStr = tokenResponse.token;\n\n    const [base64Header, base64Body, base64Signature] = tokenStr.split('.');\n    if (!base64Header || !base64Body || !base64Signature) {\n      throw new Error('Invalid token format from backend');\n    }\n\n    v2tokenValidationCache[tokenStr] = {\n      lastValidatedAt: new Date(),\n      isValid: true,\n    };\n\n    return {\n      rawValue: tokenStr,\n      header: jsonParseFromBase64(base64Header),\n      body: jsonParseFromBase64(base64Body),\n      signature: bytesFromBase64(base64Signature),\n      base64Header,\n      base64Body,\n      base64Signature,\n    };\n  }\n}\n","import type { AuthV2Api, Token, TokenHeader } from '@dialectlabs/sdk';\nimport {\n  AuthenticationError,\n  TokenValidator,\n  withApiErrorParsing,\n} from '@dialectlabs/sdk';\n\nexport const v2tokenValidationCache: Record<\n  string,\n  {\n    lastValidatedAt: Date;\n    isValid: boolean;\n  }\n> = {};\n\nconst VALIDATION_CACHE_TTL = 1000 * 60 * 5; // 5 minutes\n\nconst validationPromises: Record<string, Promise<void>> = {};\n\nexport class SolanaV2TokenValidator extends TokenValidator {\n  constructor(private readonly api: AuthV2Api) {\n    super();\n  }\n\n  override canValidate(tokenHeader: TokenHeader): boolean {\n    return tokenHeader.typ === 'JWT' && tokenHeader.alg === 'HS256';\n  }\n\n  override async isSignatureValid(token: Token): Promise<boolean> {\n    const cachedValidation = v2tokenValidationCache[token.rawValue];\n    const shouldRevalidate =\n      !cachedValidation ||\n      !cachedValidation.isValid ||\n      cachedValidation.lastValidatedAt.getTime() + VALIDATION_CACHE_TTL <\n        Date.now();\n\n    if (shouldRevalidate) {\n      await this.validateAndCache(token);\n    }\n\n    const finalValidation = v2tokenValidationCache[token.rawValue];\n    return finalValidation ? finalValidation.isValid : false;\n  }\n\n  private async validateAndCache(token: Token): Promise<void> {\n    if (validationPromises[token.rawValue]) {\n      return validationPromises[token.rawValue];\n    }\n\n    const now = new Date();\n\n    validationPromises[token.rawValue] = new Promise(async (resolve) => {\n      try {\n        await withApiErrorParsing(this.api.getAuth(token.rawValue));\n        v2tokenValidationCache[token.rawValue] = {\n          lastValidatedAt: now,\n          isValid: true,\n        };\n        resolve();\n      } catch (e) {\n        if (e instanceof AuthenticationError) {\n          v2tokenValidationCache[token.rawValue] = {\n            lastValidatedAt: now,\n            isValid: false,\n          };\n        } else {\n          console.error(`Failed to validate token: ${JSON.stringify(e)}`);\n        }\n        resolve();\n      } finally {\n        delete validationPromises[token.rawValue];\n      }\n    });\n\n    return validationPromises[token.rawValue];\n  }\n}\n","import {\n  AuthV2Api,\n  AuthenticationFacade,\n  AuthenticationFacadeFactory,\n  Authenticator,\n  Ed25519TokenBodyParser,\n  TokenParser,\n} from '@dialectlabs/sdk';\n\nimport { SolanaSignTxV2TokenGenerator } from './solana-sign-tx-v2-token-generator';\nimport { SolanaV2TokenValidator } from '../solana-v2-token-validator';\nimport type { SolanaEd25519TokenSigner } from '../../ed25519/solana-ed25519-token-signer';\n\nexport class SolanaSignTxV2AuthenticationFacadeFactory extends AuthenticationFacadeFactory {\n  constructor(\n    private readonly tokenSigner: SolanaEd25519TokenSigner,\n    private readonly api: AuthV2Api,\n  ) {\n    super();\n  }\n\n  static createAuthenticator(api: AuthV2Api): Authenticator {\n    return new Authenticator(\n      new TokenParser(new Ed25519TokenBodyParser()),\n      new SolanaV2TokenValidator(api),\n    );\n  }\n\n  get(): AuthenticationFacade {\n    return new AuthenticationFacade(\n      this.tokenSigner,\n      new SolanaSignTxV2TokenGenerator(this.tokenSigner, this.api),\n      SolanaSignTxV2AuthenticationFacadeFactory.createAuthenticator(this.api),\n    );\n  }\n}\n","import {\n  type AuthV2Api,\n  bytesFromBase64,\n  jsonParseFromBase64,\n  type Token,\n  TokenGenerator,\n  type TokenSigner,\n  withApiErrorParsing,\n} from '@dialectlabs/sdk';\nimport { v2tokenValidationCache } from '../solana-v2-token-validator';\n\nexport class SolanaSignTxV2TokenGenerator extends TokenGenerator {\n  constructor(signer: TokenSigner, private readonly api: AuthV2Api) {\n    super(signer);\n  }\n\n  override async generate(): Promise<Token> {\n    const prepareResponse = await withApiErrorParsing(\n      this.api.prepareSolanaTxAuth(this.signer.subject),\n    );\n\n    const transactionBase64 = prepareResponse.transaction;\n\n    const { signature } = await this.signer.sign(\n      Buffer.from(transactionBase64, 'base64'),\n    );\n\n    const tokenResponse = await withApiErrorParsing(\n      this.api.verifySolanaTxAuth(Buffer.from(signature).toString('base64')),\n    );\n\n    const tokenStr = tokenResponse.token;\n\n    const [base64Header, base64Body, base64Signature] = tokenStr.split('.');\n    if (!base64Header || !base64Body || !base64Signature) {\n      throw new Error('Invalid token format from backend');\n    }\n\n    v2tokenValidationCache[tokenStr] = {\n      lastValidatedAt: new Date(),\n      isValid: true,\n    };\n\n    return {\n      rawValue: tokenStr,\n      header: jsonParseFromBase64(base64Header),\n      body: jsonParseFromBase64(base64Body),\n      signature: bytesFromBase64(base64Signature),\n      base64Header,\n      base64Body,\n      base64Signature,\n    };\n  }\n}\n","import type { DialectSolanaWalletAdapterWrapper } from '../../../wallet-adapter/dialect-solana-wallet-adapter-wrapper';\nimport type {\n  AccountAddress,\n  PublicKey,\n  TokenSigner,\n  TokenSignerResult,\n} from '@dialectlabs/sdk';\nimport { DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA } from '../../../sdk/constants';\nimport { VersionedTransaction } from '@solana/web3.js';\n\nexport const SOLANA_TX_TOKEN_SIGNER_ALG = `${DIALECT_BLOCKCHAIN_SDK_TYPE_SOLANA}-v2-tx`;\n\nexport abstract class SolanaTxSigner implements TokenSigner {\n  readonly alg = SOLANA_TX_TOKEN_SIGNER_ALG;\n\n  abstract subject: AccountAddress;\n  abstract subjectPublicKey: PublicKey;\n\n  abstract sign(payload: Uint8Array): Promise<TokenSignerResult>;\n}\n\nexport class DialectWalletAdapterSolanaTxSigner extends SolanaTxSigner {\n  constructor(\n    readonly dialectWalletAdapter: DialectSolanaWalletAdapterWrapper,\n  ) {\n    super();\n  }\n\n  get subject(): AccountAddress {\n    return this.dialectWalletAdapter.publicKey.toBase58();\n  }\n\n  get subjectPublicKey(): PublicKey {\n    return this.dialectWalletAdapter.publicKey;\n  }\n\n  async sign(payload: Uint8Array): Promise<TokenSignerResult> {\n    const tx = VersionedTransaction.deserialize(payload);\n    const signedTx = await this.dialectWalletAdapter.signTransaction(tx);\n\n    return {\n      payload,\n      signature: signedTx.serialize(),\n    };\n  }\n}\n"],"mappings":"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","names":["keypair","nacl","ed2curve","import_sdk","import_sdk","import_tweetnacl","nacl","import_sdk","import_sdk","import_web3","import_sdk","import_web3","import_sdk","import_web3","SolanaPublicKey","import_sdk","import_sdk","import_sdk","import_sdk","import_sdk","bs58","import_sdk","import_sdk","import_web3","SOLANA_TX_TOKEN_SIGNER_ALG"]}