UNPKG

@robertprp/intents-sdk

Version:

Shogun Network Intent-based cross-chain swaps SDK

51 lines (42 loc) 1.94 kB
import { address, createSolanaRpc, type Base58EncodedBytes } from '@solana/kit'; import { getDefaultSolanaRPC } from './client.js'; import { logger } from '../../utils/logger.js'; /** * Inspect Solana guards to find orders that are currently locked on-chain. * @param userAddress - The user's Solana address * @param config - The Solana RPC configuration * @returns An object containing the Solana guard programs for cross-chain and single-chain orders */ export async function getSolanaOrdersWithLockedFunds(userAddress: string, config?: { rpcUrl?: string }) { const rpc = config?.rpcUrl ? createSolanaRpc(config.rpcUrl) : getDefaultSolanaRPC(); // const singleChainGuardAddress = SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana]; const programAccountAddress = address('43cctGU9QJ4WEPzLoNEvo3TPiv6nMUG9puN2pXQSnB6V'); const programAccountsConfig = { encoding: 'base64', filters: [ { memcmp: { offset: 8n, encoding: 'base58', bytes: userAddress as Base58EncodedBytes, }, }, ], } as Readonly<unknown>; logger.info(`Fetching cross-chain guard programs for user: ${userAddress}`); const crossChainGuardPrograms = await rpc.getProgramAccounts(programAccountAddress, programAccountsConfig).send(); logger.info(`Found ${crossChainGuardPrograms.length} cross-chain guard programs`); // const singleChainGuardPrograms = await rpc.getProgramAccounts(address(singleChainGuardAddress), programAccountsConfig).send(); // const crossChainCodec = getOrderCodec(); // const singleChainCodec = getLimitOrderCodec(); // const base64Encoder = getBase64Encoder(); const crossChainGuardProgramsWithOrders = crossChainGuardPrograms.map(({ pubkey, account }) => { logger.info(`Account data: ${account} and pubkey: ${pubkey}`); return { pubkey, }; }); return { crossChainGuardPrograms: crossChainGuardProgramsWithOrders, }; }