@fastxyz/fastid-sdk 0.1.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.
Files changed (95) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +65 -0
  3. package/dist/address.d.ts +12 -0
  4. package/dist/address.d.ts.map +1 -0
  5. package/dist/address.js +57 -0
  6. package/dist/address.js.map +1 -0
  7. package/dist/canonical-json.d.ts +12 -0
  8. package/dist/canonical-json.d.ts.map +1 -0
  9. package/dist/canonical-json.js +95 -0
  10. package/dist/canonical-json.js.map +1 -0
  11. package/dist/claim-data.d.ts +9 -0
  12. package/dist/claim-data.d.ts.map +1 -0
  13. package/dist/claim-data.js +151 -0
  14. package/dist/claim-data.js.map +1 -0
  15. package/dist/claim-fee.d.ts +26 -0
  16. package/dist/claim-fee.d.ts.map +1 -0
  17. package/dist/claim-fee.js +144 -0
  18. package/dist/claim-fee.js.map +1 -0
  19. package/dist/claim-preflight.d.ts +7 -0
  20. package/dist/claim-preflight.d.ts.map +1 -0
  21. package/dist/claim-preflight.js +34 -0
  22. package/dist/claim-preflight.js.map +1 -0
  23. package/dist/claim-tx.d.ts +35 -0
  24. package/dist/claim-tx.d.ts.map +1 -0
  25. package/dist/claim-tx.js +140 -0
  26. package/dist/claim-tx.js.map +1 -0
  27. package/dist/claims.d.ts +44 -0
  28. package/dist/claims.d.ts.map +1 -0
  29. package/dist/claims.js +348 -0
  30. package/dist/claims.js.map +1 -0
  31. package/dist/client.d.ts +37 -0
  32. package/dist/client.d.ts.map +1 -0
  33. package/dist/client.js +139 -0
  34. package/dist/client.js.map +1 -0
  35. package/dist/errors.d.ts +252 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +410 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/fasttx.d.ts +10 -0
  40. package/dist/fasttx.d.ts.map +1 -0
  41. package/dist/fasttx.js +35 -0
  42. package/dist/fasttx.js.map +1 -0
  43. package/dist/http.d.ts +15 -0
  44. package/dist/http.d.ts.map +1 -0
  45. package/dist/http.js +67 -0
  46. package/dist/http.js.map +1 -0
  47. package/dist/index.d.ts +12 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +7 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/name.d.ts +15 -0
  52. package/dist/name.d.ts.map +1 -0
  53. package/dist/name.js +34 -0
  54. package/dist/name.js.map +1 -0
  55. package/dist/networks.d.ts +8 -0
  56. package/dist/networks.d.ts.map +1 -0
  57. package/dist/networks.js +32 -0
  58. package/dist/networks.js.map +1 -0
  59. package/dist/profile-message.d.ts +22 -0
  60. package/dist/profile-message.d.ts.map +1 -0
  61. package/dist/profile-message.js +53 -0
  62. package/dist/profile-message.js.map +1 -0
  63. package/dist/profile.d.ts +30 -0
  64. package/dist/profile.d.ts.map +1 -0
  65. package/dist/profile.js +363 -0
  66. package/dist/profile.js.map +1 -0
  67. package/dist/proofs.d.ts +92 -0
  68. package/dist/proofs.d.ts.map +1 -0
  69. package/dist/proofs.js +770 -0
  70. package/dist/proofs.js.map +1 -0
  71. package/dist/reads.d.ts +76 -0
  72. package/dist/reads.d.ts.map +1 -0
  73. package/dist/reads.js +244 -0
  74. package/dist/reads.js.map +1 -0
  75. package/dist/report-wire.d.ts +35 -0
  76. package/dist/report-wire.d.ts.map +1 -0
  77. package/dist/report-wire.js +131 -0
  78. package/dist/report-wire.js.map +1 -0
  79. package/dist/report.d.ts +36 -0
  80. package/dist/report.d.ts.map +1 -0
  81. package/dist/report.js +255 -0
  82. package/dist/report.js.map +1 -0
  83. package/dist/share.d.ts +9 -0
  84. package/dist/share.d.ts.map +1 -0
  85. package/dist/share.js +16 -0
  86. package/dist/share.js.map +1 -0
  87. package/dist/signer.d.ts +23 -0
  88. package/dist/signer.d.ts.map +1 -0
  89. package/dist/signer.js +73 -0
  90. package/dist/signer.js.map +1 -0
  91. package/dist/verify.d.ts +6 -0
  92. package/dist/verify.d.ts.map +1 -0
  93. package/dist/verify.js +33 -0
  94. package/dist/verify.js.map +1 -0
  95. package/package.json +53 -0
