@fastxyz/fast-connector 0.1.0 → 0.1.2
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 +14 -1
- package/dist/certificate.d.ts +14 -0
- package/dist/certificate.d.ts.map +1 -0
- package/dist/certificate.js +249 -0
- package/dist/certificate.js.map +1 -0
- package/dist/client.d.ts +16 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +102 -46
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/provider.d.ts +32 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +257 -0
- package/dist/provider.js.map +1 -0
- package/dist/sdk-compat.d.ts +58 -0
- package/dist/sdk-compat.d.ts.map +1 -0
- package/dist/sdk-compat.js +207 -0
- package/dist/sdk-compat.js.map +1 -0
- package/dist/testing.d.ts +3 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +42 -10
- package/dist/testing.js.map +1 -1
- package/dist/types.d.ts +95 -11
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ This package owns:
|
|
|
23
23
|
- adapter typing
|
|
24
24
|
- dapp-facing connection state
|
|
25
25
|
- a reusable app connector over `window.fastset`
|
|
26
|
-
- optional provider-backed reads through `@fastxyz/sdk
|
|
26
|
+
- optional provider-backed reads through `@fastxyz/sdk`
|
|
27
27
|
- high-level transaction helpers over injected wallet methods
|
|
28
28
|
|
|
29
29
|
## Status
|
|
@@ -55,8 +55,13 @@ const payment = await connector.transfer({
|
|
|
55
55
|
amount: '0x32',
|
|
56
56
|
});
|
|
57
57
|
const explorerUrl = await connector.getExplorerUrl(payment.txHash);
|
|
58
|
+
const claim = await connector.submitClaim({
|
|
59
|
+
claimData: [1, 2, 3],
|
|
60
|
+
});
|
|
58
61
|
```
|
|
59
62
|
|
|
63
|
+
`submitClaim()` maps to Fast `ExternalClaim` submission and accepts only claim payload fields such as `claimData`, `verifierCommittee`, `verifierQuorum`, and `signatures`.
|
|
64
|
+
|
|
60
65
|
You can also inject a custom read provider, or let the connector build one from the installed SDK:
|
|
61
66
|
|
|
62
67
|
```ts
|
|
@@ -113,3 +118,11 @@ npm install
|
|
|
113
118
|
npm run build
|
|
114
119
|
npm test
|
|
115
120
|
```
|
|
121
|
+
|
|
122
|
+
## SDK Compatibility
|
|
123
|
+
|
|
124
|
+
`@fastxyz/fast-connector` now targets `@fastxyz/sdk@^1.0.1`.
|
|
125
|
+
|
|
126
|
+
- The connector no longer imports `@fastxyz/sdk/browser`
|
|
127
|
+
- Built-in provider reads are created from `new FastProvider({ rpcUrl })`
|
|
128
|
+
- Network and token metadata used by the connector are owned here, with optional overrides through `providerOptions`
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FastConnectorTransaction, FastConnectorTransactionCertificate } from './types.js';
|
|
2
|
+
type FastConnectorTokenTransferSummary = {
|
|
3
|
+
sender: string;
|
|
4
|
+
recipient: string;
|
|
5
|
+
tokenId: string;
|
|
6
|
+
amountHex: string;
|
|
7
|
+
amount?: string;
|
|
8
|
+
userData: string | null;
|
|
9
|
+
};
|
|
10
|
+
export declare function getCertificateTransaction(certificate: FastConnectorTransactionCertificate): FastConnectorTransaction;
|
|
11
|
+
export declare function getCertificateHash(certificate: FastConnectorTransactionCertificate): string;
|
|
12
|
+
export declare function getCertificateTokenTransfer(certificate: FastConnectorTransactionCertificate): FastConnectorTokenTransferSummary | null;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=certificate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificate.d.ts","sourceRoot":"","sources":["../src/certificate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGV,wBAAwB,EACxB,mCAAmC,EAIpC,MAAM,YAAY,CAAC;AAEpB,KAAK,iCAAiC,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AA+PF,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,mCAAmC,GAC/C,wBAAwB,CAY1B;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,mCAAmC,GAAG,MAAM,CAY3F;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mCAAmC,GAC/C,iCAAiC,GAAG,IAAI,CAsB1C"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { bcs } from '@mysten/bcs';
|
|
2
|
+
import { keccak_256 } from '@noble/hashes/sha3';
|
|
3
|
+
import { FAST_DECIMALS, FAST_TOKEN_ID, amountHexToDecimal, bytesToHex, encodeFastAddress, tokenIdEquals, } from './sdk-compat.js';
|
|
4
|
+
const AmountBcs = bcs.u256().transform({
|
|
5
|
+
input: (value) => BigInt(`0x${value}`).toString(),
|
|
6
|
+
});
|
|
7
|
+
const CurrentTokenTransferBcs = bcs.struct('CurrentTokenTransfer', {
|
|
8
|
+
token_id: bcs.bytes(32),
|
|
9
|
+
recipient: bcs.bytes(32),
|
|
10
|
+
amount: AmountBcs,
|
|
11
|
+
user_data: bcs.option(bcs.bytes(32)),
|
|
12
|
+
});
|
|
13
|
+
const LegacyTokenTransferBcs = bcs.struct('LegacyTokenTransfer', {
|
|
14
|
+
token_id: bcs.bytes(32),
|
|
15
|
+
amount: AmountBcs,
|
|
16
|
+
user_data: bcs.option(bcs.bytes(32)),
|
|
17
|
+
});
|
|
18
|
+
const TokenCreationBcs = bcs.struct('SharedTokenCreation', {
|
|
19
|
+
token_name: bcs.string(),
|
|
20
|
+
decimals: bcs.u8(),
|
|
21
|
+
initial_amount: AmountBcs,
|
|
22
|
+
mints: bcs.vector(bcs.bytes(32)),
|
|
23
|
+
user_data: bcs.option(bcs.bytes(32)),
|
|
24
|
+
});
|
|
25
|
+
const AddressChangeBcs = bcs.enum('SharedAddressChange', {
|
|
26
|
+
Add: bcs.tuple([]),
|
|
27
|
+
Remove: bcs.tuple([]),
|
|
28
|
+
});
|
|
29
|
+
const TokenManagementBcs = bcs.struct('SharedTokenManagement', {
|
|
30
|
+
token_id: bcs.bytes(32),
|
|
31
|
+
update_id: bcs.u64(),
|
|
32
|
+
new_admin: bcs.option(bcs.bytes(32)),
|
|
33
|
+
mints: bcs.vector(bcs.tuple([AddressChangeBcs, bcs.bytes(32)])),
|
|
34
|
+
user_data: bcs.option(bcs.bytes(32)),
|
|
35
|
+
});
|
|
36
|
+
const CurrentMintBcs = bcs.struct('CurrentMint', {
|
|
37
|
+
token_id: bcs.bytes(32),
|
|
38
|
+
recipient: bcs.bytes(32),
|
|
39
|
+
amount: AmountBcs,
|
|
40
|
+
});
|
|
41
|
+
const LegacyMintBcs = bcs.struct('LegacyMint', {
|
|
42
|
+
token_id: bcs.bytes(32),
|
|
43
|
+
amount: AmountBcs,
|
|
44
|
+
});
|
|
45
|
+
const BurnBcs = bcs.struct('SharedBurn', {
|
|
46
|
+
token_id: bcs.bytes(32),
|
|
47
|
+
amount: AmountBcs,
|
|
48
|
+
});
|
|
49
|
+
const ExternalClaimBodyBcs = bcs.struct('SharedExternalClaimBody', {
|
|
50
|
+
verifier_committee: bcs.vector(bcs.bytes(32)),
|
|
51
|
+
verifier_quorum: bcs.u64(),
|
|
52
|
+
claim_data: bcs.vector(bcs.u8()),
|
|
53
|
+
});
|
|
54
|
+
const ExternalClaimFullBcs = bcs.struct('SharedExternalClaimFull', {
|
|
55
|
+
claim: ExternalClaimBodyBcs,
|
|
56
|
+
signatures: bcs.vector(bcs.tuple([bcs.bytes(32), bcs.bytes(64)])),
|
|
57
|
+
});
|
|
58
|
+
const LegacyClaimTypeBcs = bcs.enum('LegacyClaimType', {
|
|
59
|
+
TokenTransfer: LegacyTokenTransferBcs,
|
|
60
|
+
TokenCreation: TokenCreationBcs,
|
|
61
|
+
TokenManagement: TokenManagementBcs,
|
|
62
|
+
Mint: LegacyMintBcs,
|
|
63
|
+
Burn: BurnBcs,
|
|
64
|
+
StateInitialization: bcs.struct('LegacyStateInitialization', { dummy: bcs.u8() }),
|
|
65
|
+
StateUpdate: bcs.struct('LegacyStateUpdate', { dummy: bcs.u8() }),
|
|
66
|
+
ExternalClaim: ExternalClaimFullBcs,
|
|
67
|
+
StateReset: bcs.struct('LegacyStateReset', { dummy: bcs.u8() }),
|
|
68
|
+
JoinCommittee: bcs.struct('LegacyJoinCommittee', { dummy: bcs.u8() }),
|
|
69
|
+
LeaveCommittee: bcs.struct('LegacyLeaveCommittee', { dummy: bcs.u8() }),
|
|
70
|
+
ChangeCommittee: bcs.struct('LegacyChangeCommittee', { dummy: bcs.u8() }),
|
|
71
|
+
Batch: bcs.vector(bcs.enum('LegacyOperation', {
|
|
72
|
+
TokenTransfer: bcs.struct('LegacyTokenTransferOperation', {
|
|
73
|
+
token_id: bcs.bytes(32),
|
|
74
|
+
recipient: bcs.bytes(32),
|
|
75
|
+
amount: AmountBcs,
|
|
76
|
+
user_data: bcs.option(bcs.bytes(32)),
|
|
77
|
+
}),
|
|
78
|
+
TokenCreation: TokenCreationBcs,
|
|
79
|
+
TokenManagement: TokenManagementBcs,
|
|
80
|
+
Mint: bcs.struct('LegacyMintOperation', {
|
|
81
|
+
token_id: bcs.bytes(32),
|
|
82
|
+
recipient: bcs.bytes(32),
|
|
83
|
+
amount: AmountBcs,
|
|
84
|
+
}),
|
|
85
|
+
})),
|
|
86
|
+
});
|
|
87
|
+
const CurrentClaimTypeBcs = bcs.enum('CurrentClaimType', {
|
|
88
|
+
TokenTransfer: CurrentTokenTransferBcs,
|
|
89
|
+
TokenCreation: TokenCreationBcs,
|
|
90
|
+
TokenManagement: TokenManagementBcs,
|
|
91
|
+
Mint: CurrentMintBcs,
|
|
92
|
+
Burn: BurnBcs,
|
|
93
|
+
StateInitialization: bcs.struct('CurrentStateInitialization', { dummy: bcs.u8() }),
|
|
94
|
+
StateUpdate: bcs.struct('CurrentStateUpdate', { dummy: bcs.u8() }),
|
|
95
|
+
ExternalClaim: ExternalClaimFullBcs,
|
|
96
|
+
StateReset: bcs.struct('CurrentStateReset', { dummy: bcs.u8() }),
|
|
97
|
+
JoinCommittee: bcs.struct('CurrentJoinCommittee', { dummy: bcs.u8() }),
|
|
98
|
+
LeaveCommittee: bcs.struct('CurrentLeaveCommittee', { dummy: bcs.u8() }),
|
|
99
|
+
ChangeCommittee: bcs.struct('CurrentChangeCommittee', { dummy: bcs.u8() }),
|
|
100
|
+
Batch: bcs.vector(bcs.enum('CurrentOperation', {
|
|
101
|
+
TokenTransfer: CurrentTokenTransferBcs,
|
|
102
|
+
TokenCreation: TokenCreationBcs,
|
|
103
|
+
TokenManagement: TokenManagementBcs,
|
|
104
|
+
Mint: CurrentMintBcs,
|
|
105
|
+
})),
|
|
106
|
+
});
|
|
107
|
+
const LegacyTransactionBcs = bcs.struct('LegacyTransaction', {
|
|
108
|
+
sender: bcs.bytes(32),
|
|
109
|
+
recipient: bcs.bytes(32),
|
|
110
|
+
nonce: bcs.u64(),
|
|
111
|
+
timestamp_nanos: bcs.u128(),
|
|
112
|
+
claim: LegacyClaimTypeBcs,
|
|
113
|
+
archival: bcs.bool(),
|
|
114
|
+
});
|
|
115
|
+
const CurrentTransactionBcs = bcs.struct('CurrentTransaction', {
|
|
116
|
+
network_id: bcs.string(),
|
|
117
|
+
sender: bcs.bytes(32),
|
|
118
|
+
nonce: bcs.u64(),
|
|
119
|
+
timestamp_nanos: bcs.u128(),
|
|
120
|
+
claim: CurrentClaimTypeBcs,
|
|
121
|
+
archival: bcs.bool(),
|
|
122
|
+
fee_token: bcs.option(bcs.bytes(32)),
|
|
123
|
+
});
|
|
124
|
+
const VersionedTransactionBcs = bcs.enum('VersionedTransaction', {
|
|
125
|
+
Release20260319: CurrentTransactionBcs,
|
|
126
|
+
});
|
|
127
|
+
const LEGACY_RELEASE_20260303_VARIANT_INDEX = 1;
|
|
128
|
+
function isRecord(value) {
|
|
129
|
+
return Boolean(value && typeof value === 'object');
|
|
130
|
+
}
|
|
131
|
+
function getCurrentTransaction(transaction) {
|
|
132
|
+
if (isRecord(transaction) && 'Release20260319' in transaction) {
|
|
133
|
+
return transaction.Release20260319;
|
|
134
|
+
}
|
|
135
|
+
if (isRecord(transaction)) {
|
|
136
|
+
const candidate = transaction;
|
|
137
|
+
if (!('Release20260303' in candidate)
|
|
138
|
+
&& !('Release20260319' in candidate)
|
|
139
|
+
&& typeof candidate.network_id === 'string'
|
|
140
|
+
&& 'sender' in candidate
|
|
141
|
+
&& 'nonce' in candidate
|
|
142
|
+
&& 'timestamp_nanos' in candidate
|
|
143
|
+
&& 'claim' in candidate
|
|
144
|
+
&& 'archival' in candidate
|
|
145
|
+
&& 'fee_token' in candidate) {
|
|
146
|
+
return transaction;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
function getLegacyTransaction(transaction) {
|
|
152
|
+
if (isRecord(transaction) && 'Release20260303' in transaction) {
|
|
153
|
+
return transaction.Release20260303;
|
|
154
|
+
}
|
|
155
|
+
if (isRecord(transaction)) {
|
|
156
|
+
const candidate = transaction;
|
|
157
|
+
if (!('Release20260303' in candidate)
|
|
158
|
+
&& !('Release20260319' in candidate)
|
|
159
|
+
&& !('network_id' in candidate)
|
|
160
|
+
&& 'sender' in candidate
|
|
161
|
+
&& 'recipient' in candidate
|
|
162
|
+
&& 'nonce' in candidate
|
|
163
|
+
&& 'timestamp_nanos' in candidate
|
|
164
|
+
&& 'claim' in candidate
|
|
165
|
+
&& 'archival' in candidate) {
|
|
166
|
+
return transaction;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
function hashCurrentTransaction(transaction) {
|
|
172
|
+
const serialized = VersionedTransactionBcs.serialize({
|
|
173
|
+
Release20260319: transaction,
|
|
174
|
+
}).toBytes();
|
|
175
|
+
return bytesToHex(keccak_256(serialized));
|
|
176
|
+
}
|
|
177
|
+
function serializeLegacyVersionedTransaction(transaction) {
|
|
178
|
+
const innerBytes = LegacyTransactionBcs.serialize(transaction).toBytes();
|
|
179
|
+
const versioned = new Uint8Array(1 + innerBytes.length);
|
|
180
|
+
versioned[0] = LEGACY_RELEASE_20260303_VARIANT_INDEX;
|
|
181
|
+
versioned.set(innerBytes, 1);
|
|
182
|
+
return versioned;
|
|
183
|
+
}
|
|
184
|
+
function hashLegacyTransaction(transaction) {
|
|
185
|
+
return bytesToHex(keccak_256(serializeLegacyVersionedTransaction(transaction)));
|
|
186
|
+
}
|
|
187
|
+
function isLegacyTokenTransferClaim(value) {
|
|
188
|
+
return isRecord(value) && 'token_id' in value && 'amount' in value;
|
|
189
|
+
}
|
|
190
|
+
function isCurrentTokenTransferClaim(value) {
|
|
191
|
+
return isLegacyTokenTransferClaim(value) && 'recipient' in value;
|
|
192
|
+
}
|
|
193
|
+
function summarizeTokenTransfer(sender, recipient, transfer) {
|
|
194
|
+
const tokenIdBytes = new Uint8Array(Array.from(transfer.token_id));
|
|
195
|
+
const native = tokenIdEquals(tokenIdBytes, FAST_TOKEN_ID);
|
|
196
|
+
const decimals = native ? FAST_DECIMALS : undefined;
|
|
197
|
+
return {
|
|
198
|
+
sender: encodeFastAddress(new Uint8Array(Array.from(sender))),
|
|
199
|
+
recipient: encodeFastAddress(new Uint8Array(Array.from(recipient))),
|
|
200
|
+
tokenId: native ? 'native' : bytesToHex(tokenIdBytes),
|
|
201
|
+
amountHex: `0x${transfer.amount}`,
|
|
202
|
+
amount: decimals === undefined ? undefined : amountHexToDecimal(transfer.amount, decimals),
|
|
203
|
+
userData: transfer.user_data
|
|
204
|
+
? bytesToHex(new Uint8Array(Array.from(transfer.user_data)))
|
|
205
|
+
: null,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
export function getCertificateTransaction(certificate) {
|
|
209
|
+
const current = getCurrentTransaction(certificate.envelope.transaction);
|
|
210
|
+
if (current) {
|
|
211
|
+
return current;
|
|
212
|
+
}
|
|
213
|
+
const legacy = getLegacyTransaction(certificate.envelope.transaction);
|
|
214
|
+
if (legacy) {
|
|
215
|
+
return legacy;
|
|
216
|
+
}
|
|
217
|
+
throw new TypeError('Invalid Fast transaction certificate.');
|
|
218
|
+
}
|
|
219
|
+
export function getCertificateHash(certificate) {
|
|
220
|
+
const current = getCurrentTransaction(certificate.envelope.transaction);
|
|
221
|
+
if (current) {
|
|
222
|
+
return hashCurrentTransaction(current);
|
|
223
|
+
}
|
|
224
|
+
const legacy = getLegacyTransaction(certificate.envelope.transaction);
|
|
225
|
+
if (legacy) {
|
|
226
|
+
return hashLegacyTransaction(legacy);
|
|
227
|
+
}
|
|
228
|
+
throw new TypeError('Invalid Fast transaction certificate.');
|
|
229
|
+
}
|
|
230
|
+
export function getCertificateTokenTransfer(certificate) {
|
|
231
|
+
const current = getCurrentTransaction(certificate.envelope.transaction);
|
|
232
|
+
if (current) {
|
|
233
|
+
const transfer = current.claim.TokenTransfer;
|
|
234
|
+
if (!transfer || !isCurrentTokenTransferClaim(transfer)) {
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
return summarizeTokenTransfer(current.sender, transfer.recipient, transfer);
|
|
238
|
+
}
|
|
239
|
+
const legacy = getLegacyTransaction(certificate.envelope.transaction);
|
|
240
|
+
if (legacy) {
|
|
241
|
+
const transfer = legacy.claim.TokenTransfer;
|
|
242
|
+
if (!transfer || !isLegacyTokenTransferClaim(transfer)) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
return summarizeTokenTransfer(legacy.sender, legacy.recipient, transfer);
|
|
246
|
+
}
|
|
247
|
+
throw new TypeError('Invalid Fast transaction certificate.');
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=certificate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certificate.js","sourceRoot":"","sources":["../src/certificate.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FastConnectorAccount, FastConnectorAdapter, FastConnectorConnectOptions, FastConnectorOptions, FastConnectorSubmitClaimParams, FastConnectorSubmitClaimResult, FastConnectorTransferParams, FastConnectorTransferResult } from './types.js';
|
|
1
|
+
import type { FastConnectorAccount, FastConnectorAdapter, FastConnectorConnectOptions, FastConnectorOptions, FastConnectorSubmitClaimParams, FastConnectorSubmitClaimResult, FastConnectorTransactionCertificate, FastConnectorTransferParams, FastConnectorTransferResult } from './types.js';
|
|
2
2
|
export declare function getInjectedFastConnector(): FastConnectorAdapter | undefined;
|
|
3
3
|
export declare function waitForInjectedFastConnector(timeoutMs?: number): Promise<FastConnectorAdapter | undefined>;
|
|
4
4
|
export declare class FastConnector {
|
|
@@ -6,6 +6,11 @@ export declare class FastConnector {
|
|
|
6
6
|
private readonly customProvider?;
|
|
7
7
|
private provider?;
|
|
8
8
|
private providerNetworkKey?;
|
|
9
|
+
private resolvedWalletNetwork?;
|
|
10
|
+
private pendingWalletNetworkSync?;
|
|
11
|
+
private pendingAdapterNetworkResolution?;
|
|
12
|
+
private walletNetworkStateVersion;
|
|
13
|
+
private walletNetworkSyncSequence;
|
|
9
14
|
private readonly providerOptions?;
|
|
10
15
|
private accounts;
|
|
11
16
|
private locallyDisconnected;
|
|
@@ -18,7 +23,9 @@ export declare class FastConnector {
|
|
|
18
23
|
isConnected(): boolean;
|
|
19
24
|
getAccounts(): Promise<FastConnectorAccount[]>;
|
|
20
25
|
getActiveNetwork(): Promise<string>;
|
|
26
|
+
switchNetwork(network: string): Promise<string>;
|
|
21
27
|
onAccountChanged(callback: (account: FastConnectorAccount) => void): () => void;
|
|
28
|
+
onNetworkChanged(callback: (network: string) => void): () => void;
|
|
22
29
|
exportKeys(): Promise<FastConnectorAccount>;
|
|
23
30
|
sign(params: {
|
|
24
31
|
message: string | Uint8Array;
|
|
@@ -33,9 +40,9 @@ export declare class FastConnector {
|
|
|
33
40
|
amount: string;
|
|
34
41
|
token: string;
|
|
35
42
|
}>;
|
|
36
|
-
getTokens(): Promise<import("
|
|
37
|
-
getTokenInfo(token: string): Promise<import("
|
|
38
|
-
getCertificateByNonce(nonce: number): Promise<
|
|
43
|
+
getTokens(): Promise<import("./types.js").FastConnectorTokenBalance[]>;
|
|
44
|
+
getTokenInfo(token: string): Promise<import("./types.js").FastConnectorTokenInfo | null>;
|
|
45
|
+
getCertificateByNonce(nonce: number): Promise<FastConnectorTransactionCertificate | null>;
|
|
39
46
|
getExplorerUrl(txHash?: string): Promise<string | null>;
|
|
40
47
|
private captureTransactionFreshness;
|
|
41
48
|
private assertFreshTransaction;
|
|
@@ -44,5 +51,10 @@ export declare class FastConnector {
|
|
|
44
51
|
private resolveTransferTokenId;
|
|
45
52
|
private resolveProviderNetwork;
|
|
46
53
|
private requireProvider;
|
|
54
|
+
private startWalletNetworkSync;
|
|
55
|
+
private syncResolvedWalletNetwork;
|
|
56
|
+
private resetResolvedWalletNetwork;
|
|
57
|
+
private nextWalletNetworkSyncSequence;
|
|
58
|
+
private isActiveWalletNetworkSync;
|
|
47
59
|
}
|
|
48
60
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { bytesToHex, decodeFastAddress, encodeFastAddress, FAST_TOKEN_ID,
|
|
1
|
+
import { bytesToHex, decodeFastAddress, encodeFastAddress, FAST_TOKEN_ID, hexToBytes, hexToTokenId, tokenIdEquals, } from './sdk-compat.js';
|
|
2
|
+
import { getCertificateHash, getCertificateTokenTransfer, getCertificateTransaction, } from './certificate.js';
|
|
3
|
+
import { FastError } from './errors.js';
|
|
4
|
+
import { createFastConnectorProvider, getDefaultProviderNetwork, getSupportedProviderNetwork, validateExplicitProviderNetwork, } from './provider.js';
|
|
2
5
|
const DEFAULT_PERMISSIONS = ['viewAccount', 'suggestTransactions'];
|
|
3
|
-
let browserSdkPromise;
|
|
4
6
|
function getBrowserWindow() {
|
|
5
7
|
return typeof window === 'undefined' ? undefined : window;
|
|
6
8
|
}
|
|
@@ -24,7 +26,7 @@ function missingConnectedAccount() {
|
|
|
24
26
|
}
|
|
25
27
|
function networkNotConfigured(network) {
|
|
26
28
|
return new FastError('NETWORK_NOT_CONFIGURED', `Fast network "${network}" is not configured.`, {
|
|
27
|
-
note: 'Use a known
|
|
29
|
+
note: 'Use a known connector network name or provide matching metadata in providerOptions.networks.',
|
|
28
30
|
});
|
|
29
31
|
}
|
|
30
32
|
function unsupportedAdapterOperation(method) {
|
|
@@ -106,22 +108,8 @@ function normalizeAccount(account) {
|
|
|
106
108
|
publicKey,
|
|
107
109
|
};
|
|
108
110
|
}
|
|
109
|
-
async function loadBrowserSdk() {
|
|
110
|
-
browserSdkPromise ??= import('@fastxyz/sdk/browser');
|
|
111
|
-
return await browserSdkPromise;
|
|
112
|
-
}
|
|
113
|
-
async function loadFastProviderConstructor() {
|
|
114
|
-
const imported = await loadBrowserSdk();
|
|
115
|
-
if (typeof imported.FastProvider === 'function') {
|
|
116
|
-
return imported.FastProvider;
|
|
117
|
-
}
|
|
118
|
-
throw new Error('Fast provider support requires an installed @fastxyz/sdk@>=0.1.8 package with FastProvider exports at @fastxyz/sdk/browser.');
|
|
119
|
-
}
|
|
120
111
|
async function isSupportedProviderNetwork(network, providerOptions) {
|
|
121
|
-
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
return (await (await loadBrowserSdk()).getNetworkInfo(network)) !== null;
|
|
112
|
+
return getSupportedProviderNetwork(network, providerOptions) !== undefined;
|
|
125
113
|
}
|
|
126
114
|
async function normalizeSupportedProviderNetwork(network, providerOptions) {
|
|
127
115
|
if (typeof network !== 'string') {
|
|
@@ -239,6 +227,11 @@ export class FastConnector {
|
|
|
239
227
|
customProvider;
|
|
240
228
|
provider;
|
|
241
229
|
providerNetworkKey;
|
|
230
|
+
resolvedWalletNetwork;
|
|
231
|
+
pendingWalletNetworkSync;
|
|
232
|
+
pendingAdapterNetworkResolution;
|
|
233
|
+
walletNetworkStateVersion = 0;
|
|
234
|
+
walletNetworkSyncSequence = 0;
|
|
242
235
|
providerOptions;
|
|
243
236
|
accounts = [];
|
|
244
237
|
locallyDisconnected = false;
|
|
@@ -271,12 +264,14 @@ export class FastConnector {
|
|
|
271
264
|
return false;
|
|
272
265
|
}
|
|
273
266
|
this.locallyDisconnected = false;
|
|
267
|
+
this.resetResolvedWalletNetwork();
|
|
274
268
|
await this.getAccounts();
|
|
275
269
|
return true;
|
|
276
270
|
}
|
|
277
271
|
async disconnect() {
|
|
278
272
|
this.accounts = [];
|
|
279
273
|
this.locallyDisconnected = true;
|
|
274
|
+
this.resetResolvedWalletNetwork();
|
|
280
275
|
if (!this.adapter.disconnect) {
|
|
281
276
|
return true;
|
|
282
277
|
}
|
|
@@ -311,6 +306,20 @@ export class FastConnector {
|
|
|
311
306
|
}
|
|
312
307
|
return await this.adapter.getActiveNetwork();
|
|
313
308
|
}
|
|
309
|
+
async switchNetwork(network) {
|
|
310
|
+
if (!this.adapter.switchNetwork) {
|
|
311
|
+
throw new Error('Injected Fast wallet does not expose switchNetwork().');
|
|
312
|
+
}
|
|
313
|
+
const targetNetwork = network.trim();
|
|
314
|
+
if (!targetNetwork) {
|
|
315
|
+
throw new TypeError('Pass a non-empty network string when calling switchNetwork().');
|
|
316
|
+
}
|
|
317
|
+
const version = this.walletNetworkStateVersion;
|
|
318
|
+
const syncSequence = this.nextWalletNetworkSyncSequence();
|
|
319
|
+
const switchedNetwork = await this.adapter.switchNetwork(targetNetwork);
|
|
320
|
+
await this.startWalletNetworkSync(switchedNetwork, version, syncSequence);
|
|
321
|
+
return switchedNetwork;
|
|
322
|
+
}
|
|
314
323
|
onAccountChanged(callback) {
|
|
315
324
|
if (!this.adapter.onAccountChanged) {
|
|
316
325
|
return () => { };
|
|
@@ -334,6 +343,18 @@ export class FastConnector {
|
|
|
334
343
|
callback(normalized);
|
|
335
344
|
});
|
|
336
345
|
}
|
|
346
|
+
onNetworkChanged(callback) {
|
|
347
|
+
if (!this.adapter.onNetworkChanged) {
|
|
348
|
+
return () => { };
|
|
349
|
+
}
|
|
350
|
+
return this.adapter.onNetworkChanged((network) => {
|
|
351
|
+
if (this.locallyDisconnected) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
this.startWalletNetworkSync(network);
|
|
355
|
+
callback(network);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
337
358
|
async exportKeys() {
|
|
338
359
|
const account = await this.requireAccount();
|
|
339
360
|
return {
|
|
@@ -407,7 +428,6 @@ export class FastConnector {
|
|
|
407
428
|
throw unsupportedAdapterOperation('submitClaim');
|
|
408
429
|
}
|
|
409
430
|
const account = await this.requireAccount();
|
|
410
|
-
const recipient = normalizeConnectorAddress(params.recipient, 'claim recipient');
|
|
411
431
|
if (!Array.isArray(params.claimData)) {
|
|
412
432
|
throw invalidConnectorParams('FastConnector claimData must be an array of bytes.', 'Pass submitClaim({ claimData: number[] }) with numeric byte values.');
|
|
413
433
|
}
|
|
@@ -415,7 +435,6 @@ export class FastConnector {
|
|
|
415
435
|
let certificate;
|
|
416
436
|
try {
|
|
417
437
|
certificate = normalizeTransactionCertificate(await this.adapter.submitClaim({
|
|
418
|
-
recipient,
|
|
419
438
|
claimData: [...params.claimData],
|
|
420
439
|
account,
|
|
421
440
|
verifierCommittee: params.verifierCommittee,
|
|
@@ -435,9 +454,7 @@ export class FastConnector {
|
|
|
435
454
|
const transaction = getCertificateTransaction(certificate);
|
|
436
455
|
const externalClaim = transaction.claim.ExternalClaim;
|
|
437
456
|
const sender = encodeFastAddress(new Uint8Array(transaction.sender));
|
|
438
|
-
const transactionRecipient = encodeFastAddress(new Uint8Array(transaction.recipient));
|
|
439
457
|
if (sender !== account.address
|
|
440
|
-
|| transactionRecipient !== recipient
|
|
441
458
|
|| normalizeByteSequence(externalClaim.claim.claim_data) !== normalizeByteSequence(params.claimData)
|
|
442
459
|
|| (params.verifierCommittee !== undefined
|
|
443
460
|
&& !arraysEqual(normalizeByteSequenceList(externalClaim.claim.verifier_committee), normalizeByteSequenceList(params.verifierCommittee)))
|
|
@@ -535,7 +552,7 @@ export class FastConnector {
|
|
|
535
552
|
}
|
|
536
553
|
const known = (await provider.resolveKnownToken?.(normalizedToken))
|
|
537
554
|
?? getConfiguredKnownToken(normalizedToken, this.providerOptions)
|
|
538
|
-
??
|
|
555
|
+
?? null;
|
|
539
556
|
if (!known) {
|
|
540
557
|
throw new FastError('TOKEN_NOT_FOUND', `Token "${normalizedToken}" not found on ${provider.network}`, {
|
|
541
558
|
note: 'Use FAST, a token symbol configured for the selected network, or a valid hex token ID.',
|
|
@@ -547,45 +564,84 @@ export class FastConnector {
|
|
|
547
564
|
}
|
|
548
565
|
async resolveProviderNetwork() {
|
|
549
566
|
if (this.providerOptions?.network !== undefined) {
|
|
550
|
-
|
|
551
|
-
if (this.providerOptions.rpcUrl) {
|
|
552
|
-
if (explicitNetwork.length === 0) {
|
|
553
|
-
throw networkNotConfigured(this.providerOptions.network);
|
|
554
|
-
}
|
|
555
|
-
return explicitNetwork;
|
|
556
|
-
}
|
|
557
|
-
const configuredNetwork = await normalizeSupportedProviderNetwork(this.providerOptions.network, this.providerOptions);
|
|
558
|
-
if (!configuredNetwork) {
|
|
559
|
-
throw networkNotConfigured(this.providerOptions.network);
|
|
560
|
-
}
|
|
561
|
-
return configuredNetwork;
|
|
567
|
+
return validateExplicitProviderNetwork(this.providerOptions.network, this.providerOptions);
|
|
562
568
|
}
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
try {
|
|
567
|
-
return await normalizeSupportedProviderNetwork(await this.adapter.getActiveNetwork(), this.providerOptions);
|
|
569
|
+
await this.pendingWalletNetworkSync;
|
|
570
|
+
if (this.resolvedWalletNetwork !== undefined) {
|
|
571
|
+
return this.resolvedWalletNetwork ?? undefined;
|
|
568
572
|
}
|
|
569
|
-
|
|
570
|
-
return
|
|
573
|
+
if (!this.adapter.getActiveNetwork) {
|
|
574
|
+
return getDefaultProviderNetwork(this.providerOptions);
|
|
575
|
+
}
|
|
576
|
+
const getActiveNetwork = this.adapter.getActiveNetwork;
|
|
577
|
+
if (!this.pendingAdapterNetworkResolution) {
|
|
578
|
+
let pendingResolution;
|
|
579
|
+
pendingResolution = (async () => {
|
|
580
|
+
try {
|
|
581
|
+
return await normalizeSupportedProviderNetwork(await getActiveNetwork(), this.providerOptions) ?? getDefaultProviderNetwork(this.providerOptions);
|
|
582
|
+
}
|
|
583
|
+
catch {
|
|
584
|
+
return getDefaultProviderNetwork(this.providerOptions);
|
|
585
|
+
}
|
|
586
|
+
finally {
|
|
587
|
+
if (this.pendingAdapterNetworkResolution === pendingResolution) {
|
|
588
|
+
this.pendingAdapterNetworkResolution = undefined;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
})();
|
|
592
|
+
this.pendingAdapterNetworkResolution = pendingResolution;
|
|
571
593
|
}
|
|
594
|
+
return await this.pendingAdapterNetworkResolution;
|
|
572
595
|
}
|
|
573
596
|
async requireProvider() {
|
|
574
597
|
if (this.customProvider) {
|
|
575
598
|
return this.customProvider;
|
|
576
599
|
}
|
|
577
600
|
const providerNetwork = await this.resolveProviderNetwork();
|
|
578
|
-
const providerNetworkKey = providerNetwork ??
|
|
601
|
+
const providerNetworkKey = providerNetwork ?? getDefaultProviderNetwork(this.providerOptions);
|
|
579
602
|
if (this.provider && this.providerNetworkKey === providerNetworkKey) {
|
|
580
603
|
return this.provider;
|
|
581
604
|
}
|
|
582
|
-
|
|
583
|
-
this.provider = new Provider({
|
|
605
|
+
this.provider = createFastConnectorProvider(providerNetworkKey, {
|
|
584
606
|
...this.providerOptions,
|
|
585
|
-
|
|
607
|
+
network: providerNetworkKey,
|
|
586
608
|
});
|
|
587
609
|
this.providerNetworkKey = providerNetworkKey;
|
|
588
610
|
return this.provider;
|
|
589
611
|
}
|
|
612
|
+
startWalletNetworkSync(network, version = this.walletNetworkStateVersion, syncSequence = this.nextWalletNetworkSyncSequence()) {
|
|
613
|
+
const pendingSync = this.syncResolvedWalletNetwork(network, version, syncSequence);
|
|
614
|
+
const trackedSync = pendingSync.finally(() => {
|
|
615
|
+
if (this.pendingWalletNetworkSync === trackedSync) {
|
|
616
|
+
this.pendingWalletNetworkSync = undefined;
|
|
617
|
+
}
|
|
618
|
+
});
|
|
619
|
+
this.pendingWalletNetworkSync = trackedSync;
|
|
620
|
+
return trackedSync;
|
|
621
|
+
}
|
|
622
|
+
async syncResolvedWalletNetwork(network, version, syncSequence) {
|
|
623
|
+
if (this.providerOptions?.network !== undefined) {
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
const normalizedNetwork = await normalizeSupportedProviderNetwork(network, this.providerOptions);
|
|
627
|
+
if (!this.isActiveWalletNetworkSync(version, syncSequence)) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
this.resolvedWalletNetwork = normalizedNetwork ?? null;
|
|
631
|
+
}
|
|
632
|
+
resetResolvedWalletNetwork() {
|
|
633
|
+
this.walletNetworkStateVersion += 1;
|
|
634
|
+
this.walletNetworkSyncSequence = 0;
|
|
635
|
+
this.resolvedWalletNetwork = undefined;
|
|
636
|
+
this.pendingWalletNetworkSync = undefined;
|
|
637
|
+
this.pendingAdapterNetworkResolution = undefined;
|
|
638
|
+
}
|
|
639
|
+
nextWalletNetworkSyncSequence() {
|
|
640
|
+
this.walletNetworkSyncSequence += 1;
|
|
641
|
+
return this.walletNetworkSyncSequence;
|
|
642
|
+
}
|
|
643
|
+
isActiveWalletNetworkSync(version, syncSequence) {
|
|
644
|
+
return version === this.walletNetworkStateVersion && syncSequence === this.walletNetworkSyncSequence;
|
|
645
|
+
}
|
|
590
646
|
}
|
|
591
647
|
//# sourceMappingURL=client.js.map
|