@aurora-is-near/intents-connect-wallet (英语)
链钱包 @aurora-is-near/intents-connect数字 :
存款转账和钱包连接, 每个链条有一个子路径。 。 。 .
从 intents-swap-widget-evm/-solana/-stellar,部件的
useMakeNEARFtTransferCall 钩子,和 intents-swap-widget-standalone 没有
依赖部件 .
为什么子路径
每个链式SDK都是 可选同伴依赖,只能通过其
自己的子路径。 这比听起来更重要: @creit.tech/stellar-wallets-kit
单独安装 ~160M 关闭( 它捆绑了自己的钱包连接, Reown and viem)
复制件),因此,不能进行EVM-唯一的集成来安装.
| 子路径 | 目的 | 可选同伴 |
|---|---|---|
. | 共享传输类型, 无道具 | —— 说 |
./evm | EVM 存款转账 | viem |
./solana | 索拉纳存款转账 | @solana/web3.js, (中文(简体) ), @solana/spl-token |
./stellar | 转接 + decodePublicKey | @stellar/stellar-sdk |
./near | 最近的存款转账 | ——(说明 fetch(中文(简体) ) |
./connect | 模式、预设、协调员 | react, (中文(简体) ), @headlessui/react |
./connect/appkit | EVM + Solana 连接器 | @reown/*, (中文(简体) ), @solana/wallet-adapter-*, (中文(简体) ), viem |
./connect/near | 近距离连接器 | @hot-labs/near-connect |
./connect/stellar | 斯特拉尔连接器 | @creit.tech/stellar-wallets-kit, (中文(简体) ), @stellar/stellar-sdk |
仅安装您使用的东西—— 例如 EVM 和我们的模式 :
yarn add @aurora-is-near/intents-connect @aurora-is-near/intents-connect-wallet \
viem react @headlessui/react @reown/appkit @reown/appkit-adapter-ethers
转账
import { evm } from '@aurora-is-near/intents-connect-wallet/evm';
createExecutionRunner({
api,
wallet,
plugins: { evm },
pluginOptions: { provider: window.ethereum },
});
连接
./connect 实值 连锁不可知: 协调员将连接符作为参数
而不是进口它们,而且模式会做出任何选择.
部件的 useWalletSelector 直接导入所有三个链条,这就是为什么
它永远无法分开.
import {
WalletSelectorModal,
useWalletSelector,
EVM_SOLANA_WALLET_OPTION,
NEAR_WALLET_OPTION,
} from '@aurora-is-near/intents-connect-wallet/connect';
import {
AppKitProvider,
useAppKitConnector,
} from '@aurora-is-near/intents-connect-wallet/connect/appkit';
import { useNearConnector } from '@aurora-is-near/intents-connect-wallet/connect/near';
function Wallets({ children }) {
const evmSolana = useAppKitConnector();
const near = useNearConnector();
const selector = useWalletSelector([evmSolana, near]);
return (
<>
<IntentsConnectProvider api={api} wallet={toWalletConnector(selector)}>
{children}
</IntentsConnectProvider>
<WalletSelectorModal
open={selector.isOpen}
onClose={selector.close}
options={[EVM_SOLANA_WALLET_OPTION, NEAR_WALLET_OPTION]}
onSelect={selector.select}
/>
</>
);
}
将树包入 <AppKitProvider> 使用时 ./connect/appkit。 。 。 .
每个接通器都搭载着跑腿成员(signingStandard, (中文(简体) ),
getPublicKey, (中文(简体) ), getChainId, (中文(简体) ), decodePublicKey, (中文(简体) ), getProviders因此
适应器 intents-connect是因为 WalletConnector 是一个薄的投影
selector.connected数字 :
const toWalletConnector = (selector: WalletSelectorState) => {
const { connected } = selector;
if (!connected?.signingStandard) return null;
return {
id: connected.id,
name: connected.id,
chains: [],
signingStandard: connected.signingStandard,
connect: async () => connected.connect(),
disconnect: async () => connected.disconnect(),
getAddress: () => connected.address,
getPublicKey: connected.getPublicKey,
getChainId: connected.getChainId,
decodePublicKey: connected.decodePublicKey,
getProviders: () => connected.getProviders?.() ?? {},
};
};
连接是 相互排斥: 执行绑定于一个来源
钱包,因为签名标准和中间地址都来自
这个. select() 先断开其他人.
从部件偏移
- AppKit 需要配置而不是部件常数 .
Theme崩溃到themeMode,以及CHAIN_IDS_MAP编号 :DEFAULT_RPCS成为可选rpcOverrides从viem返回到每个链条的公开RPC的地图.projectId现在是一个道具——它默认是Aurora的,但注册你自己的. ethers不见了. 它的进口 一种类型intents-connect已经提供了.- 索拉纳的RPC可塑. 元件硬码构建了 Alchemy URL
从一个
alchemyApiKey; 通过rpcUrl或一个connection换句话说. - NEAR 用途
ft_transfer没有ft_transfer_call, (中文(简体) ), 不吞入用户 拒绝。 见注:src/near/makeTransfer.ts。 。 。 .
索拉纳执行指示
这个 /solana 进入点还编写指令,用于
intents-connect SolanaRecipe。使用具体的中间地址得出
账户; 转换器替代 {INTERMEDIARY} 在账户元数据中.
import {
createSolanaRecipientAta,
prepareSolanaSteps,
} from '@aurora-is-near/intents-connect-wallet/solana';
const recipientAta = createSolanaRecipientAta({ intermediary, recipient, mint });
// Request swap instructions that pay recipientAta.address.
const prepared = prepareSolanaSteps(
[recipientAta.instruction, ...swapInstructions],
{ intermediary, addressLookupTables },
);
// Return prepared from SolanaRecipe.buildSteps.
接收帮助者创建标准 SPL ATA 一能化. 转换器 保存指令字节、账户顺序、重复账户和查询表 命令; 它拒绝外国签名人并省略所提供的计算预算指令 由Connect编辑. 仅供应行动指示,不包括提供者提示和 非现金/收费基础设施。 这些帮助者不执行网络请求或签名.