@@ -0,0 +1,26 @@
1
+ export type FeeState = {
2
+ kind: "none";
3
+ } | {
4
+ kind: "quoted";
5
+ tokenId: string;
6
+ symbol: string;
7
+ decimals: number;
8
+ atomicAmount: string;
9
+ updateId: number | null;
10
+ } | {
11
+ kind: "unavailable";
12
+ };
13
+ export type ConfirmedFee = Exclude<FeeState, {
14
+ kind: "unavailable";
15
+ }>;
16
+ export interface FeeSource {
17
+ networkInfo(): Promise<unknown>;
18
+ tokenMeta(tokenId: string): Promise<unknown>;
19
+ }
20
+ /** Resolve the active fee from authoritative proxy data. Any ambiguity fails closed. */
21
+ export declare function resolveClaimFee(network: string, source: FeeSource): Promise<FeeState>;
22
+ export declare function feeKey(network: string, state: FeeState): string;
23
+ export declare function feeTokenForState(state: FeeState): string | null;
24
+ export declare function formatFee(state: FeeState): string | null;
25
+ export declare function proxyFeeSource(proxyUrl: string, fetchImpl?: typeof fetch): FeeSource;
26
+ //# sourceMappingURL=claim-fee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-fee.d.ts","sourceRoot":"","sources":["../src/claim-fee.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACD;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5B,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C;AA0DD,wFAAwF;AACxF,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,QAAQ,CAAC,CAkDnB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAM/D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAO,KAAa,GAC9B,SAAS,CAcX"}
@@ -0,0 +1,144 @@
1
+ import { toRestGateway } from "./claim-tx.js";
2
+ function isObject(value) {
3
+ return typeof value === "object" && value !== null;
4
+ }
5
+ const HEX64 = /^[0-9a-f]{64}$/;
6
+ const MAX_U256 = (1n << 256n) - 1n;
7
+ function isU8(value) {
8
+ return (typeof value === "number" &&
9
+ Number.isSafeInteger(value) &&
10
+ value >= 0 &&
11
+ value <= 255);
12
+ }
13
+ function validAmount(value) {
14
+ if (typeof value !== "string" || !/^(0|[1-9][0-9]*)$/.test(value)) {
15
+ return false;
16
+ }
17
+ try {
18
+ return BigInt(value) <= MAX_U256;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ function tokenMetaFor(metadata, tokenId) {
25
+ const list = isObject(metadata) && isObject(metadata.data)
26
+ ? metadata.data.requested_token_metadata
27
+ : undefined;
28
+ if (!Array.isArray(list))
29
+ return null;
30
+ const matches = list.filter((row) => Array.isArray(row) && row[0] === tokenId);
31
+ if (matches.length !== 1)
32
+ return null;
33
+ const row = matches[0];
34
+ if (!Array.isArray(row) || !isObject(row[1]))
35
+ return null;
36
+ const { token_name, decimals, update_id } = row[1];
37
+ if (typeof token_name !== "string" || token_name.length === 0 || !isU8(decimals)) {
38
+ return null;
39
+ }
40
+ let updateId = null;
41
+ if (update_id !== undefined) {
42
+ if (!Number.isSafeInteger(update_id) || update_id < 0) {
43
+ return null;
44
+ }
45
+ updateId = update_id;
46
+ }
47
+ return { symbol: token_name, decimals, updateId };
48
+ }
49
+ /** Resolve the active fee from authoritative proxy data. Any ambiguity fails closed. */
50
+ export async function resolveClaimFee(network, source) {
51
+ let info;
52
+ try {
53
+ info = await source.networkInfo();
54
+ }
55
+ catch {
56
+ return { kind: "unavailable" };
57
+ }
58
+ const data = isObject(info) ? info.data : undefined;
59
+ if (!isObject(data) || data.network_id !== network) {
60
+ return { kind: "unavailable" };
61
+ }
62
+ const fees = data.fees;
63
+ if (!isObject(fees) ||
64
+ typeof fees.default !== "string" ||
65
+ !Array.isArray(fees.entries)) {
66
+ return { kind: "unavailable" };
67
+ }
68
+ // The existing Fast network contract uses an empty list for fee-free bootstrap.
69
+ if (fees.entries.length === 0)
70
+ return { kind: "none" };
71
+ const defaultId = fees.default;
72
+ if (!HEX64.test(defaultId))
73
+ return { kind: "unavailable" };
74
+ const matchingEntries = fees.entries.filter((candidate) => isObject(candidate) && candidate.token_id === defaultId);
75
+ if (matchingEntries.length !== 1)
76
+ return { kind: "unavailable" };
77
+ const [entry] = matchingEntries;
78
+ if (!isObject(entry) || !validAmount(entry.fixed_amount)) {
79
+ return { kind: "unavailable" };
80
+ }
81
+ if (entry.fixed_amount === "0")
82
+ return { kind: "none" };
83
+ let metadata;
84
+ try {
85
+ metadata = await source.tokenMeta(defaultId);
86
+ }
87
+ catch {
88
+ return { kind: "unavailable" };
89
+ }
90
+ const token = tokenMetaFor(metadata, defaultId);
91
+ if (!token)
92
+ return { kind: "unavailable" };
93
+ return {
94
+ kind: "quoted",
95
+ tokenId: defaultId,
96
+ symbol: token.symbol,
97
+ decimals: token.decimals,
98
+ atomicAmount: entry.fixed_amount,
99
+ updateId: token.updateId,
100
+ };
101
+ }
102
+ export function feeKey(network, state) {
103
+ if (state.kind === "quoted") {
104
+ const { tokenId, atomicAmount, decimals, symbol, updateId } = state;
105
+ return `${network}|fee:${tokenId}:${atomicAmount}:${decimals}:${symbol}:${updateId ?? ""}`;
106
+ }
107
+ return `${network}|${state.kind}`;
108
+ }
109
+ export function feeTokenForState(state) {
110
+ if (state.kind === "quoted")
111
+ return state.tokenId;
112
+ if (state.kind === "none")
113
+ return null;
114
+ throw new Error("Refusing to build a claim from an unavailable fee state; fail closed.");
115
+ }
116
+ export function formatFee(state) {
117
+ if (state.kind !== "quoted")
118
+ return null;
119
+ const { atomicAmount, decimals, symbol } = state;
120
+ if (decimals === 0)
121
+ return `${atomicAmount} ${symbol}`;
122
+ const padded = atomicAmount.padStart(decimals + 1, "0");
123
+ const whole = padded.slice(0, padded.length - decimals) || "0";
124
+ const fraction = decimals > 0
125
+ ? padded.slice(padded.length - decimals).replace(/0+$/, "")
126
+ : "";
127
+ return `${fraction ? `${whole}.${fraction}` : whole} ${symbol}`;
128
+ }
129
+ export function proxyFeeSource(proxyUrl, fetchImpl = fetch) {
130
+ const gateway = toRestGateway(proxyUrl);
131
+ const getJson = async (path) => {
132
+ const response = await fetchImpl(`${gateway}${path}`, {
133
+ headers: { accept: "application/json" },
134
+ });
135
+ if (!response.ok)
136
+ throw new Error(`${path} ${response.status}`);
137
+ return response.json();
138
+ };
139
+ return {
140
+ networkInfo: () => getJson("/v1/network-info"),
141
+ tokenMeta: (tokenId) => getJson(`/v1/tokens?token_ids=${encodeURIComponent(tokenId)}`),
142
+ };
143
+ }
144
+ //# sourceMappingURL=claim-fee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-fee.js","sourceRoot":"","sources":["../src/claim-fee.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Availability } from "./reads.js";
2
+ export type PreflightState = "eligible" | "blocked" | "reservation_unresolved" | "indeterminate";
3
+ export type PreflightInput = Availability | "failed" | null | undefined;
4
+ /** Fail-closed mirror of the web claim preflight classifier. */
5
+ export declare function classifyPreflight(input: PreflightInput, expectedNetwork: string): PreflightState;
6
+ export declare function mayReachSettlement(state: PreflightState): boolean;
7
+ //# sourceMappingURL=claim-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-preflight.d.ts","sourceRoot":"","sources":["../src/claim-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,SAAS,GACT,wBAAwB,GACxB,eAAe,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;AAMxE,gEAAgE;AAChE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,eAAe,EAAE,MAAM,GACtB,cAAc,CAkChB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,34 @@
1
+ function isBoolean(value) {
2
+ return typeof value === "boolean";
3
+ }
4
+ /** Fail-closed mirror of the web claim preflight classifier. */
5
+ export function classifyPreflight(input, expectedNetwork) {
6
+ if (input === "failed" ||
7
+ input === null ||
8
+ input === undefined ||
9
+ typeof input !== "object") {
10
+ return "indeterminate";
11
+ }
12
+ const { network, available, taken, skeleton_conflict: conflict, reserved, } = input;
13
+ if (!isBoolean(available) ||
14
+ !isBoolean(conflict) ||
15
+ !isBoolean(reserved) ||
16
+ (taken !== undefined && !isBoolean(taken))) {
17
+ return "indeterminate";
18
+ }
19
+ if (network !== expectedNetwork)
20
+ return "indeterminate";
21
+ const anyNegative = conflict || reserved || taken === true;
22
+ if (available && anyNegative)
23
+ return "indeterminate";
24
+ if (conflict || taken === true)
25
+ return "blocked";
26
+ if (reserved) {
27
+ return taken === false ? "reservation_unresolved" : "indeterminate";
28
+ }
29
+ return available ? "eligible" : "indeterminate";
30
+ }
31
+ export function mayReachSettlement(state) {
32
+ return state === "eligible";
33
+ }
34
+ //# sourceMappingURL=claim-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-preflight.js","sourceRoot":"","sources":["../src/claim-preflight.ts"],"names":[],"mappings":"AAUA,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACpC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAC/B,KAAqB,EACrB,eAAuB;IAEvB,IACE,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,OAAO,KAAK,KAAK,QAAQ,EACzB,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,iBAAiB,EAAE,QAAQ,EAC3B,QAAQ,GACT,GAAG,KAA8B,CAAC;IACnC,IACE,CAAC,SAAS,CAAC,SAAS,CAAC;QACrB,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpB,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpB,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC1C,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,eAAe;QAAE,OAAO,eAAe,CAAC;IAExD,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;IAC3D,IAAI,SAAS,IAAI,WAAW;QAAE,OAAO,eAAe,CAAC;IACrD,IAAI,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAC;IACtE,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,OAAO,KAAK,KAAK,UAAU,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { FastProvider } from "@fastxyz/sdk";
2
+ import { type SubmissionRecovery } from "./errors.js";
3
+ export declare function toRestGateway(proxyUrl: string): string;
4
+ export declare function feeTokenFor(networkId: string): {
5
+ tokenId: string;
6
+ symbol: string;
7
+ decimals: number;
8
+ };
9
+ export declare function makeProvider(proxyUrl: string, networkId: string): FastProvider;
10
+ export declare function getNextNonce(provider: FastProvider, address: string): Promise<bigint>;
11
+ export interface BuiltClaim {
12
+ bytes: number[];
13
+ versioned: unknown;
14
+ nonce: string;
15
+ }
16
+ export declare function buildExternalClaimBytes(args: {
17
+ address: string;
18
+ networkId: string;
19
+ nonce: bigint;
20
+ claimDataHex: string;
21
+ feeToken: string | null;
22
+ timestampNanos?: bigint;
23
+ }): Promise<BuiltClaim>;
24
+ export interface SettledClaim {
25
+ txIdHex: string;
26
+ nonce: string;
27
+ }
28
+ export declare class IndeterminateProviderSubmissionError extends Error {
29
+ readonly recovery: SubmissionRecovery;
30
+ constructor(recovery: SubmissionRecovery, options?: {
31
+ cause?: unknown;
32
+ });
33
+ }
34
+ export declare function submitSignedClaim(provider: FastProvider, versioned: unknown, signatureHex: string, expectedNetworkId: string, feeSymbol: string | null): Promise<SettledClaim>;
35
+ //# sourceMappingURL=claim-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-tx.d.ts","sourceRoot":"","sources":["../src/claim-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAU5C,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AAarB,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAIA;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,YAAY,CAKd;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwCtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,oCAAqC,SAAQ,KAAK;aAE3C,QAAQ,EAAE,kBAAkB;gBAA5B,QAAQ,EAAE,kBAAkB,EAC5C,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAQhC;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,YAAY,CAAC,CAqFvB"}
@@ -0,0 +1,140 @@
1
+ import { FastProvider } from "@fastxyz/sdk";
2
+ import { mainnet, testnet } from "@fastxyz/sdk/networks";
3
+ import { encodeTxForWalletSigning } from "@fastxyz/sdk/wallet";
4
+ import { getTransactionVersionConfig, LatestTransactionVersion, SignatureFromInput, } from "@fastxyz/schema";
5
+ import { Schema } from "effect";
6
+ import { NotSettledError, PreSubmitError, SettlementMismatchError, WrongNetworkError, asInsufficientFunds, asNonceConflict, } from "./errors.js";
7
+ import { txIdFromDomainTransaction } from "./fasttx.js";
8
+ const decodeUnknown = Schema.decodeUnknownSync;
9
+ export function toRestGateway(proxyUrl) {
10
+ return proxyUrl
11
+ .replace(/\/proxy\/?$/, "/proxy-rest")
12
+ .replace(/\/+$/, "");
13
+ }
14
+ export function feeTokenFor(networkId) {
15
+ if (networkId === "fast:mainnet")
16
+ return mainnet.defaultToken;
17
+ if (networkId === "fast:testnet")
18
+ return testnet.defaultToken;
19
+ throw new Error(`No default fee token for unknown network ${networkId}`);
20
+ }
21
+ export function makeProvider(proxyUrl, networkId) {
22
+ return new FastProvider({
23
+ url: toRestGateway(proxyUrl),
24
+ networkId: networkId,
25
+ });
26
+ }
27
+ export async function getNextNonce(provider, address) {
28
+ const info = await provider.getAccountInfo({
29
+ address,
30
+ tokenBalancesFilter: null,
31
+ stateKeyFilter: null,
32
+ });
33
+ return info.nextNonce;
34
+ }
35
+ export async function buildExternalClaimBytes(args) {
36
+ const config = getTransactionVersionConfig(LatestTransactionVersion);
37
+ const operation = {
38
+ type: "ExternalClaim",
39
+ value: {
40
+ claim: {
41
+ verifierCommittee: [],
42
+ verifierQuorum: 0,
43
+ claimData: `0x${args.claimDataHex}`,
44
+ },
45
+ signatures: [],
46
+ },
47
+ };
48
+ const transaction = decodeUnknown(config.inputSchema)({
49
+ networkId: args.networkId,
50
+ sender: args.address,
51
+ nonce: args.nonce,
52
+ timestampNanos: args.timestampNanos ?? BigInt(Date.now()) * 1000000n,
53
+ ...config.wrapOperations([operation]),
54
+ archival: false,
55
+ feeToken: args.feeToken,
56
+ });
57
+ const versioned = { type: LatestTransactionVersion, value: transaction };
58
+ const bytes = Array.from(await encodeTxForWalletSigning(versioned));
59
+ if (bytes.length > 4096) {
60
+ throw new Error(`ExternalClaim signing bytes (${bytes.length}) exceed the 4096 popup limit`);
61
+ }
62
+ return { bytes, versioned, nonce: args.nonce.toString() };
63
+ }
64
+ export class IndeterminateProviderSubmissionError extends Error {
65
+ recovery;
66
+ constructor(recovery, options) {
67
+ super("provider submission outcome is indeterminate; the signed transaction may have settled", options);
68
+ this.recovery = recovery;
69
+ this.name = "IndeterminateProviderSubmissionError";
70
+ }
71
+ }
72
+ export async function submitSignedClaim(provider, versioned, signatureHex, expectedNetworkId, feeSymbol) {
73
+ const signature = decodeUnknown(SignatureFromInput)(`0x${signatureHex.replace(/^0x/i, "")}`);
74
+ const envelope = {
75
+ transaction: versioned,
76
+ signature: { type: "Signature", value: signature },
77
+ };
78
+ let submittedTxId;
79
+ try {
80
+ submittedTxId = await txIdFromDomainTransaction(versioned);
81
+ }
82
+ catch (cause) {
83
+ throw new PreSubmitError("could not derive the transaction ID before submission", { cause });
84
+ }
85
+ const recovery = {
86
+ nonce: versioned.value?.nonce,
87
+ txIdHex: submittedTxId,
88
+ recoveryEnvelope: structuredClone(envelope),
89
+ };
90
+ let result;
91
+ try {
92
+ result = (await provider.submitTransaction(structuredClone(recovery.recoveryEnvelope)));
93
+ }
94
+ catch (error) {
95
+ const conflict = asNonceConflict(error);
96
+ if (conflict)
97
+ throw conflict;
98
+ const funds = asInsufficientFunds(error, feeSymbol ?? "fee token");
99
+ if (funds)
100
+ throw funds;
101
+ throw new IndeterminateProviderSubmissionError(recovery, { cause: error });
102
+ }
103
+ if (!result) {
104
+ throw new IndeterminateProviderSubmissionError(recovery, {
105
+ cause: new Error("provider returned no submission result"),
106
+ });
107
+ }
108
+ if (result.type !== "Success" || !result.value) {
109
+ throw new NotSettledError(result.type, recovery);
110
+ }
111
+ let certificateTransaction;
112
+ try {
113
+ certificateTransaction = result.value.envelope.transaction;
114
+ }
115
+ catch (cause) {
116
+ throw new IndeterminateProviderSubmissionError(recovery, { cause });
117
+ }
118
+ let certificateTxId;
119
+ try {
120
+ certificateTxId = await txIdFromDomainTransaction(certificateTransaction);
121
+ }
122
+ catch (cause) {
123
+ throw new IndeterminateProviderSubmissionError(recovery, { cause });
124
+ }
125
+ if (submittedTxId !== certificateTxId) {
126
+ throw new SettlementMismatchError(submittedTxId, certificateTxId, recovery);
127
+ }
128
+ const value = certificateTransaction.value;
129
+ if (!value || value.nonce === undefined) {
130
+ throw new IndeterminateProviderSubmissionError(recovery, {
131
+ cause: new Error("Settled certificate is missing a nonce; unrecognized transaction shape."),
132
+ });
133
+ }
134
+ const certificateNetwork = value.networkId ?? value.network ?? "";
135
+ if (certificateNetwork !== expectedNetworkId) {
136
+ throw new WrongNetworkError(expectedNetworkId, certificateNetwork, recovery);
137
+ }
138
+ return { txIdHex: certificateTxId, nonce: value.nonce.toString() };
139
+ }
140
+ //# sourceMappingURL=claim-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-tx.js","sourceRoot":"","sources":["../src/claim-tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { FastProvider } from "@fastxyz/sdk";
2
+ import { type ClaimDataKind } from "./claim-data.js";
3
+ import { type FeeSource } from "./claim-fee.js";
4
+ import { type PendingRegistrationShape } from "./errors.js";
5
+ import type { IdNetworkConfig } from "./networks.js";
6
+ import type { IdReads } from "./reads.js";
7
+ import type { Signer } from "./signer.js";
8
+ export type ClaimablePropertyKind = "work";
9
+ export type RevocableClaimKind = Exclude<ClaimDataKind, "revoke">;
10
+ export type ProvenPropertyKind = "website" | "github" | "orcid" | "x";
11
+ export interface PendingRegistration extends PendingRegistrationShape {
12
+ }
13
+ export interface RegisteredClaim {
14
+ txIdHex: string;
15
+ nonce: string;
16
+ profileUrl?: string;
17
+ registration: "registered";
18
+ outcome: "applied" | "verified";
19
+ }
20
+ interface ClaimServiceOptions {
21
+ config: IdNetworkConfig;
22
+ signer: Signer;
23
+ provider: FastProvider;
24
+ reads: IdReads;
25
+ feeSource: FeeSource;
26
+ fetchImpl: typeof fetch;
27
+ }
28
+ export declare function snapshotPendingRegistration(value: unknown): PendingRegistration;
29
+ export declare class ClaimService {
30
+ #private;
31
+ constructor(options: ClaimServiceOptions);
32
+ claimName(name: string): Promise<RegisteredClaim>;
33
+ claimProperty(kind: ClaimablePropertyKind, value: string): Promise<RegisteredClaim>;
34
+ /**
35
+ * Settlement entry used only after ProofService has established the external
36
+ * proof gate. Proven claims are unavailable through public claim methods.
37
+ */
38
+ settleProvenProperty(kind: ProvenPropertyKind, value: string): Promise<RegisteredClaim>;
39
+ importWork(doi: string): Promise<RegisteredClaim>;
40
+ revoke(kind: RevocableClaimKind, value: string): Promise<RegisteredClaim>;
41
+ retryRegistration(pending: PendingRegistration): Promise<RegisteredClaim>;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAmBL,KAAK,wBAAwB,EAE9B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAS1C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAMlE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,GAAG,CAAC;AAEtE,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;CAAG;AAExE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC;CACjC;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,KAAK,CAAC;CACzB;AAoBD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAwF/E;AAYD,qBAAa,YAAY;;gBAQX,OAAO,EAAE,mBAAmB;IASlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA4BjD,aAAa,CACjB,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC;IAO3B;;;OAGG;IACG,oBAAoB,CACxB,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,CAAC;IAQ3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS3C,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAqE/E,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;CA0J1E"}