@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
43 lines • 1.99 kB
JavaScript
import { address, createSolanaRpc } 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, config) {
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,
},
},
],
};
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,
};
}
//# sourceMappingURL=inspect.js.map