@virtuals-protocol/acp-node-v2 0.0.1
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/README.md +453 -0
- package/dist/acpAgent.d.ts +103 -0
- package/dist/acpAgent.d.ts.map +1 -0
- package/dist/acpAgent.js +423 -0
- package/dist/acpAgent.js.map +1 -0
- package/dist/acpJob.d.ts +35 -0
- package/dist/acpJob.d.ts.map +1 -0
- package/dist/acpJob.js +62 -0
- package/dist/acpJob.js.map +1 -0
- package/dist/clientFactory.d.ts +10 -0
- package/dist/clientFactory.d.ts.map +1 -0
- package/dist/clientFactory.js +28 -0
- package/dist/clientFactory.js.map +1 -0
- package/dist/clients/baseAcpClient.d.ts +43 -0
- package/dist/clients/baseAcpClient.d.ts.map +1 -0
- package/dist/clients/baseAcpClient.js +40 -0
- package/dist/clients/baseAcpClient.js.map +1 -0
- package/dist/clients/evmAcpClient.d.ts +33 -0
- package/dist/clients/evmAcpClient.d.ts.map +1 -0
- package/dist/clients/evmAcpClient.js +164 -0
- package/dist/clients/evmAcpClient.js.map +1 -0
- package/dist/clients/solanaAcpClient.d.ts +29 -0
- package/dist/clients/solanaAcpClient.d.ts.map +1 -0
- package/dist/clients/solanaAcpClient.js +102 -0
- package/dist/clients/solanaAcpClient.js.map +1 -0
- package/dist/core/acpAbi.d.ts +944 -0
- package/dist/core/acpAbi.d.ts.map +1 -0
- package/dist/core/acpAbi.js +750 -0
- package/dist/core/acpAbi.js.map +1 -0
- package/dist/core/assetToken.d.ts +16 -0
- package/dist/core/assetToken.d.ts.map +1 -0
- package/dist/core/assetToken.js +50 -0
- package/dist/core/assetToken.js.map +1 -0
- package/dist/core/chains.d.ts +36 -0
- package/dist/core/chains.d.ts.map +1 -0
- package/dist/core/chains.js +49 -0
- package/dist/core/chains.js.map +1 -0
- package/dist/core/constants.d.ts +25 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +56 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/fundTransferHookAbi.d.ts +464 -0
- package/dist/core/fundTransferHookAbi.d.ts.map +1 -0
- package/dist/core/fundTransferHookAbi.js +347 -0
- package/dist/core/fundTransferHookAbi.js.map +1 -0
- package/dist/core/operations.d.ts +72 -0
- package/dist/core/operations.d.ts.map +1 -0
- package/dist/core/operations.js +2 -0
- package/dist/core/operations.js.map +1 -0
- package/dist/events/acpApiClient.d.ts +11 -0
- package/dist/events/acpApiClient.d.ts.map +1 -0
- package/dist/events/acpApiClient.js +57 -0
- package/dist/events/acpApiClient.js.map +1 -0
- package/dist/events/acpHttpClient.d.ts +18 -0
- package/dist/events/acpHttpClient.d.ts.map +1 -0
- package/dist/events/acpHttpClient.js +78 -0
- package/dist/events/acpHttpClient.js.map +1 -0
- package/dist/events/socketTransport.d.ts +18 -0
- package/dist/events/socketTransport.d.ts.map +1 -0
- package/dist/events/socketTransport.js +117 -0
- package/dist/events/socketTransport.js.map +1 -0
- package/dist/events/sseTransport.d.ts +17 -0
- package/dist/events/sseTransport.d.ts.map +1 -0
- package/dist/events/sseTransport.js +101 -0
- package/dist/events/sseTransport.js.map +1 -0
- package/dist/events/types.d.ts +197 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +13 -0
- package/dist/events/types.js.map +1 -0
- package/dist/examples/buyer-fund.d.ts +2 -0
- package/dist/examples/buyer-fund.d.ts.map +1 -0
- package/dist/examples/buyer-fund.js +51 -0
- package/dist/examples/buyer-fund.js.map +1 -0
- package/dist/examples/buyer-llm.d.ts +2 -0
- package/dist/examples/buyer-llm.d.ts.map +1 -0
- package/dist/examples/buyer-llm.js +92 -0
- package/dist/examples/buyer-llm.js.map +1 -0
- package/dist/examples/buyer.d.ts +2 -0
- package/dist/examples/buyer.d.ts.map +1 -0
- package/dist/examples/buyer.js +66 -0
- package/dist/examples/buyer.js.map +1 -0
- package/dist/examples/seller-fund.d.ts +2 -0
- package/dist/examples/seller-fund.d.ts.map +1 -0
- package/dist/examples/seller-fund.js +48 -0
- package/dist/examples/seller-fund.js.map +1 -0
- package/dist/examples/seller-llm.d.ts +2 -0
- package/dist/examples/seller-llm.d.ts.map +1 -0
- package/dist/examples/seller-llm.js +85 -0
- package/dist/examples/seller-llm.js.map +1 -0
- package/dist/examples/seller.d.ts +2 -0
- package/dist/examples/seller.d.ts.map +1 -0
- package/dist/examples/seller.js +50 -0
- package/dist/examples/seller.js.map +1 -0
- package/dist/examples-local/buyer-fund.d.ts +2 -0
- package/dist/examples-local/buyer-fund.d.ts.map +1 -0
- package/dist/examples-local/buyer-fund.js +69 -0
- package/dist/examples-local/buyer-fund.js.map +1 -0
- package/dist/examples-local/buyer-llm.d.ts +2 -0
- package/dist/examples-local/buyer-llm.d.ts.map +1 -0
- package/dist/examples-local/buyer-llm.js +112 -0
- package/dist/examples-local/buyer-llm.js.map +1 -0
- package/dist/examples-local/buyer-search.d.ts +2 -0
- package/dist/examples-local/buyer-search.d.ts.map +1 -0
- package/dist/examples-local/buyer-search.js +72 -0
- package/dist/examples-local/buyer-search.js.map +1 -0
- package/dist/examples-local/buyer.d.ts +2 -0
- package/dist/examples-local/buyer.d.ts.map +1 -0
- package/dist/examples-local/buyer.js +65 -0
- package/dist/examples-local/buyer.js.map +1 -0
- package/dist/examples-local/seller-dumb.d.ts +2 -0
- package/dist/examples-local/seller-dumb.d.ts.map +1 -0
- package/dist/examples-local/seller-dumb.js +42 -0
- package/dist/examples-local/seller-dumb.js.map +1 -0
- package/dist/examples-local/seller-fund.d.ts +2 -0
- package/dist/examples-local/seller-fund.d.ts.map +1 -0
- package/dist/examples-local/seller-fund.js +46 -0
- package/dist/examples-local/seller-fund.js.map +1 -0
- package/dist/examples-local/seller-llm.d.ts +2 -0
- package/dist/examples-local/seller-llm.d.ts.map +1 -0
- package/dist/examples-local/seller-llm.js +84 -0
- package/dist/examples-local/seller-llm.js.map +1 -0
- package/dist/examples-local/seller.d.ts +2 -0
- package/dist/examples-local/seller.d.ts.map +1 -0
- package/dist/examples-local/seller.js +50 -0
- package/dist/examples-local/seller.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/jobSession.d.ts +37 -0
- package/dist/jobSession.d.ts.map +1 -0
- package/dist/jobSession.js +370 -0
- package/dist/jobSession.js.map +1 -0
- package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts +28 -0
- package/dist/providers/evm/alchemyEvmProviderAdapter.d.ts.map +1 -0
- package/dist/providers/evm/alchemyEvmProviderAdapter.js +110 -0
- package/dist/providers/evm/alchemyEvmProviderAdapter.js.map +1 -0
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts +32 -0
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.d.ts.map +1 -0
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js +252 -0
- package/dist/providers/evm/privyAlchemyEvmProviderAdapter.js.map +1 -0
- package/dist/providers/evm/viemProviderAdapter.d.ts +17 -0
- package/dist/providers/evm/viemProviderAdapter.d.ts.map +1 -0
- package/dist/providers/evm/viemProviderAdapter.js +37 -0
- package/dist/providers/evm/viemProviderAdapter.js.map +1 -0
- package/dist/providers/providerAuthClient.d.ts +18 -0
- package/dist/providers/providerAuthClient.d.ts.map +1 -0
- package/dist/providers/providerAuthClient.js +48 -0
- package/dist/providers/providerAuthClient.js.map +1 -0
- package/dist/providers/solana/solanaProviderAdapter.d.ts +12 -0
- package/dist/providers/solana/solanaProviderAdapter.d.ts.map +1 -0
- package/dist/providers/solana/solanaProviderAdapter.js +23 -0
- package/dist/providers/solana/solanaProviderAdapter.js.map +1 -0
- package/dist/providers/types.d.ts +45 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/utils/events.d.ts +17 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +48 -0
- package/dist/utils/events.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { createPublicClient, http, toHex, } from "viem";
|
|
2
|
+
import { getTransactionReceipt, readContract, getLogs, getBlockNumber, } from "viem/actions";
|
|
3
|
+
import { createEvmNetworkContext, EVM_MAINNET_CHAINS } from "../../core/chains";
|
|
4
|
+
import { formatRequestForAuthorizationSignature, generateAuthorizationSignature, } from "@privy-io/node";
|
|
5
|
+
import { createSmartWalletClient, alchemyWalletTransport, } from "@alchemy/wallet-apis";
|
|
6
|
+
import { ACP_SERVER_URL, ALCHEMY_POLICY_ID, PRIVY_APP_ID, } from "../../core/constants";
|
|
7
|
+
import { ProviderAuthClient } from "../providerAuthClient";
|
|
8
|
+
function encodeSignableMessage(message) {
|
|
9
|
+
if (typeof message === "string") {
|
|
10
|
+
if (message.startsWith("0x")) {
|
|
11
|
+
return { message: message.slice(2), encoding: "hex" };
|
|
12
|
+
}
|
|
13
|
+
return { message, encoding: "utf-8" };
|
|
14
|
+
}
|
|
15
|
+
const raw = typeof message.raw === "string" ? message.raw : toHex(message.raw);
|
|
16
|
+
const hex = raw.startsWith("0x") ? raw.slice(2) : raw;
|
|
17
|
+
return { message: hex, encoding: "hex" };
|
|
18
|
+
}
|
|
19
|
+
function buildSignInput(walletId, body, privyAppId = PRIVY_APP_ID) {
|
|
20
|
+
return {
|
|
21
|
+
version: 1,
|
|
22
|
+
method: "POST",
|
|
23
|
+
url: `https://api.privy.io/v1/wallets/${walletId}/rpc`,
|
|
24
|
+
body,
|
|
25
|
+
headers: { "privy-app-id": privyAppId },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async function serverPost(path, body, serverUrl) {
|
|
29
|
+
const base = serverUrl.replace(/\/$/, "");
|
|
30
|
+
const res = await fetch(`${base}${path}`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: { "Content-Type": "application/json" },
|
|
33
|
+
body: JSON.stringify(body),
|
|
34
|
+
});
|
|
35
|
+
const data = await res.json();
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
throw new Error(data?.detail ?? data?.error ?? `Server error ${res.status}`);
|
|
38
|
+
}
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
async function signedServerCall(executePath, walletId, rpcBody, payload, signerPrivateKey, serverUrl, privyAppId = PRIVY_APP_ID, signFn) {
|
|
42
|
+
const input = buildSignInput(walletId, rpcBody, privyAppId);
|
|
43
|
+
let authorizationSignature;
|
|
44
|
+
if (signFn) {
|
|
45
|
+
const formatted = formatRequestForAuthorizationSignature(input);
|
|
46
|
+
authorizationSignature = await signFn(formatted);
|
|
47
|
+
}
|
|
48
|
+
else if (signerPrivateKey) {
|
|
49
|
+
authorizationSignature = generateAuthorizationSignature({
|
|
50
|
+
authorizationPrivateKey: signerPrivateKey,
|
|
51
|
+
input,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error("PrivyAlchemyEvmProviderAdapter: either signerPrivateKey or signFn must be provided");
|
|
56
|
+
}
|
|
57
|
+
return serverPost(executePath, { ...payload, authorizationSignature }, serverUrl);
|
|
58
|
+
}
|
|
59
|
+
function replaceBigInts(obj, replacer) {
|
|
60
|
+
if (typeof obj === "bigint")
|
|
61
|
+
return replacer(obj);
|
|
62
|
+
if (Array.isArray(obj))
|
|
63
|
+
return obj.map((x) => replaceBigInts(x, replacer));
|
|
64
|
+
if (obj && typeof obj === "object")
|
|
65
|
+
return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, replaceBigInts(v, replacer)]));
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
function createRemoteSigner(params) {
|
|
69
|
+
const { address, walletId, signerPrivateKey, signFn, serverUrl, privyAppId } = params;
|
|
70
|
+
return {
|
|
71
|
+
type: "local",
|
|
72
|
+
source: "privy-remote",
|
|
73
|
+
address,
|
|
74
|
+
publicKey: "0x",
|
|
75
|
+
signMessage: async ({ message }) => {
|
|
76
|
+
const encoded = encodeSignableMessage(message);
|
|
77
|
+
const rpcBody = {
|
|
78
|
+
method: "personal_sign",
|
|
79
|
+
chain_type: "ethereum",
|
|
80
|
+
params: { message: encoded.message, encoding: encoded.encoding },
|
|
81
|
+
};
|
|
82
|
+
const result = await signedServerCall("/wallets/sign-message", walletId, rpcBody, { walletAddress: address, walletId, ...encoded }, signerPrivateKey, serverUrl, privyAppId, signFn);
|
|
83
|
+
return result.signature;
|
|
84
|
+
},
|
|
85
|
+
signTypedData: async (typedDataDef) => {
|
|
86
|
+
const { domain, types, primaryType, message } = replaceBigInts(typedDataDef, toHex);
|
|
87
|
+
const typedData = {
|
|
88
|
+
domain: domain ?? {},
|
|
89
|
+
types: types ?? {},
|
|
90
|
+
primary_type: primaryType,
|
|
91
|
+
message: message ?? {},
|
|
92
|
+
};
|
|
93
|
+
const rpcBody = {
|
|
94
|
+
method: "eth_signTypedData_v4",
|
|
95
|
+
chain_type: "ethereum",
|
|
96
|
+
params: { typed_data: typedData },
|
|
97
|
+
};
|
|
98
|
+
const result = await signedServerCall("/wallets/sign-typed-data", walletId, rpcBody, { walletAddress: address, walletId, typedData }, signerPrivateKey, serverUrl, privyAppId, signFn);
|
|
99
|
+
return result.signature;
|
|
100
|
+
},
|
|
101
|
+
signTransaction: async () => {
|
|
102
|
+
throw new Error("signTransaction not supported — use sendCalls instead");
|
|
103
|
+
},
|
|
104
|
+
signAuthorization: async (unsignedAuth) => {
|
|
105
|
+
const contract = unsignedAuth.contractAddress ?? unsignedAuth.address;
|
|
106
|
+
const chainId = unsignedAuth.chainId;
|
|
107
|
+
const nonce = unsignedAuth.nonce;
|
|
108
|
+
const rpcBody = {
|
|
109
|
+
method: "eth_sign7702Authorization",
|
|
110
|
+
chain_type: "ethereum",
|
|
111
|
+
params: {
|
|
112
|
+
contract,
|
|
113
|
+
chain_id: chainId,
|
|
114
|
+
...(nonce != null ? { nonce } : {}),
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
const result = await signedServerCall("/wallets/sign-authorization", walletId, rpcBody, {
|
|
118
|
+
walletAddress: address,
|
|
119
|
+
walletId,
|
|
120
|
+
contract,
|
|
121
|
+
chainId,
|
|
122
|
+
...(nonce != null ? { nonce } : {}),
|
|
123
|
+
}, signerPrivateKey, serverUrl, privyAppId, signFn);
|
|
124
|
+
return result.authorization;
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export class PrivyAlchemyEvmProviderAdapter {
|
|
129
|
+
constructor(address, chainClients) {
|
|
130
|
+
this.providerName = "Privy Alchemy";
|
|
131
|
+
this.address = address;
|
|
132
|
+
this.chainClients = chainClients;
|
|
133
|
+
}
|
|
134
|
+
static async create(params) {
|
|
135
|
+
if (!params.signerPrivateKey && !params.signFn) {
|
|
136
|
+
throw new Error("PrivyAlchemyEvmProviderAdapter: either signerPrivateKey or signFn must be provided");
|
|
137
|
+
}
|
|
138
|
+
const chainClients = new Map();
|
|
139
|
+
const { chains = EVM_MAINNET_CHAINS } = params;
|
|
140
|
+
const serverUrl = (params.serverUrl ?? ACP_SERVER_URL).replace(/\/$/, "");
|
|
141
|
+
const signer = createRemoteSigner({
|
|
142
|
+
address: params.walletAddress,
|
|
143
|
+
walletId: params.walletId,
|
|
144
|
+
signerPrivateKey: params.signerPrivateKey,
|
|
145
|
+
signFn: params.signFn,
|
|
146
|
+
serverUrl,
|
|
147
|
+
privyAppId: params.privyAppId ?? PRIVY_APP_ID,
|
|
148
|
+
});
|
|
149
|
+
const authClient = new ProviderAuthClient({
|
|
150
|
+
serverUrl,
|
|
151
|
+
walletAddress: params.walletAddress,
|
|
152
|
+
signMessage: (msg) => signer.signMessage({ message: msg }),
|
|
153
|
+
chainId: chains[0].id,
|
|
154
|
+
});
|
|
155
|
+
const getToken = () => authClient.getAuthToken();
|
|
156
|
+
const authedFetch = async (input, init) => {
|
|
157
|
+
const token = await getToken();
|
|
158
|
+
return fetch(input, {
|
|
159
|
+
...init,
|
|
160
|
+
headers: {
|
|
161
|
+
...init?.headers,
|
|
162
|
+
Authorization: `Bearer ${token}`,
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
for (const chain of chains) {
|
|
167
|
+
const smartWalletClient = createSmartWalletClient({
|
|
168
|
+
transport: alchemyWalletTransport({
|
|
169
|
+
url: `${serverUrl}/wallets/alchemy-rpc`,
|
|
170
|
+
fetchFn: authedFetch,
|
|
171
|
+
}),
|
|
172
|
+
chain,
|
|
173
|
+
signer,
|
|
174
|
+
account: params.walletAddress,
|
|
175
|
+
paymaster: { policyId: ALCHEMY_POLICY_ID },
|
|
176
|
+
});
|
|
177
|
+
const publicClient = createPublicClient({
|
|
178
|
+
chain,
|
|
179
|
+
transport: http(`${serverUrl}/wallets/alchemy-rpc/${chain.id}`, {
|
|
180
|
+
fetchFn: authedFetch,
|
|
181
|
+
}),
|
|
182
|
+
});
|
|
183
|
+
chainClients.set(chain.id, { smartWalletClient, publicClient });
|
|
184
|
+
}
|
|
185
|
+
return new PrivyAlchemyEvmProviderAdapter(params.walletAddress, chainClients);
|
|
186
|
+
}
|
|
187
|
+
getClients(chainId) {
|
|
188
|
+
const c = this.chainClients.get(chainId);
|
|
189
|
+
if (!c)
|
|
190
|
+
throw new Error(`PrivyAlchemyEvmProviderAdapter: no clients configured for chainId ${chainId}`);
|
|
191
|
+
return c;
|
|
192
|
+
}
|
|
193
|
+
async getAddress() {
|
|
194
|
+
return this.address;
|
|
195
|
+
}
|
|
196
|
+
async getSupportedChainIds() {
|
|
197
|
+
return Array.from(this.chainClients.keys());
|
|
198
|
+
}
|
|
199
|
+
async getNetworkContext(chainId) {
|
|
200
|
+
return createEvmNetworkContext(chainId);
|
|
201
|
+
}
|
|
202
|
+
getRandomNonce(bits = 152) {
|
|
203
|
+
const bytes = bits / 8;
|
|
204
|
+
const array = new Uint8Array(bytes);
|
|
205
|
+
crypto.getRandomValues(array);
|
|
206
|
+
const hex = Array.from(array, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
207
|
+
return `0x${hex}`;
|
|
208
|
+
}
|
|
209
|
+
async sendCalls(chainId, _calls) {
|
|
210
|
+
const { smartWalletClient } = this.getClients(chainId);
|
|
211
|
+
const { id } = await smartWalletClient.sendCalls({
|
|
212
|
+
calls: _calls.map((call) => ({
|
|
213
|
+
to: call.to,
|
|
214
|
+
data: call.data ?? "0x",
|
|
215
|
+
value: call.value ?? 0n,
|
|
216
|
+
})),
|
|
217
|
+
capabilities: {
|
|
218
|
+
nonceOverride: {
|
|
219
|
+
nonceKey: this.getRandomNonce(),
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
const status = await smartWalletClient.waitForCallsStatus({ id });
|
|
224
|
+
if (!status.receipts?.[0]?.transactionHash) {
|
|
225
|
+
throw new Error("Transaction failed");
|
|
226
|
+
}
|
|
227
|
+
return status.receipts?.[0]?.transactionHash;
|
|
228
|
+
}
|
|
229
|
+
async getTransactionReceipt(chainId, hash) {
|
|
230
|
+
return getTransactionReceipt(this.getClients(chainId).publicClient, {
|
|
231
|
+
hash,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
async readContract(chainId, params) {
|
|
235
|
+
return readContract(this.getClients(chainId).publicClient, params);
|
|
236
|
+
}
|
|
237
|
+
async getLogs(chainId, params) {
|
|
238
|
+
return getLogs(this.getClients(chainId).publicClient, params);
|
|
239
|
+
}
|
|
240
|
+
async getBlockNumber(chainId) {
|
|
241
|
+
return getBlockNumber(this.getClients(chainId).publicClient);
|
|
242
|
+
}
|
|
243
|
+
async signMessage(chainId, _message) {
|
|
244
|
+
return this.getClients(chainId).smartWalletClient.signMessage({
|
|
245
|
+
message: _message,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
async signTypedData(chainId, typedData) {
|
|
249
|
+
return this.getClients(chainId).smartWalletClient.signTypedData(typedData);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=privyAlchemyEvmProviderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privyAlchemyEvmProviderAdapter.js","sourceRoot":"","sources":["../../../src/providers/evm/privyAlchemyEvmProviderAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Address, Call, Log, TransactionReceipt } from "viem";
|
|
2
|
+
import type { GetLogsParams, IEvmProviderAdapter, ReadContractParams } from "../types";
|
|
3
|
+
export declare class ViemProviderAdapter implements IEvmProviderAdapter {
|
|
4
|
+
readonly providerName: string;
|
|
5
|
+
constructor(providerName: string);
|
|
6
|
+
getAddress(): Promise<Address>;
|
|
7
|
+
getSupportedChainIds(): Promise<number[]>;
|
|
8
|
+
getNetworkContext(chainId: number): Promise<import("../..").NetworkContext>;
|
|
9
|
+
sendCalls(_chainId: number, _calls: Call[]): Promise<Address | Address[]>;
|
|
10
|
+
getTransactionReceipt(_chainId: number, _hash: Address): Promise<TransactionReceipt>;
|
|
11
|
+
readContract(_chainId: number, _params: ReadContractParams): Promise<unknown>;
|
|
12
|
+
getLogs(_chainId: number, _params: GetLogsParams): Promise<Log[]>;
|
|
13
|
+
getBlockNumber(_chainId: number): Promise<bigint>;
|
|
14
|
+
signMessage(_chainId: number, _message: string): Promise<string>;
|
|
15
|
+
signTypedData(_chainId: number, _typedData: unknown): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=viemProviderAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viemProviderAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/evm/viemProviderAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB,qBAAa,mBAAoB,YAAW,mBAAmB;IAC7D,SAAgB,YAAY,EAAE,MAAM,CAAC;gBAEzB,YAAY,EAAE,MAAM;IAI1B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IAIzE,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,kBAAkB,CAAC;IAMxB,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC;IAIb,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAG5E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createEvmNetworkContext } from "../../core/chains";
|
|
2
|
+
export class ViemProviderAdapter {
|
|
3
|
+
constructor(providerName) {
|
|
4
|
+
this.providerName = providerName;
|
|
5
|
+
}
|
|
6
|
+
async getAddress() {
|
|
7
|
+
throw new Error("getAddress() not implemented. Override in subclass.");
|
|
8
|
+
}
|
|
9
|
+
async getSupportedChainIds() {
|
|
10
|
+
throw new Error("getSupportedChainIds() not implemented. Override in subclass.");
|
|
11
|
+
}
|
|
12
|
+
async getNetworkContext(chainId) {
|
|
13
|
+
return createEvmNetworkContext(chainId);
|
|
14
|
+
}
|
|
15
|
+
async sendCalls(_chainId, _calls) {
|
|
16
|
+
throw new Error("sendCalls() not implemented. Override in subclass.");
|
|
17
|
+
}
|
|
18
|
+
async getTransactionReceipt(_chainId, _hash) {
|
|
19
|
+
throw new Error("getTransactionReceipt() not implemented. Override in subclass.");
|
|
20
|
+
}
|
|
21
|
+
async readContract(_chainId, _params) {
|
|
22
|
+
throw new Error("readContract() not implemented. Override in subclass.");
|
|
23
|
+
}
|
|
24
|
+
async getLogs(_chainId, _params) {
|
|
25
|
+
throw new Error("getLogs() not implemented. Override in subclass.");
|
|
26
|
+
}
|
|
27
|
+
async getBlockNumber(_chainId) {
|
|
28
|
+
throw new Error("getBlockNumber() not implemented. Override in subclass.");
|
|
29
|
+
}
|
|
30
|
+
async signMessage(_chainId, _message) {
|
|
31
|
+
throw new Error("signMessage() not implemented. Override in subclass.");
|
|
32
|
+
}
|
|
33
|
+
async signTypedData(_chainId, _typedData) {
|
|
34
|
+
throw new Error("signTypedData() not implemented. Override in subclass.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=viemProviderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viemProviderAdapter.js","sourceRoot":"","sources":["../../../src/providers/evm/viemProviderAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAO5D,MAAM,OAAO,mBAAmB;IAG9B,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,MAAc;QAC9C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,QAAgB,EAChB,KAAc;QAEd,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,OAA2B;QAE3B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAsB;QACpD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,UAAmB;QACvD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ProviderAuthClientOptions {
|
|
2
|
+
serverUrl?: string;
|
|
3
|
+
walletAddress: string;
|
|
4
|
+
signMessage: (message: string) => Promise<string>;
|
|
5
|
+
chainId: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class ProviderAuthClient {
|
|
8
|
+
private token;
|
|
9
|
+
private readonly serverUrl;
|
|
10
|
+
private readonly walletAddress;
|
|
11
|
+
private readonly _signMessage;
|
|
12
|
+
private readonly chainId;
|
|
13
|
+
constructor(opts: ProviderAuthClientOptions);
|
|
14
|
+
getAuthToken(): Promise<string>;
|
|
15
|
+
private authenticate;
|
|
16
|
+
private isTokenExpiring;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=providerAuthClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerAuthClient.d.ts","sourceRoot":"","sources":["../../src/providers/providerAuthClient.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,EAAE,yBAAyB;IAOrC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YAOvB,YAAY;IAuB1B,OAAO,CAAC,eAAe;CAUxB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ACP_SERVER_URL } from "../core/constants";
|
|
2
|
+
export class ProviderAuthClient {
|
|
3
|
+
constructor(opts) {
|
|
4
|
+
this.token = "";
|
|
5
|
+
this.serverUrl = (opts.serverUrl ?? ACP_SERVER_URL).replace(/\/$/, "");
|
|
6
|
+
this.walletAddress = opts.walletAddress;
|
|
7
|
+
this._signMessage = opts.signMessage;
|
|
8
|
+
this.chainId = opts.chainId;
|
|
9
|
+
}
|
|
10
|
+
async getAuthToken() {
|
|
11
|
+
if (!this.token || this.isTokenExpiring()) {
|
|
12
|
+
this.token = await this.authenticate();
|
|
13
|
+
}
|
|
14
|
+
return this.token;
|
|
15
|
+
}
|
|
16
|
+
async authenticate() {
|
|
17
|
+
const message = `acp-auth:${Date.now()}`;
|
|
18
|
+
const signature = await this._signMessage(message);
|
|
19
|
+
const res = await fetch(`${this.serverUrl}/auth/agent`, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: { "Content-Type": "application/json" },
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
walletAddress: this.walletAddress,
|
|
24
|
+
signature,
|
|
25
|
+
message,
|
|
26
|
+
chainId: this.chainId,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
if (!res.ok) {
|
|
30
|
+
throw new Error(`Agent auth failed: ${res.status} ${res.statusText}`);
|
|
31
|
+
}
|
|
32
|
+
const body = (await res.json());
|
|
33
|
+
return body.data.token;
|
|
34
|
+
}
|
|
35
|
+
isTokenExpiring() {
|
|
36
|
+
try {
|
|
37
|
+
const parts = this.token.split(".");
|
|
38
|
+
if (!parts[1])
|
|
39
|
+
return true;
|
|
40
|
+
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString());
|
|
41
|
+
return (payload.exp ?? 0) * 1000 - Date.now() < 60000;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=providerAuthClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerAuthClient.js","sourceRoot":"","sources":["../../src/providers/providerAuthClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnD,MAAM,OAAO,kBAAkB;IAO7B,YAAY,IAA+B;QANnC,UAAK,GAAG,EAAE,CAAC;QAOjB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,OAAO,GAAG,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEnD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,aAAa,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS;gBACT,OAAO;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAM,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SolanaCluster } from "../../core/chains";
|
|
2
|
+
import type { ISolanaProviderAdapter, SolanaInstructionLike } from "../types";
|
|
3
|
+
export declare class SolanaProviderAdapter implements ISolanaProviderAdapter {
|
|
4
|
+
readonly providerName: string;
|
|
5
|
+
constructor(providerName: string);
|
|
6
|
+
getAddress(): Promise<string>;
|
|
7
|
+
getCluster(): Promise<SolanaCluster>;
|
|
8
|
+
getSupportedChainIds(): Promise<number[]>;
|
|
9
|
+
getNetworkContext(_chainId: number): Promise<import("../..").NetworkContext>;
|
|
10
|
+
sendInstructions(_instructions: SolanaInstructionLike[]): Promise<string | string[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=solanaProviderAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solanaProviderAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/solana/solanaProviderAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAElB,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,SAAgB,YAAY,EAAE,MAAM,CAAC;gBAEzB,YAAY,EAAE,MAAM;IAI1B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAIpC,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,iBAAiB,CAAC,QAAQ,EAAE,MAAM;IAKlC,gBAAgB,CACpB,aAAa,EAAE,qBAAqB,EAAE,GACrC,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;CAG9B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createSolanaNetworkContext } from "../../core/chains";
|
|
2
|
+
export class SolanaProviderAdapter {
|
|
3
|
+
constructor(providerName) {
|
|
4
|
+
this.providerName = providerName;
|
|
5
|
+
}
|
|
6
|
+
async getAddress() {
|
|
7
|
+
throw new Error("getAddress() not implemented. Override in subclass.");
|
|
8
|
+
}
|
|
9
|
+
async getCluster() {
|
|
10
|
+
throw new Error("getCluster() not implemented. Override in subclass.");
|
|
11
|
+
}
|
|
12
|
+
async getSupportedChainIds() {
|
|
13
|
+
throw new Error("getSupportedChainIds() not implemented. Override in subclass.");
|
|
14
|
+
}
|
|
15
|
+
async getNetworkContext(_chainId) {
|
|
16
|
+
const cluster = await this.getCluster();
|
|
17
|
+
return createSolanaNetworkContext(cluster);
|
|
18
|
+
}
|
|
19
|
+
async sendInstructions(_instructions) {
|
|
20
|
+
throw new Error("sendInstructions() not implemented. Override in subclass.");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=solanaProviderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solanaProviderAdapter.js","sourceRoot":"","sources":["../../../src/providers/solana/solanaProviderAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAsB,MAAM,mBAAmB,CAAC;AAMnF,MAAM,OAAO,qBAAqB;IAGhC,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB;QACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,aAAsC;QAEtC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Address, Call, Log, TransactionReceipt } from "viem";
|
|
2
|
+
import type { NetworkContext, SolanaCluster } from "../core/chains";
|
|
3
|
+
export type SolanaInstructionLike = {
|
|
4
|
+
programId: string;
|
|
5
|
+
keys: Array<{
|
|
6
|
+
pubkey: string;
|
|
7
|
+
isSigner: boolean;
|
|
8
|
+
isWritable: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
data: Uint8Array | string;
|
|
11
|
+
};
|
|
12
|
+
export interface IProviderAdapter {
|
|
13
|
+
readonly providerName: string;
|
|
14
|
+
getAddress(): Promise<string>;
|
|
15
|
+
getSupportedChainIds(): Promise<number[]>;
|
|
16
|
+
getNetworkContext(chainId: number): Promise<NetworkContext>;
|
|
17
|
+
}
|
|
18
|
+
export type ReadContractParams = {
|
|
19
|
+
address: Address;
|
|
20
|
+
abi: readonly unknown[];
|
|
21
|
+
functionName: string;
|
|
22
|
+
args?: readonly unknown[];
|
|
23
|
+
};
|
|
24
|
+
export type GetLogsParams = {
|
|
25
|
+
address: Address;
|
|
26
|
+
events: readonly unknown[];
|
|
27
|
+
fromBlock: bigint;
|
|
28
|
+
toBlock?: bigint | "latest";
|
|
29
|
+
};
|
|
30
|
+
export interface IEvmProviderAdapter extends IProviderAdapter {
|
|
31
|
+
getAddress(): Promise<Address>;
|
|
32
|
+
sendCalls(chainId: number, calls: Call[]): Promise<Address | Address[]>;
|
|
33
|
+
getTransactionReceipt(chainId: number, hash: Address): Promise<TransactionReceipt>;
|
|
34
|
+
readContract(chainId: number, params: ReadContractParams): Promise<unknown>;
|
|
35
|
+
getLogs(chainId: number, params: GetLogsParams): Promise<Log[]>;
|
|
36
|
+
getBlockNumber(chainId: number): Promise<bigint>;
|
|
37
|
+
signMessage(chainId: number, message: string): Promise<string>;
|
|
38
|
+
signTypedData(chainId: number, typedData: unknown): Promise<string>;
|
|
39
|
+
}
|
|
40
|
+
export interface ISolanaProviderAdapter extends IProviderAdapter {
|
|
41
|
+
getAddress(): Promise<string>;
|
|
42
|
+
getCluster(): Promise<SolanaCluster>;
|
|
43
|
+
sendInstructions(instructions: SolanaInstructionLike[]): Promise<string | string[]>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7D;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,SAAS,OAAO,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC;IACxE,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACrC,gBAAgB,CACd,YAAY,EAAE,qBAAqB,EAAE,GACpC,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Address, type TransactionReceipt } from "viem";
|
|
2
|
+
export type JobCreatedFilter = {
|
|
3
|
+
provider?: string;
|
|
4
|
+
evaluator?: string;
|
|
5
|
+
expiredAt?: number | bigint;
|
|
6
|
+
hook?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Extracts a `jobId` from a transaction receipt by decoding `JobCreated` event
|
|
10
|
+
* logs emitted by the ACP contract.
|
|
11
|
+
*
|
|
12
|
+
* When multiple `JobCreated` events exist in a single receipt (batched calls),
|
|
13
|
+
* pass a `filter` with the original `CreateJobParams` values to match the
|
|
14
|
+
* correct event.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseJobIdFromReceipt(receipt: TransactionReceipt, contractAddress: Address, filter?: JobCreatedFilter): bigint | null;
|
|
17
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAG7E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA6BF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,EAC3B,eAAe,EAAE,OAAO,EACxB,MAAM,CAAC,EAAE,gBAAgB,GACxB,MAAM,GAAG,IAAI,CAwBf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { decodeEventLog } from "viem";
|
|
2
|
+
import { ACP_ABI } from "../core/acpAbi";
|
|
3
|
+
function addressEq(a, b) {
|
|
4
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
5
|
+
}
|
|
6
|
+
function matchesFilter(args, filter) {
|
|
7
|
+
if (filter.provider && !addressEq(args.provider, filter.provider))
|
|
8
|
+
return false;
|
|
9
|
+
if (filter.evaluator && !addressEq(args.evaluator, filter.evaluator))
|
|
10
|
+
return false;
|
|
11
|
+
if (filter.expiredAt != null && args.expiredAt !== BigInt(filter.expiredAt))
|
|
12
|
+
return false;
|
|
13
|
+
if (filter.hook && !addressEq(args.hook, filter.hook))
|
|
14
|
+
return false;
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extracts a `jobId` from a transaction receipt by decoding `JobCreated` event
|
|
19
|
+
* logs emitted by the ACP contract.
|
|
20
|
+
*
|
|
21
|
+
* When multiple `JobCreated` events exist in a single receipt (batched calls),
|
|
22
|
+
* pass a `filter` with the original `CreateJobParams` values to match the
|
|
23
|
+
* correct event.
|
|
24
|
+
*/
|
|
25
|
+
export function parseJobIdFromReceipt(receipt, contractAddress, filter) {
|
|
26
|
+
for (const log of receipt.logs) {
|
|
27
|
+
if (!addressEq(log.address, contractAddress))
|
|
28
|
+
continue;
|
|
29
|
+
try {
|
|
30
|
+
const decoded = decodeEventLog({
|
|
31
|
+
abi: ACP_ABI,
|
|
32
|
+
data: log.data,
|
|
33
|
+
topics: log.topics,
|
|
34
|
+
});
|
|
35
|
+
if (decoded.eventName !== "JobCreated")
|
|
36
|
+
continue;
|
|
37
|
+
const args = decoded.args;
|
|
38
|
+
if (filter && !matchesFilter(args, filter))
|
|
39
|
+
continue;
|
|
40
|
+
return args.jobId;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Log doesn't match any ABI event — skip
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyC,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAkBzC,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CACpB,IAAoB,EACpB,MAAwB;IAExB,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAA2B,EAC3B,eAAwB,EACxB,MAAyB;IAEzB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;YAAE,SAAS;QAEvD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,CAAC;gBAC7B,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,SAAS,KAAK,YAAY;gBAAE,SAAS;YAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAiC,CAAC;YAEvD,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,SAAS;YAErD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@virtuals-protocol/acp-node-v2",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"prepare": "tsc",
|
|
8
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"dev": "tsx watch src/index.ts",
|
|
11
|
+
"start": "node dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"files": ["dist"],
|
|
14
|
+
"author": "Zuhwa",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"description": "",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@aa-sdk/core": "^4.84.1",
|
|
19
|
+
"@account-kit/infra": "^4.84.1",
|
|
20
|
+
"@account-kit/smart-contracts": "^4.84.1",
|
|
21
|
+
"@alchemy/wallet-apis": "^5.0.0-beta.9",
|
|
22
|
+
"@privy-io/node": "^0.11.0",
|
|
23
|
+
"ajv": "^8.18.0",
|
|
24
|
+
"eventsource": "^4.1.0",
|
|
25
|
+
"socket.io-client": "^4.8.3",
|
|
26
|
+
"viem": "^2.47.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^25.3.3",
|
|
30
|
+
"dotenv": "^17.3.1",
|
|
31
|
+
"typescript": "^5.9.3"
|
|
32
|
+
},
|
|
33
|
+
"types": "dist/index.d.ts"
|
|
34
|
+
}
|