@xchainjs/xchain-solana 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.esm.js CHANGED
@@ -24,6 +24,8 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
24
24
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
25
25
  PERFORMANCE OF THIS SOFTWARE.
26
26
  ***************************************************************************** */
27
+ /* global Reflect, Promise, SuppressedError, Symbol */
28
+
27
29
 
28
30
  function __awaiter(thisArg, _arguments, P, generator) {
29
31
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -33,7 +35,12 @@ function __awaiter(thisArg, _arguments, P, generator) {
33
35
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
36
  step((generator = generator.apply(thisArg, _arguments || [])).next());
35
37
  });
36
- }
38
+ }
39
+
40
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
41
+ var e = new Error(message);
42
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
43
+ };
37
44
 
38
45
  /**
39
46
  * Solana chain symbol
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/const.ts","../src/utils.ts","../src/client.ts"],"sourcesContent":["import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AssetType } from '@xchainjs/xchain-util'\n\nimport { SOLClientParams } from './types'\n\n/**\n * Solana chain symbol\n */\nexport const SOLChain = 'SOL' as const\n\n/**\n * Solana native asset decimals\n */\nexport const SOL_DECIMALS = 9\n\n/**\n * Solana native asset\n */\nexport const SOLAsset: Asset = {\n chain: 'SOL',\n ticker: 'SOL',\n symbol: 'SOL',\n type: AssetType.NATIVE,\n}\n\nconst mainnetExplorer = new ExplorerProvider(\n 'https://explorer.solana.com/',\n 'https://explorer.solana.com/address/%%ADDRESS%%',\n 'https://explorer.solana.com/tx/%%TX_ID%%',\n)\n\nexport const defaultSolanaParams: SOLClientParams = {\n network: Network.Mainnet,\n rootDerivationPaths: {\n [Network.Mainnet]: \"m/44'/501'/\",\n [Network.Testnet]: \"m/44'/501'/\",\n [Network.Stagenet]: \"m/44'/501'/\",\n },\n explorerProviders: {\n [Network.Mainnet]: mainnetExplorer,\n [Network.Testnet]: new ExplorerProvider(\n 'https://explorer.solana.com/?cluster=testnet',\n 'https://explorer.solana.com/address/%%ADDRESS%%?cluster=testnet',\n 'https://explorer.solana.com/tx/%%TX_ID%%?cluster=testnet',\n ),\n [Network.Stagenet]: mainnetExplorer,\n },\n}\n","import { Cluster } from '@solana/web3.js'\nimport { Network } from '@xchainjs/xchain-client'\n\nexport const getSolanaNetwork = (network: Network): Cluster => {\n const networkMap: { [key in Network]: Cluster } = {\n [Network.Mainnet]: 'mainnet-beta',\n [Network.Stagenet]: 'mainnet-beta',\n [Network.Testnet]: 'testnet',\n }\n return networkMap[network]\n}\n","import { fetchAllDigitalAsset, fetchDigitalAsset, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'\nimport { PublicKey as UmiPubliKey, Umi, publicKey } from '@metaplex-foundation/umi'\nimport { createUmi } from '@metaplex-foundation/umi-bundle-defaults'\nimport { isAddress } from '@solana/addresses'\nimport {\n Account,\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n createTransferInstruction,\n getAccount,\n getAssociatedTokenAddressSync,\n getOrCreateAssociatedTokenAccount,\n} from '@solana/spl-token'\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n ParsedTransactionWithMeta,\n PublicKey,\n SendTransactionError,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n clusterApiUrl,\n} from '@solana/web3.js'\nimport {\n AssetInfo,\n BaseXChainClient,\n ExplorerProviders,\n FeeOption,\n FeeType,\n Fees,\n PreparedTx,\n TxHash,\n TxHistoryParams,\n TxType,\n} from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport {\n Address,\n TokenAsset,\n assetAmount,\n assetFromStringEx,\n assetToBase,\n baseAmount,\n eqAsset,\n getContractAddressFromAsset,\n} from '@xchainjs/xchain-util'\nimport bs58 from 'bs58'\nimport { HDKey } from 'micro-ed25519-hdkey'\n\nimport { SOLAsset, SOLChain, SOL_DECIMALS, defaultSolanaParams } from './const'\nimport { TokenAssetData } from './solana-types'\nimport { Balance, SOLClientParams, Tx, TxFrom, TxParams, TxTo, TxsPage } from './types'\nimport { getSolanaNetwork } from './utils'\n\nexport class Client extends BaseXChainClient {\n private explorerProviders: ExplorerProviders\n private connection: Connection\n private umi: Umi\n\n constructor(params: SOLClientParams = defaultSolanaParams) {\n super(SOLChain, {\n ...defaultSolanaParams,\n ...params,\n })\n this.explorerProviders = params.explorerProviders\n this.connection = new Connection(clusterApiUrl(getSolanaNetwork(this.getNetwork())))\n this.umi = createUmi(this.connection).use(mplTokenMetadata())\n }\n\n /**\n * Get information about the native asset of the Solana.\n *\n * @returns {AssetInfo} Information about the native asset.\n */\n public getAssetInfo(): AssetInfo {\n return {\n asset: SOLAsset,\n decimal: SOL_DECIMALS,\n }\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Get the full derivation path based on the wallet index.\n * @param {number} walletIndex The HD wallet index\n * @returns {string} The full derivation path\n */\n public getFullDerivationPath(walletIndex: number): string {\n if (!this.rootDerivationPaths) {\n throw Error('Can not generate derivation path due to root derivation path is undefined')\n }\n return `${this.rootDerivationPaths[this.getNetwork()]}${walletIndex}'`\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The Solana address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(index?: number): Promise<string> {\n return this.getPrivateKeyPair(index || 0).publicKey.toBase58()\n }\n\n /**\n * Get the current address synchronously.\n * @deprecated\n */\n public getAddress(): string {\n throw Error('Sync method not supported')\n }\n\n /**\n * Validate the given Solana address.\n * @param {string} address Solana address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n public validateAddress(address: Address): boolean {\n return isAddress(address)\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address, assets?: TokenAsset[]): Promise<Balance[]> {\n const balances: Balance[] = []\n\n const nativeBalance = await this.connection.getBalance(new PublicKey(address))\n\n balances.push({\n asset: SOLAsset,\n amount: baseAmount(nativeBalance, SOL_DECIMALS),\n })\n\n const tokenBalances = await this.connection.getParsedTokenAccountsByOwner(new PublicKey(address), {\n programId: TOKEN_PROGRAM_ID,\n })\n\n const tokensToRequest = !assets\n ? tokenBalances.value\n : tokenBalances.value.filter((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return (\n assets.findIndex((asset) => {\n return asset.symbol.toLowerCase().includes(tokenData.info.mint.toLowerCase())\n }) !== -1\n )\n })\n\n const mintPublicKeys: UmiPubliKey[] = tokensToRequest.map((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return publicKey(tokenData.info.mint)\n })\n\n const assetsData = await fetchAllDigitalAsset(this.umi, mintPublicKeys)\n\n tokenBalances.value.forEach((balance) => {\n const parsedData = balance.account.data.parsed as TokenAssetData\n const assetData = assetsData.find((assetData) => assetData.publicKey.toString() === parsedData.info.mint)\n\n if (assetData) {\n balances.push({\n amount: baseAmount(parsedData.info.tokenAmount.amount, parsedData.info.tokenAmount.decimals),\n asset: assetFromStringEx(`SOL.${assetData.metadata.symbol.trim()}-${parsedData.info.mint}`) as TokenAsset,\n })\n }\n })\n\n return balances\n }\n\n /**\n * Get transaction fees.\n *\n * @param {TxParams} params - The transaction parameters.\n * @returns {Fees} The average, fast, and fastest fees.\n * @throws {\"Params need to be passed\"} Thrown if parameters are not provided.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const sender = Keypair.generate()\n const toPubkey = new PublicKey(params.recipient)\n\n const transaction = new Transaction()\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = sender.publicKey\n\n let createAccountTxFee = 0\n if (!params.asset || eqAsset(params.asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: sender.publicKey,\n toPubkey,\n lamports: params.amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(params.asset as TokenAsset))\n const associatedTokenAddress = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n\n try {\n await getAccount(this.connection, associatedTokenAddress, undefined, TOKEN_PROGRAM_ID)\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n associatedTokenAddress,\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // recipient token account has to be created\n\n const dataLength = 165 // Normally used for Token accounts\n createAccountTxFee = await this.connection.getMinimumBalanceForRentExemption(dataLength)\n\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n toPubkey, // Should be Token account, but as recipient token account should be created, recipient public key\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n }\n }\n }\n\n if (params.memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: sender.publicKey, isSigner: true, isWritable: true }],\n data: Buffer.from(params.memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (params.priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: params.priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (params.limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: params.limit,\n }),\n )\n }\n\n const fee = (await transaction.getEstimatedFee(this.connection)) || 0\n\n return {\n type: FeeType.FlatFee,\n [FeeOption.Average]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fast]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fastest]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n }\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n const transaction = await this.connection.getParsedTransaction(txId)\n if (!transaction) throw Error('Can not find transaction')\n\n return this.parseTransaction(transaction)\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const signatures = await this.connection.getSignaturesForAddress(\n new PublicKey(params?.address || (await this.getAddressAsync())),\n )\n\n const transactions = await this.connection.getParsedTransactions(signatures.map(({ signature }) => signature))\n\n const results = await Promise.allSettled(\n transactions\n .filter((transaction) => !!transaction)\n .map((transaction) => this.parseTransaction(transaction as ParsedTransactionWithMeta)),\n )\n\n const txs: Tx[] = []\n\n results.forEach((result) => {\n if (result.status === 'fulfilled') {\n txs.push(result.value)\n }\n })\n\n return {\n txs,\n total: txs.length,\n }\n }\n\n /**\n * Transfers SOL or Solana token\n *\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer({\n walletIndex,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams): Promise<string> {\n const senderKeyPair = this.getPrivateKeyPair(walletIndex || 0)\n\n if (asset && !eqAsset(asset, this.getAssetInfo().asset)) {\n // Check if receipt token account is created, otherwise, create it\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n await getOrCreateAssociatedTokenAccount(this.connection, senderKeyPair, mintAddress, new PublicKey(recipient))\n }\n\n const { rawUnsignedTx } = await this.prepareTx({\n sender: senderKeyPair.publicKey.toBase58(),\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n })\n\n const transaction = Transaction.from(bs58.decode(rawUnsignedTx))\n\n transaction.sign(senderKeyPair)\n\n return this.broadcastTx(bs58.encode(transaction.serialize()))\n }\n\n /**\n * Broadcast a transaction to the network\n * @param {string} txHex Raw transaction to broadcast\n * @returns {TxHash} The hash of the transaction broadcasted\n */\n public async broadcastTx(txHex: string): Promise<TxHash> {\n try {\n const transaction = Transaction.from(bs58.decode(txHex))\n return await this.connection.sendRawTransaction(transaction.serialize())\n } catch (e: unknown) {\n if (e instanceof SendTransactionError) {\n console.log(await e.getLogs(this.connection))\n }\n throw Error('Can not broadcast transaction. Unknown error')\n }\n }\n\n /**\n * Prepares a transaction for transfer.\n *\n * @param {TxParams&Address} params - The transfer options.\n * @returns {Promise<PreparedTx>} The raw unsigned transaction.\n */\n public async prepareTx({\n sender,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams & { sender: Address }): Promise<PreparedTx> {\n const transaction = new Transaction()\n\n const fromPubkey = new PublicKey(sender)\n const toPubkey = new PublicKey(recipient)\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = new PublicKey(sender)\n\n if (!asset || eqAsset(asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey,\n toPubkey,\n lamports: amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n\n const fromAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, fromPubkey)\n let fromTokenAccount: Account\n try {\n fromTokenAccount = await getAccount(this.connection, fromAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find sender Token account')\n }\n throw error\n }\n\n const toAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n let toTokenAccount: Account\n try {\n toTokenAccount = await getAccount(this.connection, toAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find recipient Token account. Create it first')\n }\n throw error\n }\n\n transaction.add(\n createTransferInstruction(\n fromTokenAccount.address,\n toTokenAccount.address,\n fromPubkey,\n amount.amount().toNumber(),\n ),\n )\n }\n\n if (memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: fromPubkey, isSigner: true, isWritable: true }],\n data: Buffer.from(memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: limit,\n }),\n )\n }\n\n return { rawUnsignedTx: bs58.encode(transaction.serialize({ verifySignatures: false })) }\n }\n\n private getPrivateKeyPair(index: number): Keypair {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = getSeed(this.phrase)\n const hd = HDKey.fromMasterSeed(seed.toString('hex'))\n\n return Keypair.fromSeed(hd.derive(this.getFullDerivationPath(index)).privateKey)\n }\n\n private async parseTransaction(tx: ParsedTransactionWithMeta): Promise<Tx> {\n const from: TxFrom[] = []\n const to: TxTo[] = []\n\n tx.transaction.message.accountKeys.forEach((accountKey, index) => {\n if (accountKey.writable) {\n const preBalance = tx.meta?.preBalances[index]\n const postBalance = tx.meta?.postBalances[index]\n\n if (preBalance !== undefined && postBalance !== undefined) {\n if (postBalance > preBalance) {\n to.push({\n amount: baseAmount(postBalance - preBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n to: accountKey.pubkey.toBase58(),\n })\n } else if (preBalance > postBalance) {\n from.push({\n amount: baseAmount(preBalance - postBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n from: accountKey.pubkey.toBase58(),\n })\n }\n }\n }\n })\n\n // Tokens transfer\n if (tx.meta?.preTokenBalances && tx.meta?.postTokenBalances) {\n for (let i = 0; i < tx.meta?.postTokenBalances.length; i++) {\n const postBalance = tx.meta.postTokenBalances[i]\n\n const preBalance = tx.meta.preTokenBalances.find(\n (preTokenBalance) => preTokenBalance.accountIndex === postBalance.accountIndex,\n )\n\n const postBalanceAmount = postBalance.uiTokenAmount.uiAmount || 0\n const preBalanceAmount = preBalance?.uiTokenAmount.uiAmount || 0\n\n if (preBalance !== null && postBalance !== null) {\n const assetDecimals = tx.meta.postTokenBalances[i].uiTokenAmount.decimals\n const mintAddress = tx.meta.postTokenBalances[i].mint\n const owner = tx.meta.postTokenBalances[i].owner\n\n const tokenMetadata = await fetchDigitalAsset(this.umi, publicKey(mintAddress))\n\n if (owner) {\n if (postBalanceAmount > preBalanceAmount) {\n to.push({\n amount: assetToBase(assetAmount(postBalanceAmount - preBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n to: owner,\n })\n } else if (preBalanceAmount > postBalanceAmount) {\n from.push({\n amount: assetToBase(assetAmount(preBalanceAmount - postBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n from: owner,\n })\n }\n }\n }\n }\n }\n\n return {\n asset: this.getAssetInfo().asset,\n date: new Date((tx.blockTime || 0) * 1000),\n type: TxType.Transfer,\n hash: tx.transaction.signatures[0],\n from,\n to,\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/const.ts","../src/utils.ts","../src/client.ts"],"sourcesContent":["import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AssetType } from '@xchainjs/xchain-util'\n\nimport { SOLClientParams } from './types'\n\n/**\n * Solana chain symbol\n */\nexport const SOLChain = 'SOL' as const\n\n/**\n * Solana native asset decimals\n */\nexport const SOL_DECIMALS = 9\n\n/**\n * Solana native asset\n */\nexport const SOLAsset: Asset = {\n chain: 'SOL',\n ticker: 'SOL',\n symbol: 'SOL',\n type: AssetType.NATIVE,\n}\n\nconst mainnetExplorer = new ExplorerProvider(\n 'https://explorer.solana.com/',\n 'https://explorer.solana.com/address/%%ADDRESS%%',\n 'https://explorer.solana.com/tx/%%TX_ID%%',\n)\n\nexport const defaultSolanaParams: SOLClientParams = {\n network: Network.Mainnet,\n rootDerivationPaths: {\n [Network.Mainnet]: \"m/44'/501'/\",\n [Network.Testnet]: \"m/44'/501'/\",\n [Network.Stagenet]: \"m/44'/501'/\",\n },\n explorerProviders: {\n [Network.Mainnet]: mainnetExplorer,\n [Network.Testnet]: new ExplorerProvider(\n 'https://explorer.solana.com/?cluster=testnet',\n 'https://explorer.solana.com/address/%%ADDRESS%%?cluster=testnet',\n 'https://explorer.solana.com/tx/%%TX_ID%%?cluster=testnet',\n ),\n [Network.Stagenet]: mainnetExplorer,\n },\n}\n","import { Cluster } from '@solana/web3.js'\nimport { Network } from '@xchainjs/xchain-client'\n\nexport const getSolanaNetwork = (network: Network): Cluster => {\n const networkMap: { [key in Network]: Cluster } = {\n [Network.Mainnet]: 'mainnet-beta',\n [Network.Stagenet]: 'mainnet-beta',\n [Network.Testnet]: 'testnet',\n }\n return networkMap[network]\n}\n","import { fetchAllDigitalAsset, fetchDigitalAsset, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'\nimport { PublicKey as UmiPubliKey, Umi, publicKey } from '@metaplex-foundation/umi'\nimport { createUmi } from '@metaplex-foundation/umi-bundle-defaults'\nimport { isAddress } from '@solana/addresses'\nimport {\n Account,\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n createTransferInstruction,\n getAccount,\n getAssociatedTokenAddressSync,\n getOrCreateAssociatedTokenAccount,\n} from '@solana/spl-token'\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n ParsedTransactionWithMeta,\n PublicKey,\n SendTransactionError,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n clusterApiUrl,\n} from '@solana/web3.js'\nimport {\n AssetInfo,\n BaseXChainClient,\n ExplorerProviders,\n FeeOption,\n FeeType,\n Fees,\n PreparedTx,\n TxHash,\n TxHistoryParams,\n TxType,\n} from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport {\n Address,\n TokenAsset,\n assetAmount,\n assetFromStringEx,\n assetToBase,\n baseAmount,\n eqAsset,\n getContractAddressFromAsset,\n} from '@xchainjs/xchain-util'\nimport bs58 from 'bs58'\nimport { HDKey } from 'micro-ed25519-hdkey'\n\nimport { SOLAsset, SOLChain, SOL_DECIMALS, defaultSolanaParams } from './const'\nimport { TokenAssetData } from './solana-types'\nimport { Balance, SOLClientParams, Tx, TxFrom, TxParams, TxTo, TxsPage } from './types'\nimport { getSolanaNetwork } from './utils'\n\nexport class Client extends BaseXChainClient {\n private explorerProviders: ExplorerProviders\n private connection: Connection\n private umi: Umi\n\n constructor(params: SOLClientParams = defaultSolanaParams) {\n super(SOLChain, {\n ...defaultSolanaParams,\n ...params,\n })\n this.explorerProviders = params.explorerProviders\n this.connection = new Connection(clusterApiUrl(getSolanaNetwork(this.getNetwork())))\n this.umi = createUmi(this.connection).use(mplTokenMetadata())\n }\n\n /**\n * Get information about the native asset of the Solana.\n *\n * @returns {AssetInfo} Information about the native asset.\n */\n public getAssetInfo(): AssetInfo {\n return {\n asset: SOLAsset,\n decimal: SOL_DECIMALS,\n }\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Get the full derivation path based on the wallet index.\n * @param {number} walletIndex The HD wallet index\n * @returns {string} The full derivation path\n */\n public getFullDerivationPath(walletIndex: number): string {\n if (!this.rootDerivationPaths) {\n throw Error('Can not generate derivation path due to root derivation path is undefined')\n }\n return `${this.rootDerivationPaths[this.getNetwork()]}${walletIndex}'`\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The Solana address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(index?: number): Promise<string> {\n return this.getPrivateKeyPair(index || 0).publicKey.toBase58()\n }\n\n /**\n * Get the current address synchronously.\n * @deprecated\n */\n public getAddress(): string {\n throw Error('Sync method not supported')\n }\n\n /**\n * Validate the given Solana address.\n * @param {string} address Solana address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n public validateAddress(address: Address): boolean {\n return isAddress(address)\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address, assets?: TokenAsset[]): Promise<Balance[]> {\n const balances: Balance[] = []\n\n const nativeBalance = await this.connection.getBalance(new PublicKey(address))\n\n balances.push({\n asset: SOLAsset,\n amount: baseAmount(nativeBalance, SOL_DECIMALS),\n })\n\n const tokenBalances = await this.connection.getParsedTokenAccountsByOwner(new PublicKey(address), {\n programId: TOKEN_PROGRAM_ID,\n })\n\n const tokensToRequest = !assets\n ? tokenBalances.value\n : tokenBalances.value.filter((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return (\n assets.findIndex((asset) => {\n return asset.symbol.toLowerCase().includes(tokenData.info.mint.toLowerCase())\n }) !== -1\n )\n })\n\n const mintPublicKeys: UmiPubliKey[] = tokensToRequest.map((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return publicKey(tokenData.info.mint)\n })\n\n const assetsData = await fetchAllDigitalAsset(this.umi, mintPublicKeys)\n\n tokenBalances.value.forEach((balance) => {\n const parsedData = balance.account.data.parsed as TokenAssetData\n const assetData = assetsData.find((assetData) => assetData.publicKey.toString() === parsedData.info.mint)\n\n if (assetData) {\n balances.push({\n amount: baseAmount(parsedData.info.tokenAmount.amount, parsedData.info.tokenAmount.decimals),\n asset: assetFromStringEx(`SOL.${assetData.metadata.symbol.trim()}-${parsedData.info.mint}`) as TokenAsset,\n })\n }\n })\n\n return balances\n }\n\n /**\n * Get transaction fees.\n *\n * @param {TxParams} params - The transaction parameters.\n * @returns {Fees} The average, fast, and fastest fees.\n * @throws {\"Params need to be passed\"} Thrown if parameters are not provided.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const sender = Keypair.generate()\n const toPubkey = new PublicKey(params.recipient)\n\n const transaction = new Transaction()\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = sender.publicKey\n\n let createAccountTxFee = 0\n if (!params.asset || eqAsset(params.asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: sender.publicKey,\n toPubkey,\n lamports: params.amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(params.asset as TokenAsset))\n const associatedTokenAddress = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n\n try {\n await getAccount(this.connection, associatedTokenAddress, undefined, TOKEN_PROGRAM_ID)\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n associatedTokenAddress,\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // recipient token account has to be created\n\n const dataLength = 165 // Normally used for Token accounts\n createAccountTxFee = await this.connection.getMinimumBalanceForRentExemption(dataLength)\n\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n toPubkey, // Should be Token account, but as recipient token account should be created, recipient public key\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n }\n }\n }\n\n if (params.memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: sender.publicKey, isSigner: true, isWritable: true }],\n data: Buffer.from(params.memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (params.priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: params.priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (params.limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: params.limit,\n }),\n )\n }\n\n const fee = (await transaction.getEstimatedFee(this.connection)) || 0\n\n return {\n type: FeeType.FlatFee,\n [FeeOption.Average]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fast]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fastest]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n }\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n const transaction = await this.connection.getParsedTransaction(txId)\n if (!transaction) throw Error('Can not find transaction')\n\n return this.parseTransaction(transaction)\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const signatures = await this.connection.getSignaturesForAddress(\n new PublicKey(params?.address || (await this.getAddressAsync())),\n )\n\n const transactions = await this.connection.getParsedTransactions(signatures.map(({ signature }) => signature))\n\n const results = await Promise.allSettled(\n transactions\n .filter((transaction) => !!transaction)\n .map((transaction) => this.parseTransaction(transaction as ParsedTransactionWithMeta)),\n )\n\n const txs: Tx[] = []\n\n results.forEach((result) => {\n if (result.status === 'fulfilled') {\n txs.push(result.value)\n }\n })\n\n return {\n txs,\n total: txs.length,\n }\n }\n\n /**\n * Transfers SOL or Solana token\n *\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer({\n walletIndex,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams): Promise<string> {\n const senderKeyPair = this.getPrivateKeyPair(walletIndex || 0)\n\n if (asset && !eqAsset(asset, this.getAssetInfo().asset)) {\n // Check if receipt token account is created, otherwise, create it\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n await getOrCreateAssociatedTokenAccount(this.connection, senderKeyPair, mintAddress, new PublicKey(recipient))\n }\n\n const { rawUnsignedTx } = await this.prepareTx({\n sender: senderKeyPair.publicKey.toBase58(),\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n })\n\n const transaction = Transaction.from(bs58.decode(rawUnsignedTx))\n\n transaction.sign(senderKeyPair)\n\n return this.broadcastTx(bs58.encode(transaction.serialize()))\n }\n\n /**\n * Broadcast a transaction to the network\n * @param {string} txHex Raw transaction to broadcast\n * @returns {TxHash} The hash of the transaction broadcasted\n */\n public async broadcastTx(txHex: string): Promise<TxHash> {\n try {\n const transaction = Transaction.from(bs58.decode(txHex))\n return await this.connection.sendRawTransaction(transaction.serialize())\n } catch (e: unknown) {\n if (e instanceof SendTransactionError) {\n console.log(await e.getLogs(this.connection))\n }\n throw Error('Can not broadcast transaction. Unknown error')\n }\n }\n\n /**\n * Prepares a transaction for transfer.\n *\n * @param {TxParams&Address} params - The transfer options.\n * @returns {Promise<PreparedTx>} The raw unsigned transaction.\n */\n public async prepareTx({\n sender,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams & { sender: Address }): Promise<PreparedTx> {\n const transaction = new Transaction()\n\n const fromPubkey = new PublicKey(sender)\n const toPubkey = new PublicKey(recipient)\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = new PublicKey(sender)\n\n if (!asset || eqAsset(asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey,\n toPubkey,\n lamports: amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n\n const fromAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, fromPubkey)\n let fromTokenAccount: Account\n try {\n fromTokenAccount = await getAccount(this.connection, fromAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find sender Token account')\n }\n throw error\n }\n\n const toAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n let toTokenAccount: Account\n try {\n toTokenAccount = await getAccount(this.connection, toAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find recipient Token account. Create it first')\n }\n throw error\n }\n\n transaction.add(\n createTransferInstruction(\n fromTokenAccount.address,\n toTokenAccount.address,\n fromPubkey,\n amount.amount().toNumber(),\n ),\n )\n }\n\n if (memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: fromPubkey, isSigner: true, isWritable: true }],\n data: Buffer.from(memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: limit,\n }),\n )\n }\n\n return { rawUnsignedTx: bs58.encode(transaction.serialize({ verifySignatures: false })) }\n }\n\n private getPrivateKeyPair(index: number): Keypair {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = getSeed(this.phrase)\n const hd = HDKey.fromMasterSeed(seed.toString('hex'))\n\n return Keypair.fromSeed(hd.derive(this.getFullDerivationPath(index)).privateKey)\n }\n\n private async parseTransaction(tx: ParsedTransactionWithMeta): Promise<Tx> {\n const from: TxFrom[] = []\n const to: TxTo[] = []\n\n tx.transaction.message.accountKeys.forEach((accountKey, index) => {\n if (accountKey.writable) {\n const preBalance = tx.meta?.preBalances[index]\n const postBalance = tx.meta?.postBalances[index]\n\n if (preBalance !== undefined && postBalance !== undefined) {\n if (postBalance > preBalance) {\n to.push({\n amount: baseAmount(postBalance - preBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n to: accountKey.pubkey.toBase58(),\n })\n } else if (preBalance > postBalance) {\n from.push({\n amount: baseAmount(preBalance - postBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n from: accountKey.pubkey.toBase58(),\n })\n }\n }\n }\n })\n\n // Tokens transfer\n if (tx.meta?.preTokenBalances && tx.meta?.postTokenBalances) {\n for (let i = 0; i < tx.meta?.postTokenBalances.length; i++) {\n const postBalance = tx.meta.postTokenBalances[i]\n\n const preBalance = tx.meta.preTokenBalances.find(\n (preTokenBalance) => preTokenBalance.accountIndex === postBalance.accountIndex,\n )\n\n const postBalanceAmount = postBalance.uiTokenAmount.uiAmount || 0\n const preBalanceAmount = preBalance?.uiTokenAmount.uiAmount || 0\n\n if (preBalance !== null && postBalance !== null) {\n const assetDecimals = tx.meta.postTokenBalances[i].uiTokenAmount.decimals\n const mintAddress = tx.meta.postTokenBalances[i].mint\n const owner = tx.meta.postTokenBalances[i].owner\n\n const tokenMetadata = await fetchDigitalAsset(this.umi, publicKey(mintAddress))\n\n if (owner) {\n if (postBalanceAmount > preBalanceAmount) {\n to.push({\n amount: assetToBase(assetAmount(postBalanceAmount - preBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n to: owner,\n })\n } else if (preBalanceAmount > postBalanceAmount) {\n from.push({\n amount: assetToBase(assetAmount(preBalanceAmount - postBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n from: owner,\n })\n }\n }\n }\n }\n }\n\n return {\n asset: this.getAssetInfo().asset,\n date: new Date((tx.blockTime || 0) * 1000),\n type: TxType.Transfer,\n hash: tx.transaction.signatures[0],\n from,\n to,\n }\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;AAEG;AACI,MAAM,QAAQ,GAAG,MAAc;AAEtC;;AAEG;AACI,MAAM,YAAY,GAAG,EAAC;AAE7B;;AAEG;AACU,MAAA,QAAQ,GAAU;AAC7B,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,SAAS,CAAC,MAAM;EACvB;AAED,MAAM,eAAe,GAAG,IAAI,gBAAgB,CAC1C,8BAA8B,EAC9B,iDAAiD,EACjD,0CAA0C,CAC3C,CAAA;AAEY,MAAA,mBAAmB,GAAoB;IAClD,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,IAAA,mBAAmB,EAAE;AACnB,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa;AAChC,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa;AAChC,QAAA,CAAC,OAAO,CAAC,QAAQ,GAAG,aAAa;AAClC,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,eAAe;AAClC,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,gBAAgB,CACrC,8CAA8C,EAC9C,iEAAiE,EACjE,0DAA0D,CAC3D;AACD,QAAA,CAAC,OAAO,CAAC,QAAQ,GAAG,eAAe;AACpC,KAAA;;;AC3CI,MAAM,gBAAgB,GAAG,CAAC,OAAgB,KAAa;AAC5D,IAAA,MAAM,UAAU,GAAkC;AAChD,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc;AACjC,QAAA,CAAC,OAAO,CAAC,QAAQ,GAAG,cAAc;AAClC,QAAA,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS;KAC7B,CAAA;AACD,IAAA,OAAO,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;;AC+CK,MAAO,MAAO,SAAQ,gBAAgB,CAAA;AAK1C,IAAA,WAAA,CAAY,SAA0B,mBAAmB,EAAA;AACvD,QAAA,KAAK,CAAC,QAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,mBAAmB,CACnB,EAAA,MAAM,EACT,CAAA;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;AACpF,QAAA,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAA;KAC9D;AAED;;;;AAIG;IACI,YAAY,GAAA;QACjB,OAAO;AACL,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,YAAY;SACtB,CAAA;KACF;AAED;;;;AAIG;IACI,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,cAAc,EAAE,CAAA;KAClE;AAED;;;;;AAKG;AACI,IAAA,qBAAqB,CAAC,OAAgB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;KAChF;AAED;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;KACxE;AAED;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,WAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,MAAM,KAAK,CAAC,2EAA2E,CAAC,CAAA;AACzF,SAAA;AACD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAG,EAAA,WAAW,GAAG,CAAA;KACvE;AAED;;;;;;AAMG;AACU,IAAA,eAAe,CAAC,KAAc,EAAA;;AACzC,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAA;SAC/D,CAAA,CAAA;AAAA,KAAA;AAED;;;AAGG;IACI,UAAU,GAAA;AACf,QAAA,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAA;KACzC;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,OAAgB,EAAA;AACrC,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,CAAA;KAC1B;AAED;;;;;AAKG;IACU,UAAU,CAAC,OAAgB,EAAE,MAAqB,EAAA;;YAC7D,MAAM,QAAQ,GAAc,EAAE,CAAA;AAE9B,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;YAE9E,QAAQ,CAAC,IAAI,CAAC;AACZ,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC;AAChD,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;AAChG,gBAAA,SAAS,EAAE,gBAAgB;AAC5B,aAAA,CAAC,CAAA;YAEF,MAAM,eAAe,GAAG,CAAC,MAAM;kBAC3B,aAAa,CAAC,KAAK;kBACnB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,KAAI;oBAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAwB,CAAA;oBACpE,QACE,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACzB,wBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;AAC/E,qBAAC,CAAC,KAAK,CAAC,CAAC,EACV;AACH,iBAAC,CAAC,CAAA;YAEN,MAAM,cAAc,GAAkB,eAAe,CAAC,GAAG,CAAC,CAAC,YAAY,KAAI;gBACzE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAwB,CAAA;gBACpE,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,aAAC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAEvE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAwB,CAAA;gBAChE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEzG,gBAAA,IAAI,SAAS,EAAE;oBACb,QAAQ,CAAC,IAAI,CAAC;AACZ,wBAAA,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC5F,wBAAA,KAAK,EAAE,iBAAiB,CAAC,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAe;AAC1G,qBAAA,CAAC,CAAA;AACH,iBAAA;AACH,aAAC,CAAC,CAAA;AAEF,YAAA,OAAO,QAAQ,CAAA;SAChB,CAAA,CAAA;AAAA,KAAA;AAED;;;;;;AAMG;AACU,IAAA,OAAO,CAAC,MAAiB,EAAA;;AACpC,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAExD,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;YACjC,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAEhD,YAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;YAErC,WAAW,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;AACzG,YAAA,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAA;YAEvC,IAAI,kBAAkB,GAAG,CAAC,CAAA;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE;;AAErE,gBAAA,WAAW,CAAC,GAAG,CACb,aAAa,CAAC,QAAQ,CAAC;oBACrB,UAAU,EAAE,MAAM,CAAC,SAAS;oBAC5B,QAAQ;oBACR,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC5C,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAAM,iBAAA;;AAEL,gBAAA,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,2BAA2B,CAAC,MAAM,CAAC,KAAmB,CAAC,CAAC,CAAA;gBAC1F,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;gBAEnF,IAAI;AACF,oBAAA,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;oBACtF,WAAW,CAAC,GAAG,CACb,yBAAyB,CACvB,MAAM,CAAC,SAAS;AAChB,oBAAA,sBAAsB,EACtB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAClC,CACF,CAAA;AACF,iBAAA;AAAC,gBAAA,OAAO,KAAc,EAAE;AACvB,oBAAA,IAAI,KAAK,YAAY,yBAAyB,IAAI,KAAK,YAAY,6BAA6B,EAAE;;AAGhG,wBAAA,MAAM,UAAU,GAAG,GAAG,CAAA;wBACtB,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAA;wBAExF,WAAW,CAAC,GAAG,CACb,yBAAyB,CACvB,MAAM,CAAC,SAAS;AAChB,wBAAA,QAAQ;AACR,wBAAA,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAClC,CACF,CAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAED,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,gBAAA,WAAW,CAAC,GAAG,CACb,IAAI,sBAAsB,CAAC;AACzB,oBAAA,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;oBACtE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACvC,oBAAA,SAAS,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;AACxE,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;YAED,IAAI,MAAM,CAAC,WAAW,EAAE;AACtB,gBAAA,WAAW,CAAC,GAAG,CACb,oBAAoB,CAAC,mBAAmB,CAAC;AACvC,oBAAA,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAA,CAAA,GAAA,CAAA,EAAE,EAAI,CAAC,CAAA;AAChE,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;YAED,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,WAAW,CAAC,GAAG,CACb,oBAAoB,CAAC,mBAAmB,CAAC;oBACvC,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAED,YAAA,MAAM,GAAG,GAAG,CAAC,MAAM,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAErE,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,OAAO;AACrB,gBAAA,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,GAAG,kBAAkB,EAAE,YAAY,CAAC;AACvE,gBAAA,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,kBAAkB,EAAE,YAAY,CAAC;AACpE,gBAAA,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,GAAG,kBAAkB,EAAE,YAAY,CAAC;aACxE,CAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,kBAAkB,CAAC,IAAY,EAAA;;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AACpE,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAEzD,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;SAC1C,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,eAAe,CAAC,MAAwB,EAAA;;AACnD,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAC9D,IAAI,SAAS,CAAC,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAK,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CACjE,CAAA;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC,CAAC,CAAA;AAE9G,YAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,YAAY;iBACT,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;AACtC,iBAAA,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAwC,CAAC,CAAC,CACzF,CAAA;YAED,MAAM,GAAG,GAAS,EAAE,CAAA;AAEpB,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AACjC,oBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACvB,iBAAA;AACH,aAAC,CAAC,CAAA;YAEF,OAAO;gBACL,GAAG;gBACH,KAAK,EAAE,GAAG,CAAC,MAAM;aAClB,CAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,QAAQ,CAAC,EACpB,WAAW,EACX,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,GACF,EAAA;;YACT,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,CAAC,CAAC,CAAA;AAE9D,YAAA,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE;;gBAEvD,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,2BAA2B,CAAC,KAAmB,CAAC,CAAC,CAAA;AACnF,gBAAA,MAAM,iCAAiC,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/G,aAAA;YAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;AAC7C,gBAAA,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC1C,SAAS;gBACT,KAAK;gBACL,MAAM;gBACN,IAAI;gBACJ,KAAK;gBACL,WAAW;AACZ,aAAA,CAAC,CAAA;AAEF,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAEhE,YAAA,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AAE/B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;SAC9D,CAAA,CAAA;AAAA,KAAA;AAED;;;;AAIG;AACU,IAAA,WAAW,CAAC,KAAa,EAAA;;YACpC,IAAI;AACF,gBAAA,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACxD,gBAAA,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAA;AACzE,aAAA;AAAC,YAAA,OAAO,CAAU,EAAE;gBACnB,IAAI,CAAC,YAAY,oBAAoB,EAAE;AACrC,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;AAC9C,iBAAA;AACD,gBAAA,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAA;AAC5D,aAAA;SACF,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,SAAS,CAAC,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,WAAW,GACoB,EAAA;;AAC/B,YAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAErC,YAAA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;AACxC,YAAA,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAA;YAEzC,WAAW,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;YACzG,WAAW,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;AAE5C,YAAA,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE;;AAEvD,gBAAA,WAAW,CAAC,GAAG,CACb,aAAa,CAAC,QAAQ,CAAC;oBACrB,UAAU;oBACV,QAAQ;AACR,oBAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AACrC,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAAM,iBAAA;;gBAEL,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,2BAA2B,CAAC,KAAmB,CAAC,CAAC,CAAA;gBAEnF,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AACpF,gBAAA,IAAI,gBAAyB,CAAA;gBAC7B,IAAI;oBACF,gBAAgB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;AAC5E,iBAAA;AAAC,gBAAA,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,KAAK,YAAY,yBAAyB,IAAI,KAAK,YAAY,6BAA6B,EAAE;AAChG,wBAAA,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAA;AACjD,qBAAA;AACD,oBAAA,MAAM,KAAK,CAAA;AACZ,iBAAA;gBAED,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAChF,gBAAA,IAAI,cAAuB,CAAA;gBAC3B,IAAI;oBACF,cAAc,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;AACxE,iBAAA;AAAC,gBAAA,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,KAAK,YAAY,yBAAyB,IAAI,KAAK,YAAY,6BAA6B,EAAE;AAChG,wBAAA,MAAM,KAAK,CAAC,uDAAuD,CAAC,CAAA;AACrE,qBAAA;AACD,oBAAA,MAAM,KAAK,CAAA;AACZ,iBAAA;gBAED,WAAW,CAAC,GAAG,CACb,yBAAyB,CACvB,gBAAgB,CAAC,OAAO,EACxB,cAAc,CAAC,OAAO,EACtB,UAAU,EACV,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAC3B,CACF,CAAA;AACF,aAAA;AAED,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,WAAW,CAAC,GAAG,CACb,IAAI,sBAAsB,CAAC;AACzB,oBAAA,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;oBAChE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAChC,oBAAA,SAAS,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;AACxE,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAED,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,GAAG,CACb,oBAAoB,CAAC,mBAAmB,CAAC;AACvC,oBAAA,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAA,CAAA,GAAA,CAAA,EAAE,EAAI,CAAC,CAAA;AACzD,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAED,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,WAAW,CAAC,GAAG,CACb,oBAAoB,CAAC,mBAAmB,CAAC;AACvC,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC,CACH,CAAA;AACF,aAAA;AAED,YAAA,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAA;SAC1F,CAAA,CAAA;AAAA,KAAA;AAEO,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAE5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACjC,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AAErD,QAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACjF;AAEa,IAAA,gBAAgB,CAAC,EAA6B,EAAA;;;YAC1D,MAAM,IAAI,GAAa,EAAE,CAAA;YACzB,MAAM,EAAE,GAAW,EAAE,CAAA;AAErB,YAAA,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,KAAI;;gBAC/D,IAAI,UAAU,CAAC,QAAQ,EAAE;oBACvB,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,EAAE,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CAAC,KAAK,CAAC,CAAA;oBAC9C,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,EAAE,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAAC,KAAK,CAAC,CAAA;AAEhD,oBAAA,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE;wBACzD,IAAI,WAAW,GAAG,UAAU,EAAE;4BAC5B,EAAE,CAAC,IAAI,CAAC;AACN,gCAAA,MAAM,EAAE,UAAU,CAAC,WAAW,GAAG,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC;AACzE,gCAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;AAChC,gCAAA,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjC,6BAAA,CAAC,CAAA;AACH,yBAAA;6BAAM,IAAI,UAAU,GAAG,WAAW,EAAE;4BACnC,IAAI,CAAC,IAAI,CAAC;AACR,gCAAA,MAAM,EAAE,UAAU,CAAC,UAAU,GAAG,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC;AACzE,gCAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;AAChC,gCAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;AACnC,6BAAA,CAAC,CAAA;AACH,yBAAA;AACF,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;;AAGF,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,EAAE,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,MAAI,CAAA,EAAA,GAAA,EAAE,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,iBAAiB,CAAA,EAAE;AAC3D,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAG,CAAA,EAAA,GAAA,EAAE,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAC,MAAM,CAAA,EAAE,CAAC,EAAE,EAAE;oBAC1D,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;oBAEhD,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,CAAC,eAAe,KAAK,eAAe,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,CAC/E,CAAA;oBAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,CAAA;AACjE,oBAAA,MAAM,gBAAgB,GAAG,CAAA,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,aAAa,CAAC,QAAQ,KAAI,CAAC,CAAA;AAEhE,oBAAA,IAAI,UAAU,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;AAC/C,wBAAA,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAA;AACzE,wBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACrD,wBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAEhD,wBAAA,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;AAE/E,wBAAA,IAAI,KAAK,EAAE;4BACT,IAAI,iBAAiB,GAAG,gBAAgB,EAAE;gCACxC,EAAE,CAAC,IAAI,CAAC;oCACN,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,iBAAiB,GAAG,gBAAgB,EAAE,aAAa,CAAC,CAAC;AACrF,oCAAA,KAAK,EAAE,iBAAiB,CAAC,CAAA,IAAA,EAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,EAAE,CAAe;AACpG,oCAAA,EAAE,EAAE,KAAK;AACV,iCAAA,CAAC,CAAA;AACH,6BAAA;iCAAM,IAAI,gBAAgB,GAAG,iBAAiB,EAAE;gCAC/C,IAAI,CAAC,IAAI,CAAC;oCACR,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,gBAAgB,GAAG,iBAAiB,EAAE,aAAa,CAAC,CAAC;AACrF,oCAAA,KAAK,EAAE,iBAAiB,CAAC,CAAA,IAAA,EAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAI,CAAA,EAAA,WAAW,EAAE,CAAe;AACpG,oCAAA,IAAI,EAAE,KAAK;AACZ,iCAAA,CAAC,CAAA;AACH,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAED,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;AAChC,gBAAA,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC1C,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;gBAClC,IAAI;gBACJ,EAAE;aACH,CAAA;;AACF,KAAA;AACF;;;;"}
package/lib/index.js CHANGED
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var mplTokenMetadata = require('@metaplex-foundation/mpl-token-metadata');
6
4
  var umi = require('@metaplex-foundation/umi');
7
5
  var umiBundleDefaults = require('@metaplex-foundation/umi-bundle-defaults');
@@ -14,10 +12,6 @@ var xchainUtil = require('@xchainjs/xchain-util');
14
12
  var bs58 = require('bs58');
15
13
  var microEd25519Hdkey = require('micro-ed25519-hdkey');
16
14
 
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var bs58__default = /*#__PURE__*/_interopDefaultLegacy(bs58);
20
-
21
15
  /******************************************************************************
22
16
  Copyright (c) Microsoft Corporation.
23
17
 
@@ -32,6 +26,8 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
32
26
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
33
27
  PERFORMANCE OF THIS SOFTWARE.
34
28
  ***************************************************************************** */
29
+ /* global Reflect, Promise, SuppressedError, Symbol */
30
+
35
31
 
36
32
  function __awaiter(thisArg, _arguments, P, generator) {
37
33
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
@@ -41,7 +37,12 @@ function __awaiter(thisArg, _arguments, P, generator) {
41
37
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
38
  step((generator = generator.apply(thisArg, _arguments || [])).next());
43
39
  });
44
- }
40
+ }
41
+
42
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
43
+ var e = new Error(message);
44
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
45
+ };
45
46
 
