@framers/agentos-ext-wallet 0.2.0
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/LICENSE +98 -0
- package/dist/AgentWalletManager.d.ts +68 -0
- package/dist/AgentWalletManager.d.ts.map +1 -0
- package/dist/AgentWalletManager.js +238 -0
- package/dist/AgentWalletManager.js.map +1 -0
- package/dist/SpendingPolicyEnforcer.d.ts +33 -0
- package/dist/SpendingPolicyEnforcer.d.ts.map +1 -0
- package/dist/SpendingPolicyEnforcer.js +128 -0
- package/dist/SpendingPolicyEnforcer.js.map +1 -0
- package/dist/cards/CardManager.d.ts +71 -0
- package/dist/cards/CardManager.d.ts.map +1 -0
- package/dist/cards/CardManager.js +212 -0
- package/dist/cards/CardManager.js.map +1 -0
- package/dist/cards/LithicCardAdapter.d.ts +40 -0
- package/dist/cards/LithicCardAdapter.d.ts.map +1 -0
- package/dist/cards/LithicCardAdapter.js +116 -0
- package/dist/cards/LithicCardAdapter.js.map +1 -0
- package/dist/cards/MccCategoryMap.d.ts +36 -0
- package/dist/cards/MccCategoryMap.d.ts.map +1 -0
- package/dist/cards/MccCategoryMap.js +113 -0
- package/dist/cards/MccCategoryMap.js.map +1 -0
- package/dist/cards/types.d.ts +131 -0
- package/dist/cards/types.d.ts.map +1 -0
- package/dist/cards/types.js +12 -0
- package/dist/cards/types.js.map +1 -0
- package/dist/chains/EvmWalletAdapter.d.ts +30 -0
- package/dist/chains/EvmWalletAdapter.d.ts.map +1 -0
- package/dist/chains/EvmWalletAdapter.js +135 -0
- package/dist/chains/EvmWalletAdapter.js.map +1 -0
- package/dist/chains/SolanaWalletAdapter.d.ts +32 -0
- package/dist/chains/SolanaWalletAdapter.d.ts.map +1 -0
- package/dist/chains/SolanaWalletAdapter.js +128 -0
- package/dist/chains/SolanaWalletAdapter.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +228 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/CardSpendingSummaryTool.d.ts +14 -0
- package/dist/tools/CardSpendingSummaryTool.d.ts.map +1 -0
- package/dist/tools/CardSpendingSummaryTool.js +40 -0
- package/dist/tools/CardSpendingSummaryTool.js.map +1 -0
- package/dist/tools/CardStatusTool.d.ts +21 -0
- package/dist/tools/CardStatusTool.d.ts.map +1 -0
- package/dist/tools/CardStatusTool.js +48 -0
- package/dist/tools/CardStatusTool.js.map +1 -0
- package/dist/tools/CheckBalanceTool.d.ts +23 -0
- package/dist/tools/CheckBalanceTool.d.ts.map +1 -0
- package/dist/tools/CheckBalanceTool.js +116 -0
- package/dist/tools/CheckBalanceTool.js.map +1 -0
- package/dist/tools/FreezeCardTool.d.ts +15 -0
- package/dist/tools/FreezeCardTool.d.ts.map +1 -0
- package/dist/tools/FreezeCardTool.js +39 -0
- package/dist/tools/FreezeCardTool.js.map +1 -0
- package/dist/tools/IssueCardTool.d.ts +22 -0
- package/dist/tools/IssueCardTool.d.ts.map +1 -0
- package/dist/tools/IssueCardTool.js +55 -0
- package/dist/tools/IssueCardTool.js.map +1 -0
- package/dist/tools/PayWithCardTool.d.ts +29 -0
- package/dist/tools/PayWithCardTool.d.ts.map +1 -0
- package/dist/tools/PayWithCardTool.js +79 -0
- package/dist/tools/PayWithCardTool.js.map +1 -0
- package/dist/tools/SendCryptoTool.d.ts +33 -0
- package/dist/tools/SendCryptoTool.d.ts.map +1 -0
- package/dist/tools/SendCryptoTool.js +136 -0
- package/dist/tools/SendCryptoTool.js.map +1 -0
- package/dist/tools/UnfreezeCardTool.d.ts +15 -0
- package/dist/tools/UnfreezeCardTool.d.ts.map +1 -0
- package/dist/tools/UnfreezeCardTool.js +39 -0
- package/dist/tools/UnfreezeCardTool.js.map +1 -0
- package/dist/tools/WalletHistoryTool.d.ts +35 -0
- package/dist/tools/WalletHistoryTool.d.ts.map +1 -0
- package/dist/tools/WalletHistoryTool.js +75 -0
- package/dist/tools/WalletHistoryTool.js.map +1 -0
- package/dist/types.d.ts +146 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +29 -0
- package/dist/types.js.map +1 -0
- package/manifest.json +98 -0
- package/package.json +78 -0
- package/src/AgentWalletManager.ts +324 -0
- package/src/SpendingPolicyEnforcer.ts +169 -0
- package/src/cards/CardManager.ts +274 -0
- package/src/cards/LithicCardAdapter.ts +159 -0
- package/src/cards/MccCategoryMap.ts +138 -0
- package/src/cards/types.ts +169 -0
- package/src/chains/EvmWalletAdapter.ts +170 -0
- package/src/chains/SolanaWalletAdapter.ts +184 -0
- package/src/index.ts +315 -0
- package/src/tools/CardSpendingSummaryTool.ts +52 -0
- package/src/tools/CardStatusTool.ts +68 -0
- package/src/tools/CheckBalanceTool.ts +145 -0
- package/src/tools/FreezeCardTool.ts +52 -0
- package/src/tools/IssueCardTool.ts +76 -0
- package/src/tools/PayWithCardTool.ts +109 -0
- package/src/tools/SendCryptoTool.ts +185 -0
- package/src/tools/UnfreezeCardTool.ts +52 -0
- package/src/tools/WalletHistoryTool.ts +113 -0
- package/src/types.ts +230 -0
- package/test/AgentWalletManager.spec.ts +301 -0
- package/test/CardManager.spec.ts +428 -0
- package/test/LithicCardAdapter.spec.ts +224 -0
- package/test/MccCategoryMap.spec.ts +153 -0
- package/test/SpendingPolicyEnforcer.spec.ts +254 -0
- package/test/card-integration.spec.ts +242 -0
- package/test/card-tools.spec.ts +285 -0
- package/test/integration.spec.ts +171 -0
- package/test/wallet-tools.spec.ts +275 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Types for the virtual card subsystem (Lithic integration).
|
|
3
|
+
* @module wallet/cards/types
|
|
4
|
+
*/
|
|
5
|
+
import type { SpendCategory } from '../types.js';
|
|
6
|
+
export type CardType = 'VIRTUAL' | 'PHYSICAL';
|
|
7
|
+
export type CardState = 'OPEN' | 'PAUSED' | 'CLOSED' | 'PENDING_FULFILLMENT';
|
|
8
|
+
export type CardNetwork = 'VISA' | 'MASTERCARD';
|
|
9
|
+
export type CardTxStatus = 'PENDING' | 'SETTLED' | 'DECLINED' | 'VOIDED';
|
|
10
|
+
export type SpendLimitDuration = 'TRANSACTION' | 'MONTHLY' | 'ANNUALLY' | 'FOREVER';
|
|
11
|
+
export interface CardConfig {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
/** Card provider. Only 'lithic' is supported. */
|
|
14
|
+
provider: 'lithic';
|
|
15
|
+
/** Default per-card spending limit in USD. */
|
|
16
|
+
defaultSpendLimitUsd: number;
|
|
17
|
+
/** Whether physical card issuance is allowed. */
|
|
18
|
+
allowPhysical: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const DEFAULT_CARD_CONFIG: CardConfig;
|
|
21
|
+
export interface AgentCardRecord {
|
|
22
|
+
id: string;
|
|
23
|
+
agentId: string;
|
|
24
|
+
/** Lithic's card token identifier. */
|
|
25
|
+
lithicCardToken: string;
|
|
26
|
+
last4: string;
|
|
27
|
+
cardType: CardType;
|
|
28
|
+
state: CardState;
|
|
29
|
+
spendLimitUsd: number;
|
|
30
|
+
spendLimitDuration: SpendLimitDuration;
|
|
31
|
+
network: CardNetwork;
|
|
32
|
+
/** Agent-assigned label for the card. */
|
|
33
|
+
memo?: string;
|
|
34
|
+
createdAt: number;
|
|
35
|
+
}
|
|
36
|
+
export interface CardTransactionRecord {
|
|
37
|
+
id: string;
|
|
38
|
+
/** FK to AgentCardRecord.id */
|
|
39
|
+
cardId: string;
|
|
40
|
+
/** Lithic's transaction token. */
|
|
41
|
+
lithicTxToken: string;
|
|
42
|
+
merchantName?: string;
|
|
43
|
+
/** 4-digit Merchant Category Code. */
|
|
44
|
+
merchantMcc: string;
|
|
45
|
+
/** Resolved spend category. */
|
|
46
|
+
category: SpendCategory;
|
|
47
|
+
amountUsd: number;
|
|
48
|
+
status: CardTxStatus;
|
|
49
|
+
createdAt: number;
|
|
50
|
+
}
|
|
51
|
+
export interface ICardStore {
|
|
52
|
+
getCard(agentId: string): Promise<AgentCardRecord | null>;
|
|
53
|
+
saveCard(record: AgentCardRecord): Promise<void>;
|
|
54
|
+
updateCardState(agentId: string, state: CardState): Promise<void>;
|
|
55
|
+
insertTransaction(record: CardTransactionRecord): Promise<void>;
|
|
56
|
+
updateTransactionStatus(id: string, status: CardTxStatus): Promise<void>;
|
|
57
|
+
getTransactions(cardId: string, limit?: number): Promise<CardTransactionRecord[]>;
|
|
58
|
+
getTransactionsByPeriod(cardId: string, since: number): Promise<CardTransactionRecord[]>;
|
|
59
|
+
}
|
|
60
|
+
export interface CreateCardParams {
|
|
61
|
+
type: CardType;
|
|
62
|
+
memo?: string;
|
|
63
|
+
spend_limit: number;
|
|
64
|
+
spend_limit_duration: SpendLimitDuration;
|
|
65
|
+
state?: CardState;
|
|
66
|
+
}
|
|
67
|
+
export interface UpdateCardParams {
|
|
68
|
+
state?: CardState;
|
|
69
|
+
spend_limit?: number;
|
|
70
|
+
spend_limit_duration?: SpendLimitDuration;
|
|
71
|
+
memo?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface LithicCardResponse {
|
|
74
|
+
token: string;
|
|
75
|
+
last_four: string;
|
|
76
|
+
type: CardType;
|
|
77
|
+
state: CardState;
|
|
78
|
+
spend_limit: number;
|
|
79
|
+
spend_limit_duration: SpendLimitDuration;
|
|
80
|
+
pan?: string;
|
|
81
|
+
cvv?: string;
|
|
82
|
+
exp_month?: string;
|
|
83
|
+
exp_year?: string;
|
|
84
|
+
funding: {
|
|
85
|
+
token: string;
|
|
86
|
+
type: string;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export interface LithicTransaction {
|
|
90
|
+
token: string;
|
|
91
|
+
card_token: string;
|
|
92
|
+
amount: number;
|
|
93
|
+
merchant: {
|
|
94
|
+
descriptor: string;
|
|
95
|
+
mcc: string;
|
|
96
|
+
city?: string;
|
|
97
|
+
state?: string;
|
|
98
|
+
country?: string;
|
|
99
|
+
};
|
|
100
|
+
status: 'PENDING' | 'SETTLED' | 'DECLINED' | 'VOIDED';
|
|
101
|
+
created: string;
|
|
102
|
+
}
|
|
103
|
+
export interface ListTxOpts {
|
|
104
|
+
begin?: string;
|
|
105
|
+
end?: string;
|
|
106
|
+
page_size?: number;
|
|
107
|
+
}
|
|
108
|
+
export interface AuthRuleParams {
|
|
109
|
+
allowed_mcc?: string[];
|
|
110
|
+
blocked_mcc?: string[];
|
|
111
|
+
}
|
|
112
|
+
export interface ICardAdapter {
|
|
113
|
+
createCard(params: CreateCardParams): Promise<LithicCardResponse>;
|
|
114
|
+
getCard(cardToken: string): Promise<LithicCardResponse>;
|
|
115
|
+
updateCard(cardToken: string, updates: UpdateCardParams): Promise<LithicCardResponse>;
|
|
116
|
+
pauseCard(cardToken: string): Promise<void>;
|
|
117
|
+
resumeCard(cardToken: string): Promise<void>;
|
|
118
|
+
closeCard(cardToken: string): Promise<void>;
|
|
119
|
+
listTransactions(cardToken: string, opts?: ListTxOpts): Promise<LithicTransaction[]>;
|
|
120
|
+
createAuthRule(cardToken: string, rule: AuthRuleParams): Promise<void>;
|
|
121
|
+
}
|
|
122
|
+
export interface SpendingSummary {
|
|
123
|
+
totalUsd: number;
|
|
124
|
+
period: 'day' | 'month';
|
|
125
|
+
byCategory: Array<{
|
|
126
|
+
category: SpendCategory;
|
|
127
|
+
amountUsd: number;
|
|
128
|
+
}>;
|
|
129
|
+
transactionCount: number;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cards/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Types for the virtual card subsystem (Lithic integration).
|
|
4
|
+
* @module wallet/cards/types
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_CARD_CONFIG = {
|
|
7
|
+
enabled: false,
|
|
8
|
+
provider: 'lithic',
|
|
9
|
+
defaultSpendLimitUsd: 500,
|
|
10
|
+
allowPhysical: false,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cards/types.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;GAGG;AA4BH,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,GAAG;IACzB,aAAa,EAAE,KAAK;CACrB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EVM chain adapter for the Agent Personal Wallet.
|
|
3
|
+
*
|
|
4
|
+
* Supports Ethereum, Base, and Polygon via ethers.js v6 (dynamic import).
|
|
5
|
+
*
|
|
6
|
+
* @module wunderland/wallet/chains/EvmWalletAdapter
|
|
7
|
+
*/
|
|
8
|
+
import type { ChainId, IChainWalletAdapter, WalletTxStatus } from '../types.js';
|
|
9
|
+
/** Well-known ERC-20 addresses per chain. */
|
|
10
|
+
export declare const KNOWN_TOKENS: Record<string, Record<string, string>>;
|
|
11
|
+
export interface EvmWalletAdapterOptions {
|
|
12
|
+
chain: ChainId;
|
|
13
|
+
rpcUrl?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class EvmWalletAdapter implements IChainWalletAdapter {
|
|
16
|
+
readonly chain: ChainId;
|
|
17
|
+
private rpcUrl;
|
|
18
|
+
constructor(opts: EvmWalletAdapterOptions);
|
|
19
|
+
generateKeypair(): Promise<{
|
|
20
|
+
publicKey: string;
|
|
21
|
+
secretKey: Uint8Array;
|
|
22
|
+
}>;
|
|
23
|
+
getBalance(address: string): Promise<bigint>;
|
|
24
|
+
getTokenBalance(address: string, tokenAddress: string): Promise<bigint>;
|
|
25
|
+
signTransfer(secretKey: Uint8Array, to: string, amountRaw: bigint): Promise<Uint8Array>;
|
|
26
|
+
signTokenTransfer(secretKey: Uint8Array, to: string, tokenAddress: string, amountRaw: bigint): Promise<Uint8Array>;
|
|
27
|
+
broadcast(signedTx: Uint8Array): Promise<string>;
|
|
28
|
+
getTransactionStatus(txHash: string): Promise<WalletTxStatus>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=EvmWalletAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmWalletAdapter.d.ts","sourceRoot":"","sources":["../../src/chains/EvmWalletAdapter.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2BhF,6CAA6C;AAC7C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa/D,CAAC;AASF,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,gBAAiB,YAAW,mBAAmB;IAC1D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,uBAAuB;IAKnC,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;IAYxE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvE,YAAY,CAChB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAchB,iBAAiB,CACrB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAYhB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CASpE"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview EVM chain adapter for the Agent Personal Wallet.
|
|
4
|
+
*
|
|
5
|
+
* Supports Ethereum, Base, and Polygon via ethers.js v6 (dynamic import).
|
|
6
|
+
*
|
|
7
|
+
* @module wunderland/wallet/chains/EvmWalletAdapter
|
|
8
|
+
*/
|
|
9
|
+
// Lazily resolved ethers module (dynamic import — not a hard dependency)
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
let _ethers = null;
|
|
12
|
+
async function getEthers() {
|
|
13
|
+
if (!_ethers) {
|
|
14
|
+
try {
|
|
15
|
+
_ethers = await import('ethers');
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new Error('Missing dependency: ethers is required for EVM wallet support. '
|
|
19
|
+
+ 'Install it with: npm install ethers');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return _ethers;
|
|
23
|
+
}
|
|
24
|
+
/** Default RPC endpoints per chain. */
|
|
25
|
+
const DEFAULT_RPC = {
|
|
26
|
+
ethereum: 'https://eth.llamarpc.com',
|
|
27
|
+
base: 'https://mainnet.base.org',
|
|
28
|
+
polygon: 'https://polygon-rpc.com',
|
|
29
|
+
};
|
|
30
|
+
/** Well-known ERC-20 addresses per chain. */
|
|
31
|
+
export const KNOWN_TOKENS = {
|
|
32
|
+
ethereum: {
|
|
33
|
+
USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
34
|
+
USDT: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
|
35
|
+
},
|
|
36
|
+
base: {
|
|
37
|
+
USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
38
|
+
USDT: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2',
|
|
39
|
+
},
|
|
40
|
+
polygon: {
|
|
41
|
+
USDC: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
|
|
42
|
+
USDT: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
/** Minimal ERC-20 ABI for balance + transfer. */
|
|
46
|
+
const ERC20_ABI = [
|
|
47
|
+
'function balanceOf(address owner) view returns (uint256)',
|
|
48
|
+
'function transfer(address to, uint256 amount) returns (bool)',
|
|
49
|
+
'function decimals() view returns (uint8)',
|
|
50
|
+
];
|
|
51
|
+
export class EvmWalletAdapter {
|
|
52
|
+
chain;
|
|
53
|
+
rpcUrl;
|
|
54
|
+
constructor(opts) {
|
|
55
|
+
this.chain = opts.chain;
|
|
56
|
+
this.rpcUrl = opts.rpcUrl || DEFAULT_RPC[opts.chain] || DEFAULT_RPC.ethereum;
|
|
57
|
+
}
|
|
58
|
+
async generateKeypair() {
|
|
59
|
+
const { Wallet } = await getEthers();
|
|
60
|
+
const wallet = Wallet.createRandom();
|
|
61
|
+
// ethers v6 returns hex private key — convert to Uint8Array
|
|
62
|
+
const privKeyHex = wallet.privateKey.slice(2); // remove 0x
|
|
63
|
+
const secretKey = hexToBytes(privKeyHex);
|
|
64
|
+
return {
|
|
65
|
+
publicKey: wallet.address,
|
|
66
|
+
secretKey,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async getBalance(address) {
|
|
70
|
+
const { JsonRpcProvider } = await getEthers();
|
|
71
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
72
|
+
return await provider.getBalance(address);
|
|
73
|
+
}
|
|
74
|
+
async getTokenBalance(address, tokenAddress) {
|
|
75
|
+
const { JsonRpcProvider, Contract } = await getEthers();
|
|
76
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
77
|
+
const contract = new Contract(tokenAddress, ERC20_ABI, provider);
|
|
78
|
+
const balance = await contract.balanceOf(address);
|
|
79
|
+
return balance;
|
|
80
|
+
}
|
|
81
|
+
async signTransfer(secretKey, to, amountRaw) {
|
|
82
|
+
const { JsonRpcProvider, Wallet } = await getEthers();
|
|
83
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
84
|
+
const wallet = new Wallet(bytesToHex(secretKey), provider);
|
|
85
|
+
const tx = await wallet.populateTransaction({
|
|
86
|
+
to,
|
|
87
|
+
value: amountRaw,
|
|
88
|
+
});
|
|
89
|
+
const signed = await wallet.signTransaction(tx);
|
|
90
|
+
return hexToBytes(signed.slice(2));
|
|
91
|
+
}
|
|
92
|
+
async signTokenTransfer(secretKey, to, tokenAddress, amountRaw) {
|
|
93
|
+
const { JsonRpcProvider, Wallet, Contract } = await getEthers();
|
|
94
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
95
|
+
const wallet = new Wallet(bytesToHex(secretKey), provider);
|
|
96
|
+
const contract = new Contract(tokenAddress, ERC20_ABI, wallet);
|
|
97
|
+
const tx = await contract.transfer.populateTransaction(to, amountRaw);
|
|
98
|
+
const populated = await wallet.populateTransaction(tx);
|
|
99
|
+
const signed = await wallet.signTransaction(populated);
|
|
100
|
+
return hexToBytes(signed.slice(2));
|
|
101
|
+
}
|
|
102
|
+
async broadcast(signedTx) {
|
|
103
|
+
const { JsonRpcProvider } = await getEthers();
|
|
104
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
105
|
+
const txResponse = await provider.broadcastTransaction('0x' + bytesToHex(signedTx));
|
|
106
|
+
await txResponse.wait(1);
|
|
107
|
+
return txResponse.hash;
|
|
108
|
+
}
|
|
109
|
+
async getTransactionStatus(txHash) {
|
|
110
|
+
const { JsonRpcProvider } = await getEthers();
|
|
111
|
+
const provider = new JsonRpcProvider(this.rpcUrl);
|
|
112
|
+
const receipt = await provider.getTransactionReceipt(txHash);
|
|
113
|
+
if (!receipt)
|
|
114
|
+
return 'pending';
|
|
115
|
+
if (receipt.status === 1)
|
|
116
|
+
return 'confirmed';
|
|
117
|
+
return 'failed';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Hex <-> bytes helpers
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
function hexToBytes(hex) {
|
|
124
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
125
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
126
|
+
bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
|
|
127
|
+
}
|
|
128
|
+
return bytes;
|
|
129
|
+
}
|
|
130
|
+
function bytesToHex(bytes) {
|
|
131
|
+
return Array.from(bytes)
|
|
132
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
133
|
+
.join('');
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=EvmWalletAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmWalletAdapter.js","sourceRoot":"","sources":["../../src/chains/EvmWalletAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Solana chain adapter for the Agent Personal Wallet.
|
|
3
|
+
*
|
|
4
|
+
* Uses dynamic imports for @solana/web3.js so it remains an optional dependency.
|
|
5
|
+
* Patterns derived from the existing SolanaProvider in anchor-providers.
|
|
6
|
+
*
|
|
7
|
+
* @module wunderland/wallet/chains/SolanaWalletAdapter
|
|
8
|
+
*/
|
|
9
|
+
import type { IChainWalletAdapter, WalletTxStatus } from '../types.js';
|
|
10
|
+
export interface SolanaWalletAdapterOptions {
|
|
11
|
+
/** RPC endpoint URL. Defaults to mainnet-beta. */
|
|
12
|
+
rpcUrl?: string;
|
|
13
|
+
/** Commitment level for queries. */
|
|
14
|
+
commitment?: 'processed' | 'confirmed' | 'finalized';
|
|
15
|
+
}
|
|
16
|
+
export declare class SolanaWalletAdapter implements IChainWalletAdapter {
|
|
17
|
+
readonly chain: "solana";
|
|
18
|
+
private rpcUrl;
|
|
19
|
+
private commitment;
|
|
20
|
+
constructor(opts?: SolanaWalletAdapterOptions);
|
|
21
|
+
generateKeypair(): Promise<{
|
|
22
|
+
publicKey: string;
|
|
23
|
+
secretKey: Uint8Array;
|
|
24
|
+
}>;
|
|
25
|
+
getBalance(address: string): Promise<bigint>;
|
|
26
|
+
getTokenBalance(address: string, tokenMint: string): Promise<bigint>;
|
|
27
|
+
signTransfer(secretKey: Uint8Array, to: string, amountRaw: bigint): Promise<Uint8Array>;
|
|
28
|
+
signTokenTransfer(secretKey: Uint8Array, to: string, tokenMint: string, amountRaw: bigint): Promise<Uint8Array>;
|
|
29
|
+
broadcast(signedTx: Uint8Array): Promise<string>;
|
|
30
|
+
getTransactionStatus(txHash: string): Promise<WalletTxStatus>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=SolanaWalletAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolanaWalletAdapter.d.ts","sourceRoot":"","sources":["../../src/chains/SolanaWalletAdapter.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmBvE,MAAM,WAAW,0BAA0B;IACzC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;CACtD;AAED,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,QAAQ,CAAC,KAAK,EAAG,QAAQ,CAAU;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAA0C;gBAEhD,IAAI,GAAE,0BAA+B;IAK3C,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;IASxE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAepE,YAAY,CAChB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAoBhB,iBAAiB,CACrB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAqDhB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAYpE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Solana chain adapter for the Agent Personal Wallet.
|
|
4
|
+
*
|
|
5
|
+
* Uses dynamic imports for @solana/web3.js so it remains an optional dependency.
|
|
6
|
+
* Patterns derived from the existing SolanaProvider in anchor-providers.
|
|
7
|
+
*
|
|
8
|
+
* @module wunderland/wallet/chains/SolanaWalletAdapter
|
|
9
|
+
*/
|
|
10
|
+
// Lazily resolved modules
|
|
11
|
+
let _web3 = null;
|
|
12
|
+
async function getWeb3() {
|
|
13
|
+
if (!_web3) {
|
|
14
|
+
try {
|
|
15
|
+
_web3 = await import('@solana/web3.js');
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new Error('Missing dependency: @solana/web3.js is required for Solana wallet support. '
|
|
19
|
+
+ 'Install it with: npm install @solana/web3.js');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return _web3;
|
|
23
|
+
}
|
|
24
|
+
export class SolanaWalletAdapter {
|
|
25
|
+
chain = 'solana';
|
|
26
|
+
rpcUrl;
|
|
27
|
+
commitment;
|
|
28
|
+
constructor(opts = {}) {
|
|
29
|
+
this.rpcUrl = opts.rpcUrl || 'https://api.mainnet-beta.solana.com';
|
|
30
|
+
this.commitment = opts.commitment || 'confirmed';
|
|
31
|
+
}
|
|
32
|
+
async generateKeypair() {
|
|
33
|
+
const { Keypair } = await getWeb3();
|
|
34
|
+
const kp = Keypair.generate();
|
|
35
|
+
return {
|
|
36
|
+
publicKey: kp.publicKey.toBase58(),
|
|
37
|
+
secretKey: kp.secretKey,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async getBalance(address) {
|
|
41
|
+
const { Connection, PublicKey } = await getWeb3();
|
|
42
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
43
|
+
const lamports = await conn.getBalance(new PublicKey(address));
|
|
44
|
+
return BigInt(lamports);
|
|
45
|
+
}
|
|
46
|
+
async getTokenBalance(address, tokenMint) {
|
|
47
|
+
const { Connection, PublicKey } = await getWeb3();
|
|
48
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
49
|
+
const ownerPk = new PublicKey(address);
|
|
50
|
+
const mintPk = new PublicKey(tokenMint);
|
|
51
|
+
// Find the associated token account
|
|
52
|
+
const accounts = await conn.getTokenAccountsByOwner(ownerPk, { mint: mintPk });
|
|
53
|
+
if (accounts.value.length === 0)
|
|
54
|
+
return 0n;
|
|
55
|
+
// Parse account data to get amount
|
|
56
|
+
const info = await conn.getTokenAccountBalance(accounts.value[0].pubkey);
|
|
57
|
+
return BigInt(info.value.amount);
|
|
58
|
+
}
|
|
59
|
+
async signTransfer(secretKey, to, amountRaw) {
|
|
60
|
+
const { Keypair, PublicKey, SystemProgram, Transaction, Connection } = await getWeb3();
|
|
61
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
62
|
+
const signer = Keypair.fromSecretKey(secretKey);
|
|
63
|
+
const tx = new Transaction().add(SystemProgram.transfer({
|
|
64
|
+
fromPubkey: signer.publicKey,
|
|
65
|
+
toPubkey: new PublicKey(to),
|
|
66
|
+
lamports: Number(amountRaw),
|
|
67
|
+
}));
|
|
68
|
+
tx.feePayer = signer.publicKey;
|
|
69
|
+
tx.recentBlockhash = (await conn.getLatestBlockhash()).blockhash;
|
|
70
|
+
tx.sign(signer);
|
|
71
|
+
return tx.serialize();
|
|
72
|
+
}
|
|
73
|
+
async signTokenTransfer(secretKey, to, tokenMint, amountRaw) {
|
|
74
|
+
// SPL token transfers require @solana/spl-token — use dynamic import
|
|
75
|
+
const { Keypair, PublicKey, Transaction, Connection } = await getWeb3();
|
|
76
|
+
let splToken;
|
|
77
|
+
try {
|
|
78
|
+
splToken = await import('@solana/spl-token');
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
throw new Error('Missing dependency: @solana/spl-token is required for SPL token transfers. '
|
|
82
|
+
+ 'Install it with: npm install @solana/spl-token');
|
|
83
|
+
}
|
|
84
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
85
|
+
const signer = Keypair.fromSecretKey(secretKey);
|
|
86
|
+
const mintPk = new PublicKey(tokenMint);
|
|
87
|
+
const destPk = new PublicKey(to);
|
|
88
|
+
// Get or create associated token accounts
|
|
89
|
+
const sourceAta = splToken.getAssociatedTokenAddressSync(mintPk, signer.publicKey);
|
|
90
|
+
const destAta = splToken.getAssociatedTokenAddressSync(mintPk, destPk);
|
|
91
|
+
const tx = new Transaction();
|
|
92
|
+
// Create destination ATA if it doesn't exist
|
|
93
|
+
const destAccount = await conn.getAccountInfo(destAta);
|
|
94
|
+
if (!destAccount) {
|
|
95
|
+
tx.add(splToken.createAssociatedTokenAccountInstruction(signer.publicKey, destAta, destPk, mintPk));
|
|
96
|
+
}
|
|
97
|
+
tx.add(splToken.createTransferInstruction(sourceAta, destAta, signer.publicKey, Number(amountRaw)));
|
|
98
|
+
tx.feePayer = signer.publicKey;
|
|
99
|
+
tx.recentBlockhash = (await conn.getLatestBlockhash()).blockhash;
|
|
100
|
+
tx.sign(signer);
|
|
101
|
+
return tx.serialize();
|
|
102
|
+
}
|
|
103
|
+
async broadcast(signedTx) {
|
|
104
|
+
const { Connection } = await getWeb3();
|
|
105
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
106
|
+
const sig = await conn.sendRawTransaction(signedTx, {
|
|
107
|
+
skipPreflight: false,
|
|
108
|
+
preflightCommitment: this.commitment,
|
|
109
|
+
});
|
|
110
|
+
// Wait for confirmation
|
|
111
|
+
await conn.confirmTransaction(sig, this.commitment);
|
|
112
|
+
return sig;
|
|
113
|
+
}
|
|
114
|
+
async getTransactionStatus(txHash) {
|
|
115
|
+
const { Connection } = await getWeb3();
|
|
116
|
+
const conn = new Connection(this.rpcUrl, this.commitment);
|
|
117
|
+
const status = await conn.getSignatureStatus(txHash);
|
|
118
|
+
if (!status.value)
|
|
119
|
+
return 'pending';
|
|
120
|
+
if (status.value.err)
|
|
121
|
+
return 'failed';
|
|
122
|
+
if (status.value.confirmationStatus === 'finalized' || status.value.confirmationStatus === 'confirmed') {
|
|
123
|
+
return 'confirmed';
|
|
124
|
+
}
|
|
125
|
+
return 'pending';
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=SolanaWalletAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolanaWalletAdapter.js","sourceRoot":"","sources":["../../src/chains/SolanaWalletAdapter.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;GAOG;AAIH,0BAA0B;AAC1B,IAAI,KAAK,GAA4C,IAAI,CAAC;AAE1D,KAAK,UAAU,OAAO;IACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6EAA6E;kBAC3E,8CAA8C,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD,MAAM,OAAO,mBAAmB;IACrB,KAAK,GAAG,QAAiB,CAAC;IAC3B,MAAM,CAAS;IACf,UAAU,CAA0C;IAE5D,YAAY,OAAmC,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,qCAAqC,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,EAAE,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe,EAAE,SAAiB;QACtD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAExC,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3C,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,SAAqB,EACrB,EAAU,EACV,SAAiB;QAEjB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAC9B,aAAa,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,QAAQ,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;YAC3B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;SAC5B,CAAC,CACH,CAAC;QAEF,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAC/B,EAAE,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC;QACjE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,SAAqB,EACrB,EAAU,EACV,SAAiB,EACjB,SAAiB;QAEjB,qEAAqE;QACrE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACxE,IAAI,QAAa,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,MAAM,CAAC,mBAA6B,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6EAA6E;kBAC3E,gDAAgD,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAEjC,0CAA0C;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,QAAQ,CAAC,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEvE,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAE7B,6CAA6C;QAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,EAAE,CAAC,GAAG,CACJ,QAAQ,CAAC,uCAAuC,CAC9C,MAAM,CAAC,SAAS,EAChB,OAAO,EACP,MAAM,EACN,MAAM,CACP,CACF,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,GAAG,CACJ,QAAQ,CAAC,yBAAyB,CAChC,SAAS,EACT,OAAO,EACP,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CAAC,CAClB,CACF,CAAC;QAEF,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAC/B,EAAE,CAAC,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC;QACjE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAoB;QAClC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YAClD,aAAa,EAAE,KAAK;YACpB,mBAAmB,EAAE,IAAI,CAAC,UAAU;SACrC,CAAC,CAAC;QACH,wBAAwB;QACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACvC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG;YAAE,OAAO,QAAQ,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,WAAW,EAAE,CAAC;YACvG,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Agent Personal Wallet Extension Pack.
|
|
3
|
+
*
|
|
4
|
+
* Provides autonomous crypto spending tools with configurable guardrails:
|
|
5
|
+
* - check_wallet_balance — query balances across Solana/EVM chains
|
|
6
|
+
* - send_crypto — send with spending policy enforcement
|
|
7
|
+
* - wallet_transaction_history — view recent transactions
|
|
8
|
+
*
|
|
9
|
+
* @module @framers/agentos-ext-wallet
|
|
10
|
+
*/
|
|
11
|
+
export interface ExtensionContext {
|
|
12
|
+
options?: Record<string, unknown>;
|
|
13
|
+
secrets?: Record<string, string>;
|
|
14
|
+
getSecret?: (key: string) => string | undefined;
|
|
15
|
+
logger?: {
|
|
16
|
+
info: (msg: string) => void;
|
|
17
|
+
warn?: (msg: string) => void;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface ExtensionPack {
|
|
21
|
+
name: string;
|
|
22
|
+
version: string;
|
|
23
|
+
descriptors: Array<{
|
|
24
|
+
id: string;
|
|
25
|
+
kind: string;
|
|
26
|
+
priority?: number;
|
|
27
|
+
payload: unknown;
|
|
28
|
+
}>;
|
|
29
|
+
onActivate?: () => Promise<void>;
|
|
30
|
+
onDeactivate?: () => Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare function createExtensionPack(context: ExtensionContext): ExtensionPack;
|
|
33
|
+
export { AgentWalletManager, ApprovalRequiredError, SpendingPolicyViolation } from './AgentWalletManager.js';
|
|
34
|
+
export type { AgentWalletManagerOptions, IWalletStore } from './AgentWalletManager.js';
|
|
35
|
+
export { SpendingPolicyEnforcer } from './SpendingPolicyEnforcer.js';
|
|
36
|
+
export type { ISpendingLedgerStore } from './SpendingPolicyEnforcer.js';
|
|
37
|
+
export type { AgentWalletRecord, CategoryBudget, ChainId, IChainWalletAdapter, SpendCategory, SpendCheckResult, SpendingLedgerEntry, SpendingPolicyConfig, TokenInfo, TokenSymbol, WalletConfig, WalletDirection, WalletTransactionRecord, WalletTxStatus, } from './types.js';
|
|
38
|
+
export { DEFAULT_SPENDING_POLICY, DEFAULT_WALLET_CONFIG } from './types.js';
|
|
39
|
+
export { SolanaWalletAdapter } from './chains/SolanaWalletAdapter.js';
|
|
40
|
+
export type { SolanaWalletAdapterOptions } from './chains/SolanaWalletAdapter.js';
|
|
41
|
+
export { EvmWalletAdapter, KNOWN_TOKENS } from './chains/EvmWalletAdapter.js';
|
|
42
|
+
export type { EvmWalletAdapterOptions } from './chains/EvmWalletAdapter.js';
|
|
43
|
+
export { createCheckBalanceTool } from './tools/CheckBalanceTool.js';
|
|
44
|
+
export { createSendCryptoTool } from './tools/SendCryptoTool.js';
|
|
45
|
+
export { createWalletHistoryTool } from './tools/WalletHistoryTool.js';
|
|
46
|
+
export { createIssueCardTool } from './tools/IssueCardTool.js';
|
|
47
|
+
export { createCardStatusTool } from './tools/CardStatusTool.js';
|
|
48
|
+
export { createFreezeCardTool } from './tools/FreezeCardTool.js';
|
|
49
|
+
export { createUnfreezeCardTool } from './tools/UnfreezeCardTool.js';
|
|
50
|
+
export { createCardSpendingSummaryTool } from './tools/CardSpendingSummaryTool.js';
|
|
51
|
+
export { createPayWithCardTool } from './tools/PayWithCardTool.js';
|
|
52
|
+
export { CardManager } from './cards/CardManager.js';
|
|
53
|
+
export type { CardManagerOptions } from './cards/CardManager.js';
|
|
54
|
+
export { CardSpendingBlockedError } from './cards/CardManager.js';
|
|
55
|
+
export { LithicCardAdapter, LithicApiError } from './cards/LithicCardAdapter.js';
|
|
56
|
+
export type { LithicCardAdapterOptions } from './cards/LithicCardAdapter.js';
|
|
57
|
+
export { MccCategoryMap } from './cards/MccCategoryMap.js';
|
|
58
|
+
export type { AgentCardRecord, CardConfig, CardTransactionRecord, CardTxStatus, CardState, CardType, CardNetwork, ICardAdapter, ICardStore, LithicCardResponse, LithicTransaction, SpendingSummary, SpendLimitDuration, } from './cards/types.js';
|
|
59
|
+
export { DEFAULT_CARD_CONFIG } from './cards/types.js';
|
|
60
|
+
export default createExtensionPack;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|