46
47
  /**
47
48
  * Solana chain symbol
@@ -336,9 +337,9 @@ class Client extends xchainClient.BaseXChainClient {
336
337
  limit,
337
338
  priorityFee,
338
339
  });
339
- const transaction = web3_js.Transaction.from(bs58__default["default"].decode(rawUnsignedTx));
340
+ const transaction = web3_js.Transaction.from(bs58.decode(rawUnsignedTx));
340
341
  transaction.sign(senderKeyPair);
341
- return this.broadcastTx(bs58__default["default"].encode(transaction.serialize()));
342
+ return this.broadcastTx(bs58.encode(transaction.serialize()));
342
343
  });
343
344
  }
344
345
  /**
@@ -349,7 +350,7 @@ class Client extends xchainClient.BaseXChainClient {
349
350
  broadcastTx(txHex) {
350
351
  return __awaiter(this, void 0, void 0, function* () {
351
352
  try {
352
- const transaction = web3_js.Transaction.from(bs58__default["default"].decode(txHex));
353
+ const transaction = web3_js.Transaction.from(bs58.decode(txHex));
353
354
  return yield this.connection.sendRawTransaction(transaction.serialize());
354
355
  }
355
356
  catch (e) {
@@ -425,7 +426,7 @@ class Client extends xchainClient.BaseXChainClient {
425
426
  units: limit,
426
427
  }));
427
428
  }
428
- return { rawUnsignedTx: bs58__default["default"].encode(transaction.serialize({ verifySignatures: false })) };
429
+ return { rawUnsignedTx: bs58.encode(transaction.serialize({ verifySignatures: false })) };
429
430
  });
430
431
  }
431
432
  getPrivateKeyPair(index) {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/const.ts","../src/utils.ts","../src/client.ts"],"sourcesContent":["import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AssetType } from '@xchainjs/xchain-util'\n\nimport { SOLClientParams } from './types'\n\n/**\n * Solana chain symbol\n */\nexport const SOLChain = 'SOL' as const\n\n/**\n * Solana native asset decimals\n */\nexport const SOL_DECIMALS = 9\n\n/**\n * Solana native asset\n */\nexport const SOLAsset: Asset = {\n chain: 'SOL',\n ticker: 'SOL',\n symbol: 'SOL',\n type: AssetType.NATIVE,\n}\n\nconst mainnetExplorer = new ExplorerProvider(\n 'https://explorer.solana.com/',\n 'https://explorer.solana.com/address/%%ADDRESS%%',\n 'https://explorer.solana.com/tx/%%TX_ID%%',\n)\n\nexport const defaultSolanaParams: SOLClientParams = {\n network: Network.Mainnet,\n rootDerivationPaths: {\n [Network.Mainnet]: \"m/44'/501'/\",\n [Network.Testnet]: \"m/44'/501'/\",\n [Network.Stagenet]: \"m/44'/501'/\",\n },\n explorerProviders: {\n [Network.Mainnet]: mainnetExplorer,\n [Network.Testnet]: new ExplorerProvider(\n 'https://explorer.solana.com/?cluster=testnet',\n 'https://explorer.solana.com/address/%%ADDRESS%%?cluster=testnet',\n 'https://explorer.solana.com/tx/%%TX_ID%%?cluster=testnet',\n ),\n [Network.Stagenet]: mainnetExplorer,\n },\n}\n","import { Cluster } from '@solana/web3.js'\nimport { Network } from '@xchainjs/xchain-client'\n\nexport const getSolanaNetwork = (network: Network): Cluster => {\n const networkMap: { [key in Network]: Cluster } = {\n [Network.Mainnet]: 'mainnet-beta',\n [Network.Stagenet]: 'mainnet-beta',\n [Network.Testnet]: 'testnet',\n }\n return networkMap[network]\n}\n","import { fetchAllDigitalAsset, fetchDigitalAsset, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'\nimport { PublicKey as UmiPubliKey, Umi, publicKey } from '@metaplex-foundation/umi'\nimport { createUmi } from '@metaplex-foundation/umi-bundle-defaults'\nimport { isAddress } from '@solana/addresses'\nimport {\n Account,\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n createTransferInstruction,\n getAccount,\n getAssociatedTokenAddressSync,\n getOrCreateAssociatedTokenAccount,\n} from '@solana/spl-token'\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n ParsedTransactionWithMeta,\n PublicKey,\n SendTransactionError,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n clusterApiUrl,\n} from '@solana/web3.js'\nimport {\n AssetInfo,\n BaseXChainClient,\n ExplorerProviders,\n FeeOption,\n FeeType,\n Fees,\n PreparedTx,\n TxHash,\n TxHistoryParams,\n TxType,\n} from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport {\n Address,\n TokenAsset,\n assetAmount,\n assetFromStringEx,\n assetToBase,\n baseAmount,\n eqAsset,\n getContractAddressFromAsset,\n} from '@xchainjs/xchain-util'\nimport bs58 from 'bs58'\nimport { HDKey } from 'micro-ed25519-hdkey'\n\nimport { SOLAsset, SOLChain, SOL_DECIMALS, defaultSolanaParams } from './const'\nimport { TokenAssetData } from './solana-types'\nimport { Balance, SOLClientParams, Tx, TxFrom, TxParams, TxTo, TxsPage } from './types'\nimport { getSolanaNetwork } from './utils'\n\nexport class Client extends BaseXChainClient {\n private explorerProviders: ExplorerProviders\n private connection: Connection\n private umi: Umi\n\n constructor(params: SOLClientParams = defaultSolanaParams) {\n super(SOLChain, {\n ...defaultSolanaParams,\n ...params,\n })\n this.explorerProviders = params.explorerProviders\n this.connection = new Connection(clusterApiUrl(getSolanaNetwork(this.getNetwork())))\n this.umi = createUmi(this.connection).use(mplTokenMetadata())\n }\n\n /**\n * Get information about the native asset of the Solana.\n *\n * @returns {AssetInfo} Information about the native asset.\n */\n public getAssetInfo(): AssetInfo {\n return {\n asset: SOLAsset,\n decimal: SOL_DECIMALS,\n }\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Get the full derivation path based on the wallet index.\n * @param {number} walletIndex The HD wallet index\n * @returns {string} The full derivation path\n */\n public getFullDerivationPath(walletIndex: number): string {\n if (!this.rootDerivationPaths) {\n throw Error('Can not generate derivation path due to root derivation path is undefined')\n }\n return `${this.rootDerivationPaths[this.getNetwork()]}${walletIndex}'`\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The Solana address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(index?: number): Promise<string> {\n return this.getPrivateKeyPair(index || 0).publicKey.toBase58()\n }\n\n /**\n * Get the current address synchronously.\n * @deprecated\n */\n public getAddress(): string {\n throw Error('Sync method not supported')\n }\n\n /**\n * Validate the given Solana address.\n * @param {string} address Solana address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n public validateAddress(address: Address): boolean {\n return isAddress(address)\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address, assets?: TokenAsset[]): Promise<Balance[]> {\n const balances: Balance[] = []\n\n const nativeBalance = await this.connection.getBalance(new PublicKey(address))\n\n balances.push({\n asset: SOLAsset,\n amount: baseAmount(nativeBalance, SOL_DECIMALS),\n })\n\n const tokenBalances = await this.connection.getParsedTokenAccountsByOwner(new PublicKey(address), {\n programId: TOKEN_PROGRAM_ID,\n })\n\n const tokensToRequest = !assets\n ? tokenBalances.value\n : tokenBalances.value.filter((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return (\n assets.findIndex((asset) => {\n return asset.symbol.toLowerCase().includes(tokenData.info.mint.toLowerCase())\n }) !== -1\n )\n })\n\n const mintPublicKeys: UmiPubliKey[] = tokensToRequest.map((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return publicKey(tokenData.info.mint)\n })\n\n const assetsData = await fetchAllDigitalAsset(this.umi, mintPublicKeys)\n\n tokenBalances.value.forEach((balance) => {\n const parsedData = balance.account.data.parsed as TokenAssetData\n const assetData = assetsData.find((assetData) => assetData.publicKey.toString() === parsedData.info.mint)\n\n if (assetData) {\n balances.push({\n amount: baseAmount(parsedData.info.tokenAmount.amount, parsedData.info.tokenAmount.decimals),\n asset: assetFromStringEx(`SOL.${assetData.metadata.symbol.trim()}-${parsedData.info.mint}`) as TokenAsset,\n })\n }\n })\n\n return balances\n }\n\n /**\n * Get transaction fees.\n *\n * @param {TxParams} params - The transaction parameters.\n * @returns {Fees} The average, fast, and fastest fees.\n * @throws {\"Params need to be passed\"} Thrown if parameters are not provided.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const sender = Keypair.generate()\n const toPubkey = new PublicKey(params.recipient)\n\n const transaction = new Transaction()\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = sender.publicKey\n\n let createAccountTxFee = 0\n if (!params.asset || eqAsset(params.asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: sender.publicKey,\n toPubkey,\n lamports: params.amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(params.asset as TokenAsset))\n const associatedTokenAddress = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n\n try {\n await getAccount(this.connection, associatedTokenAddress, undefined, TOKEN_PROGRAM_ID)\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n associatedTokenAddress,\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // recipient token account has to be created\n\n const dataLength = 165 // Normally used for Token accounts\n createAccountTxFee = await this.connection.getMinimumBalanceForRentExemption(dataLength)\n\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n toPubkey, // Should be Token account, but as recipient token account should be created, recipient public key\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n }\n }\n }\n\n if (params.memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: sender.publicKey, isSigner: true, isWritable: true }],\n data: Buffer.from(params.memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (params.priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: params.priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (params.limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: params.limit,\n }),\n )\n }\n\n const fee = (await transaction.getEstimatedFee(this.connection)) || 0\n\n return {\n type: FeeType.FlatFee,\n [FeeOption.Average]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fast]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fastest]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n }\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n const transaction = await this.connection.getParsedTransaction(txId)\n if (!transaction) throw Error('Can not find transaction')\n\n return this.parseTransaction(transaction)\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const signatures = await this.connection.getSignaturesForAddress(\n new PublicKey(params?.address || (await this.getAddressAsync())),\n )\n\n const transactions = await this.connection.getParsedTransactions(signatures.map(({ signature }) => signature))\n\n const results = await Promise.allSettled(\n transactions\n .filter((transaction) => !!transaction)\n .map((transaction) => this.parseTransaction(transaction as ParsedTransactionWithMeta)),\n )\n\n const txs: Tx[] = []\n\n results.forEach((result) => {\n if (result.status === 'fulfilled') {\n txs.push(result.value)\n }\n })\n\n return {\n txs,\n total: txs.length,\n }\n }\n\n /**\n * Transfers SOL or Solana token\n *\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer({\n walletIndex,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams): Promise<string> {\n const senderKeyPair = this.getPrivateKeyPair(walletIndex || 0)\n\n if (asset && !eqAsset(asset, this.getAssetInfo().asset)) {\n // Check if receipt token account is created, otherwise, create it\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n await getOrCreateAssociatedTokenAccount(this.connection, senderKeyPair, mintAddress, new PublicKey(recipient))\n }\n\n const { rawUnsignedTx } = await this.prepareTx({\n sender: senderKeyPair.publicKey.toBase58(),\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n })\n\n const transaction = Transaction.from(bs58.decode(rawUnsignedTx))\n\n transaction.sign(senderKeyPair)\n\n return this.broadcastTx(bs58.encode(transaction.serialize()))\n }\n\n /**\n * Broadcast a transaction to the network\n * @param {string} txHex Raw transaction to broadcast\n * @returns {TxHash} The hash of the transaction broadcasted\n */\n public async broadcastTx(txHex: string): Promise<TxHash> {\n try {\n const transaction = Transaction.from(bs58.decode(txHex))\n return await this.connection.sendRawTransaction(transaction.serialize())\n } catch (e: unknown) {\n if (e instanceof SendTransactionError) {\n console.log(await e.getLogs(this.connection))\n }\n throw Error('Can not broadcast transaction. Unknown error')\n }\n }\n\n /**\n * Prepares a transaction for transfer.\n *\n * @param {TxParams&Address} params - The transfer options.\n * @returns {Promise<PreparedTx>} The raw unsigned transaction.\n */\n public async prepareTx({\n sender,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams & { sender: Address }): Promise<PreparedTx> {\n const transaction = new Transaction()\n\n const fromPubkey = new PublicKey(sender)\n const toPubkey = new PublicKey(recipient)\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = new PublicKey(sender)\n\n if (!asset || eqAsset(asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey,\n toPubkey,\n lamports: amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n\n const fromAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, fromPubkey)\n let fromTokenAccount: Account\n try {\n fromTokenAccount = await getAccount(this.connection, fromAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find sender Token account')\n }\n throw error\n }\n\n const toAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n let toTokenAccount: Account\n try {\n toTokenAccount = await getAccount(this.connection, toAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find recipient Token account. Create it first')\n }\n throw error\n }\n\n transaction.add(\n createTransferInstruction(\n fromTokenAccount.address,\n toTokenAccount.address,\n fromPubkey,\n amount.amount().toNumber(),\n ),\n )\n }\n\n if (memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: fromPubkey, isSigner: true, isWritable: true }],\n data: Buffer.from(memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: limit,\n }),\n )\n }\n\n return { rawUnsignedTx: bs58.encode(transaction.serialize({ verifySignatures: false })) }\n }\n\n private getPrivateKeyPair(index: number): Keypair {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = getSeed(this.phrase)\n const hd = HDKey.fromMasterSeed(seed.toString('hex'))\n\n return Keypair.fromSeed(hd.derive(this.getFullDerivationPath(index)).privateKey)\n }\n\n private async parseTransaction(tx: ParsedTransactionWithMeta): Promise<Tx> {\n const from: TxFrom[] = []\n const to: TxTo[] = []\n\n tx.transaction.message.accountKeys.forEach((accountKey, index) => {\n if (accountKey.writable) {\n const preBalance = tx.meta?.preBalances[index]\n const postBalance = tx.meta?.postBalances[index]\n\n if (preBalance !== undefined && postBalance !== undefined) {\n if (postBalance > preBalance) {\n to.push({\n amount: baseAmount(postBalance - preBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n to: accountKey.pubkey.toBase58(),\n })\n } else if (preBalance > postBalance) {\n from.push({\n amount: baseAmount(preBalance - postBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n from: accountKey.pubkey.toBase58(),\n })\n }\n }\n }\n })\n\n // Tokens transfer\n if (tx.meta?.preTokenBalances && tx.meta?.postTokenBalances) {\n for (let i = 0; i < tx.meta?.postTokenBalances.length; i++) {\n const postBalance = tx.meta.postTokenBalances[i]\n\n const preBalance = tx.meta.preTokenBalances.find(\n (preTokenBalance) => preTokenBalance.accountIndex === postBalance.accountIndex,\n )\n\n const postBalanceAmount = postBalance.uiTokenAmount.uiAmount || 0\n const preBalanceAmount = preBalance?.uiTokenAmount.uiAmount || 0\n\n if (preBalance !== null && postBalance !== null) {\n const assetDecimals = tx.meta.postTokenBalances[i].uiTokenAmount.decimals\n const mintAddress = tx.meta.postTokenBalances[i].mint\n const owner = tx.meta.postTokenBalances[i].owner\n\n const tokenMetadata = await fetchDigitalAsset(this.umi, publicKey(mintAddress))\n\n if (owner) {\n if (postBalanceAmount > preBalanceAmount) {\n to.push({\n amount: assetToBase(assetAmount(postBalanceAmount - preBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n to: owner,\n })\n } else if (preBalanceAmount > postBalanceAmount) {\n from.push({\n amount: assetToBase(assetAmount(preBalanceAmount - postBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n from: owner,\n })\n }\n }\n }\n }\n }\n\n return {\n asset: this.getAssetInfo().asset,\n date: new Date((tx.blockTime || 0) * 1000),\n type: TxType.Transfer,\n hash: tx.transaction.signatures[0],\n from,\n to,\n }\n }\n}\n"],"names":["AssetType","ExplorerProvider","Network","BaseXChainClient","Connection","clusterApiUrl","createUmi","mplTokenMetadata","isAddress","PublicKey","baseAmount","TOKEN_PROGRAM_ID","publicKey","fetchAllDigitalAsset","assetFromStringEx","Keypair","Transaction","eqAsset","SystemProgram","getContractAddressFromAsset","getAssociatedTokenAddressSync","getAccount","createTransferInstruction","TokenAccountNotFoundError","TokenInvalidAccountOwnerError","TransactionInstruction","ComputeBudgetProgram","FeeType","FeeOption","getOrCreateAssociatedTokenAccount","bs58","SendTransactionError","getSeed","HDKey","fetchDigitalAsset","assetToBase","assetAmount","TxType"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/const.ts","../src/utils.ts","../src/client.ts"],"sourcesContent":["import { ExplorerProvider, Network } from '@xchainjs/xchain-client'\nimport { Asset, AssetType } from '@xchainjs/xchain-util'\n\nimport { SOLClientParams } from './types'\n\n/**\n * Solana chain symbol\n */\nexport const SOLChain = 'SOL' as const\n\n/**\n * Solana native asset decimals\n */\nexport const SOL_DECIMALS = 9\n\n/**\n * Solana native asset\n */\nexport const SOLAsset: Asset = {\n chain: 'SOL',\n ticker: 'SOL',\n symbol: 'SOL',\n type: AssetType.NATIVE,\n}\n\nconst mainnetExplorer = new ExplorerProvider(\n 'https://explorer.solana.com/',\n 'https://explorer.solana.com/address/%%ADDRESS%%',\n 'https://explorer.solana.com/tx/%%TX_ID%%',\n)\n\nexport const defaultSolanaParams: SOLClientParams = {\n network: Network.Mainnet,\n rootDerivationPaths: {\n [Network.Mainnet]: \"m/44'/501'/\",\n [Network.Testnet]: \"m/44'/501'/\",\n [Network.Stagenet]: \"m/44'/501'/\",\n },\n explorerProviders: {\n [Network.Mainnet]: mainnetExplorer,\n [Network.Testnet]: new ExplorerProvider(\n 'https://explorer.solana.com/?cluster=testnet',\n 'https://explorer.solana.com/address/%%ADDRESS%%?cluster=testnet',\n 'https://explorer.solana.com/tx/%%TX_ID%%?cluster=testnet',\n ),\n [Network.Stagenet]: mainnetExplorer,\n },\n}\n","import { Cluster } from '@solana/web3.js'\nimport { Network } from '@xchainjs/xchain-client'\n\nexport const getSolanaNetwork = (network: Network): Cluster => {\n const networkMap: { [key in Network]: Cluster } = {\n [Network.Mainnet]: 'mainnet-beta',\n [Network.Stagenet]: 'mainnet-beta',\n [Network.Testnet]: 'testnet',\n }\n return networkMap[network]\n}\n","import { fetchAllDigitalAsset, fetchDigitalAsset, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'\nimport { PublicKey as UmiPubliKey, Umi, publicKey } from '@metaplex-foundation/umi'\nimport { createUmi } from '@metaplex-foundation/umi-bundle-defaults'\nimport { isAddress } from '@solana/addresses'\nimport {\n Account,\n TOKEN_PROGRAM_ID,\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n createTransferInstruction,\n getAccount,\n getAssociatedTokenAddressSync,\n getOrCreateAssociatedTokenAccount,\n} from '@solana/spl-token'\nimport {\n ComputeBudgetProgram,\n Connection,\n Keypair,\n ParsedTransactionWithMeta,\n PublicKey,\n SendTransactionError,\n SystemProgram,\n Transaction,\n TransactionInstruction,\n clusterApiUrl,\n} from '@solana/web3.js'\nimport {\n AssetInfo,\n BaseXChainClient,\n ExplorerProviders,\n FeeOption,\n FeeType,\n Fees,\n PreparedTx,\n TxHash,\n TxHistoryParams,\n TxType,\n} from '@xchainjs/xchain-client'\nimport { getSeed } from '@xchainjs/xchain-crypto'\nimport {\n Address,\n TokenAsset,\n assetAmount,\n assetFromStringEx,\n assetToBase,\n baseAmount,\n eqAsset,\n getContractAddressFromAsset,\n} from '@xchainjs/xchain-util'\nimport bs58 from 'bs58'\nimport { HDKey } from 'micro-ed25519-hdkey'\n\nimport { SOLAsset, SOLChain, SOL_DECIMALS, defaultSolanaParams } from './const'\nimport { TokenAssetData } from './solana-types'\nimport { Balance, SOLClientParams, Tx, TxFrom, TxParams, TxTo, TxsPage } from './types'\nimport { getSolanaNetwork } from './utils'\n\nexport class Client extends BaseXChainClient {\n private explorerProviders: ExplorerProviders\n private connection: Connection\n private umi: Umi\n\n constructor(params: SOLClientParams = defaultSolanaParams) {\n super(SOLChain, {\n ...defaultSolanaParams,\n ...params,\n })\n this.explorerProviders = params.explorerProviders\n this.connection = new Connection(clusterApiUrl(getSolanaNetwork(this.getNetwork())))\n this.umi = createUmi(this.connection).use(mplTokenMetadata())\n }\n\n /**\n * Get information about the native asset of the Solana.\n *\n * @returns {AssetInfo} Information about the native asset.\n */\n public getAssetInfo(): AssetInfo {\n return {\n asset: SOLAsset,\n decimal: SOL_DECIMALS,\n }\n }\n\n /**\n * Get the explorer URL.\n *\n * @returns {string} The explorer URL.\n */\n public getExplorerUrl(): string {\n return this.explorerProviders[this.getNetwork()].getExplorerUrl()\n }\n\n /**\n * Get the explorer url for the given address.\n *\n * @param {Address} address\n * @returns {string} The explorer url for the given address.\n */\n public getExplorerAddressUrl(address: Address): string {\n return this.explorerProviders[this.getNetwork()].getExplorerAddressUrl(address)\n }\n\n /**\n * Get the explorer url for the given transaction id.\n *\n * @param {string} txID\n * @returns {string} The explorer url for the given transaction id.\n */\n public getExplorerTxUrl(txID: TxHash): string {\n return this.explorerProviders[this.getNetwork()].getExplorerTxUrl(txID)\n }\n\n /**\n * Get the full derivation path based on the wallet index.\n * @param {number} walletIndex The HD wallet index\n * @returns {string} The full derivation path\n */\n public getFullDerivationPath(walletIndex: number): string {\n if (!this.rootDerivationPaths) {\n throw Error('Can not generate derivation path due to root derivation path is undefined')\n }\n return `${this.rootDerivationPaths[this.getNetwork()]}${walletIndex}'`\n }\n\n /**\n * Get the current address asynchronously.\n *\n * @param {number} index The index of the address. Default 0\n * @returns {Address} The Solana address related to the index provided.\n * @throws {\"Phrase must be provided\"} Thrown if the phrase has not been set before.\n */\n public async getAddressAsync(index?: number): Promise<string> {\n return this.getPrivateKeyPair(index || 0).publicKey.toBase58()\n }\n\n /**\n * Get the current address synchronously.\n * @deprecated\n */\n public getAddress(): string {\n throw Error('Sync method not supported')\n }\n\n /**\n * Validate the given Solana address.\n * @param {string} address Solana address to validate.\n * @returns {boolean} `true` if the address is valid, `false` otherwise.\n */\n public validateAddress(address: Address): boolean {\n return isAddress(address)\n }\n\n /**\n * Retrieves the balance of a given address.\n * @param {Address} address - The address to retrieve the balance for.\n * @param {TokenAsset[]} assets - Assets to retrieve the balance for (optional).\n * @returns {Promise<Balance[]>} An array containing the balance of the address.\n */\n public async getBalance(address: Address, assets?: TokenAsset[]): Promise<Balance[]> {\n const balances: Balance[] = []\n\n const nativeBalance = await this.connection.getBalance(new PublicKey(address))\n\n balances.push({\n asset: SOLAsset,\n amount: baseAmount(nativeBalance, SOL_DECIMALS),\n })\n\n const tokenBalances = await this.connection.getParsedTokenAccountsByOwner(new PublicKey(address), {\n programId: TOKEN_PROGRAM_ID,\n })\n\n const tokensToRequest = !assets\n ? tokenBalances.value\n : tokenBalances.value.filter((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return (\n assets.findIndex((asset) => {\n return asset.symbol.toLowerCase().includes(tokenData.info.mint.toLowerCase())\n }) !== -1\n )\n })\n\n const mintPublicKeys: UmiPubliKey[] = tokensToRequest.map((tokenBalance) => {\n const tokenData = tokenBalance.account.data.parsed as TokenAssetData\n return publicKey(tokenData.info.mint)\n })\n\n const assetsData = await fetchAllDigitalAsset(this.umi, mintPublicKeys)\n\n tokenBalances.value.forEach((balance) => {\n const parsedData = balance.account.data.parsed as TokenAssetData\n const assetData = assetsData.find((assetData) => assetData.publicKey.toString() === parsedData.info.mint)\n\n if (assetData) {\n balances.push({\n amount: baseAmount(parsedData.info.tokenAmount.amount, parsedData.info.tokenAmount.decimals),\n asset: assetFromStringEx(`SOL.${assetData.metadata.symbol.trim()}-${parsedData.info.mint}`) as TokenAsset,\n })\n }\n })\n\n return balances\n }\n\n /**\n * Get transaction fees.\n *\n * @param {TxParams} params - The transaction parameters.\n * @returns {Fees} The average, fast, and fastest fees.\n * @throws {\"Params need to be passed\"} Thrown if parameters are not provided.\n */\n public async getFees(params?: TxParams): Promise<Fees> {\n if (!params) throw new Error('Params need to be passed')\n\n const sender = Keypair.generate()\n const toPubkey = new PublicKey(params.recipient)\n\n const transaction = new Transaction()\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = sender.publicKey\n\n let createAccountTxFee = 0\n if (!params.asset || eqAsset(params.asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: sender.publicKey,\n toPubkey,\n lamports: params.amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(params.asset as TokenAsset))\n const associatedTokenAddress = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n\n try {\n await getAccount(this.connection, associatedTokenAddress, undefined, TOKEN_PROGRAM_ID)\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n associatedTokenAddress,\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n } catch (error: unknown) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // recipient token account has to be created\n\n const dataLength = 165 // Normally used for Token accounts\n createAccountTxFee = await this.connection.getMinimumBalanceForRentExemption(dataLength)\n\n transaction.add(\n createTransferInstruction(\n sender.publicKey, // Should be Token account, but as it new KeyPair for estimation, sender public key\n toPubkey, // Should be Token account, but as recipient token account should be created, recipient public key\n sender.publicKey,\n params.amount.amount().toNumber(),\n ),\n )\n }\n }\n }\n\n if (params.memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: sender.publicKey, isSigner: true, isWritable: true }],\n data: Buffer.from(params.memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (params.priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: params.priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (params.limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: params.limit,\n }),\n )\n }\n\n const fee = (await transaction.getEstimatedFee(this.connection)) || 0\n\n return {\n type: FeeType.FlatFee,\n [FeeOption.Average]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fast]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n [FeeOption.Fastest]: baseAmount(fee + createAccountTxFee, SOL_DECIMALS),\n }\n }\n\n /**\n * Get the transaction details of a given transaction ID.\n *\n * @param {string} txId The transaction ID.\n * @returns {Tx} The transaction details.\n */\n public async getTransactionData(txId: string): Promise<Tx> {\n const transaction = await this.connection.getParsedTransaction(txId)\n if (!transaction) throw Error('Can not find transaction')\n\n return this.parseTransaction(transaction)\n }\n\n public async getTransactions(params?: TxHistoryParams): Promise<TxsPage> {\n const signatures = await this.connection.getSignaturesForAddress(\n new PublicKey(params?.address || (await this.getAddressAsync())),\n )\n\n const transactions = await this.connection.getParsedTransactions(signatures.map(({ signature }) => signature))\n\n const results = await Promise.allSettled(\n transactions\n .filter((transaction) => !!transaction)\n .map((transaction) => this.parseTransaction(transaction as ParsedTransactionWithMeta)),\n )\n\n const txs: Tx[] = []\n\n results.forEach((result) => {\n if (result.status === 'fulfilled') {\n txs.push(result.value)\n }\n })\n\n return {\n txs,\n total: txs.length,\n }\n }\n\n /**\n * Transfers SOL or Solana token\n *\n * @param {TxParams} params The transfer options.\n * @returns {TxHash} The transaction hash.\n */\n public async transfer({\n walletIndex,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams): Promise<string> {\n const senderKeyPair = this.getPrivateKeyPair(walletIndex || 0)\n\n if (asset && !eqAsset(asset, this.getAssetInfo().asset)) {\n // Check if receipt token account is created, otherwise, create it\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n await getOrCreateAssociatedTokenAccount(this.connection, senderKeyPair, mintAddress, new PublicKey(recipient))\n }\n\n const { rawUnsignedTx } = await this.prepareTx({\n sender: senderKeyPair.publicKey.toBase58(),\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n })\n\n const transaction = Transaction.from(bs58.decode(rawUnsignedTx))\n\n transaction.sign(senderKeyPair)\n\n return this.broadcastTx(bs58.encode(transaction.serialize()))\n }\n\n /**\n * Broadcast a transaction to the network\n * @param {string} txHex Raw transaction to broadcast\n * @returns {TxHash} The hash of the transaction broadcasted\n */\n public async broadcastTx(txHex: string): Promise<TxHash> {\n try {\n const transaction = Transaction.from(bs58.decode(txHex))\n return await this.connection.sendRawTransaction(transaction.serialize())\n } catch (e: unknown) {\n if (e instanceof SendTransactionError) {\n console.log(await e.getLogs(this.connection))\n }\n throw Error('Can not broadcast transaction. Unknown error')\n }\n }\n\n /**\n * Prepares a transaction for transfer.\n *\n * @param {TxParams&Address} params - The transfer options.\n * @returns {Promise<PreparedTx>} The raw unsigned transaction.\n */\n public async prepareTx({\n sender,\n recipient,\n asset,\n amount,\n memo,\n limit,\n priorityFee,\n }: TxParams & { sender: Address }): Promise<PreparedTx> {\n const transaction = new Transaction()\n\n const fromPubkey = new PublicKey(sender)\n const toPubkey = new PublicKey(recipient)\n\n transaction.recentBlockhash = await this.connection.getLatestBlockhash().then((block) => block.blockhash)\n transaction.feePayer = new PublicKey(sender)\n\n if (!asset || eqAsset(asset, this.getAssetInfo().asset)) {\n // Native transfer\n transaction.add(\n SystemProgram.transfer({\n fromPubkey,\n toPubkey,\n lamports: amount.amount().toNumber(),\n }),\n )\n } else {\n // Token transfer\n const mintAddress = new PublicKey(getContractAddressFromAsset(asset as TokenAsset))\n\n const fromAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, fromPubkey)\n let fromTokenAccount: Account\n try {\n fromTokenAccount = await getAccount(this.connection, fromAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find sender Token account')\n }\n throw error\n }\n\n const toAssociatedAccount = getAssociatedTokenAddressSync(mintAddress, toPubkey)\n let toTokenAccount: Account\n try {\n toTokenAccount = await getAccount(this.connection, toAssociatedAccount)\n } catch (error) {\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n throw Error('Can not find recipient Token account. Create it first')\n }\n throw error\n }\n\n transaction.add(\n createTransferInstruction(\n fromTokenAccount.address,\n toTokenAccount.address,\n fromPubkey,\n amount.amount().toNumber(),\n ),\n )\n }\n\n if (memo) {\n transaction.add(\n new TransactionInstruction({\n keys: [{ pubkey: fromPubkey, isSigner: true, isWritable: true }],\n data: Buffer.from(memo, 'utf-8'),\n programId: new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n }),\n )\n }\n\n if (priorityFee) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: priorityFee.amount().toNumber() / 10 ** 3,\n }),\n )\n }\n\n if (limit) {\n transaction.add(\n ComputeBudgetProgram.setComputeUnitLimit({\n units: limit,\n }),\n )\n }\n\n return { rawUnsignedTx: bs58.encode(transaction.serialize({ verifySignatures: false })) }\n }\n\n private getPrivateKeyPair(index: number): Keypair {\n if (!this.phrase) throw new Error('Phrase must be provided')\n\n const seed = getSeed(this.phrase)\n const hd = HDKey.fromMasterSeed(seed.toString('hex'))\n\n return Keypair.fromSeed(hd.derive(this.getFullDerivationPath(index)).privateKey)\n }\n\n private async parseTransaction(tx: ParsedTransactionWithMeta): Promise<Tx> {\n const from: TxFrom[] = []\n const to: TxTo[] = []\n\n tx.transaction.message.accountKeys.forEach((accountKey, index) => {\n if (accountKey.writable) {\n const preBalance = tx.meta?.preBalances[index]\n const postBalance = tx.meta?.postBalances[index]\n\n if (preBalance !== undefined && postBalance !== undefined) {\n if (postBalance > preBalance) {\n to.push({\n amount: baseAmount(postBalance - preBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n to: accountKey.pubkey.toBase58(),\n })\n } else if (preBalance > postBalance) {\n from.push({\n amount: baseAmount(preBalance - postBalance, this.getAssetInfo().decimal),\n asset: this.getAssetInfo().asset,\n from: accountKey.pubkey.toBase58(),\n })\n }\n }\n }\n })\n\n // Tokens transfer\n if (tx.meta?.preTokenBalances && tx.meta?.postTokenBalances) {\n for (let i = 0; i < tx.meta?.postTokenBalances.length; i++) {\n const postBalance = tx.meta.postTokenBalances[i]\n\n const preBalance = tx.meta.preTokenBalances.find(\n (preTokenBalance) => preTokenBalance.accountIndex === postBalance.accountIndex,\n )\n\n const postBalanceAmount = postBalance.uiTokenAmount.uiAmount || 0\n const preBalanceAmount = preBalance?.uiTokenAmount.uiAmount || 0\n\n if (preBalance !== null && postBalance !== null) {\n const assetDecimals = tx.meta.postTokenBalances[i].uiTokenAmount.decimals\n const mintAddress = tx.meta.postTokenBalances[i].mint\n const owner = tx.meta.postTokenBalances[i].owner\n\n const tokenMetadata = await fetchDigitalAsset(this.umi, publicKey(mintAddress))\n\n if (owner) {\n if (postBalanceAmount > preBalanceAmount) {\n to.push({\n amount: assetToBase(assetAmount(postBalanceAmount - preBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n to: owner,\n })\n } else if (preBalanceAmount > postBalanceAmount) {\n from.push({\n amount: assetToBase(assetAmount(preBalanceAmount - postBalanceAmount, assetDecimals)),\n asset: assetFromStringEx(`SOL.${tokenMetadata.metadata.symbol.trim()}-${mintAddress}`) as TokenAsset,\n from: owner,\n })\n }\n }\n }\n }\n }\n\n return {\n asset: this.getAssetInfo().asset,\n date: new Date((tx.blockTime || 0) * 1000),\n type: TxType.Transfer,\n hash: tx.transaction.signatures[0],\n from,\n to,\n }\n }\n}\n"],"names":["AssetType","ExplorerProvider","Network","BaseXChainClient","Connection","clusterApiUrl","createUmi","mplTokenMetadata","isAddress","PublicKey","baseAmount","TOKEN_PROGRAM_ID","publicKey","fetchAllDigitalAsset","assetFromStringEx","Keypair","Transaction","eqAsset","SystemProgram","getContractAddressFromAsset","getAssociatedTokenAddressSync","getAccount","createTransferInstruction","TokenAccountNotFoundError","TokenInvalidAccountOwnerError","TransactionInstruction","ComputeBudgetProgram","FeeType","FeeOption","getOrCreateAssociatedTokenAccount","SendTransactionError","getSeed","HDKey","fetchDigitalAsset","assetToBase","assetAmount","TxType"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xchainjs/xchain-solana",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Solana client for XChainJS",
5
5
  "keywords": [
6
6
  "Solana",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "scripts": {
27
27
  "clean": "rm -rf .turbo && rm -rf lib",
28
- "build": "yarn clean && rollup -c",
28
+ "build": "yarn clean && rollup -c --bundleConfigAsCjs",
29
29
  "build:release": "yarn exec rm -rf release && yarn pack && yarn exec \"mkdir release && tar zxvf package.tgz --directory release && rm package.tgz\"",
30
30
  "test": "jest",
31
31
  "e2e": "jest --config jest.config.e2e.js",
@@ -38,9 +38,9 @@
38
38
  "@solana/addresses": "2.0.0-rc.1",
39
39
  "@solana/spl-token": "0.4.8",
40
40
  "@solana/web3.js": "1.95.2",
41
- "@xchainjs/xchain-client": "1.0.5",
42
- "@xchainjs/xchain-crypto": "0.3.4",
43
- "@xchainjs/xchain-util": "1.0.4",
41
+ "@xchainjs/xchain-client": "1.0.6",
42
+ "@xchainjs/xchain-crypto": "0.3.5",
43
+ "@xchainjs/xchain-util": "1.0.5",
44
44
  "bs58": "6.0.0",
45
45
  "micro-ed25519-hdkey": "0.1.2"
46
46
  },