@theoo/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.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/assurance.d.ts +14 -0
- package/dist/assurance.d.ts.map +1 -0
- package/dist/assurance.js +20 -0
- package/dist/assurance.js.map +1 -0
- package/dist/base64url.d.ts +4 -0
- package/dist/base64url.d.ts.map +1 -0
- package/dist/base64url.js +45 -0
- package/dist/base64url.js.map +1 -0
- package/dist/browser.d.ts +18 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +72 -0
- package/dist/browser.js.map +1 -0
- package/dist/client.d.ts +331 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +321 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.d.ts +21 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +12 -0
- package/dist/tokens.js.map +1 -0
- package/dist/transport.d.ts +45 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +170 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +453 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/webauthn.d.ts +34 -0
- package/dist/webauthn.d.ts.map +1 -0
- package/dist/webauthn.js +62 -0
- package/dist/webauthn.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { TheooError } from "./errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Refuse a base URL that would put credentials on the wire in the clear.
|
|
4
|
+
*
|
|
5
|
+
* `http://localhost` is fine and necessary — a browser treats it as a secure
|
|
6
|
+
* context and passkeys require one — so loopback is allowed. Anything else
|
|
7
|
+
* over plaintext has to be asked for explicitly.
|
|
8
|
+
*/
|
|
9
|
+
function checkBaseUrl(raw, allowInsecure) {
|
|
10
|
+
let url;
|
|
11
|
+
try {
|
|
12
|
+
url = new URL(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error(`Theoo: baseUrl is not a URL: ${raw}`);
|
|
16
|
+
}
|
|
17
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
18
|
+
throw new Error(`Theoo: baseUrl must be http or https, got ${url.protocol}`);
|
|
19
|
+
}
|
|
20
|
+
const loopback = url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "[::1]" || url.hostname === "::1";
|
|
21
|
+
if (url.protocol === "http:" && !loopback && !allowInsecure) {
|
|
22
|
+
throw new Error(`Theoo: refusing to send your API key and session token in the clear to ${url.origin}. ` +
|
|
23
|
+
`Use https, or pass allowInsecureHttp: true if this is a network you control.`);
|
|
24
|
+
}
|
|
25
|
+
return raw.replace(/\/+$/, "");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* How long to keep waiting for an account's previous operation to land.
|
|
29
|
+
*
|
|
30
|
+
* Three tries over about twelve seconds: long enough to cover a block or two
|
|
31
|
+
* on the chains Theoo runs on, short enough that a caller who is actually
|
|
32
|
+
* stuck finds out rather than watching a spinner.
|
|
33
|
+
*/
|
|
34
|
+
const PENDING_BACKOFF_MS = [2000, 4000, 6000];
|
|
35
|
+
const PENDING_RETRIES = PENDING_BACKOFF_MS.length;
|
|
36
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
37
|
+
/** HTTP with the two headers every Theoo call needs, the error shape decoded, and refresh-on-expiry. */
|
|
38
|
+
export class Transport {
|
|
39
|
+
constructor(opts) {
|
|
40
|
+
this.refreshing = null;
|
|
41
|
+
this.baseUrl = checkBaseUrl(opts.baseUrl, opts.allowInsecureHttp === true);
|
|
42
|
+
this.apiKey = opts.apiKey;
|
|
43
|
+
this.fetchImpl = opts.fetch ?? ((input, init) => fetch(input, init));
|
|
44
|
+
this.tokens = opts.tokens ?? new (class {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.t = null;
|
|
47
|
+
}
|
|
48
|
+
async load() {
|
|
49
|
+
return this.t;
|
|
50
|
+
}
|
|
51
|
+
async save(t) {
|
|
52
|
+
this.t = t;
|
|
53
|
+
}
|
|
54
|
+
})();
|
|
55
|
+
this.onSession = opts.onSession;
|
|
56
|
+
}
|
|
57
|
+
async request(method, path, body, opts = {}) {
|
|
58
|
+
let attempt = await this.once(method, path, body, opts);
|
|
59
|
+
if (attempt.ok)
|
|
60
|
+
return attempt.value;
|
|
61
|
+
if (opts.user && attempt.error.code === "SESSION_EXPIRED") {
|
|
62
|
+
const refreshed = await this.refresh();
|
|
63
|
+
if (refreshed) {
|
|
64
|
+
const second = await this.once(method, path, body, opts);
|
|
65
|
+
if (second.ok)
|
|
66
|
+
return second.value;
|
|
67
|
+
throw second.error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// `OPERATION_PENDING` means an earlier operation on the same account has
|
|
71
|
+
// not been included yet, so this one was built on a nonce that is still
|
|
72
|
+
// spoken for. Nothing was submitted and nothing was charged, so sending
|
|
73
|
+
// it again is safe in a way almost no other failure is — and waiting is
|
|
74
|
+
// the only thing that resolves it. Doing it here saves every caller
|
|
75
|
+
// writing the same loop and calling a normal few seconds an error.
|
|
76
|
+
for (let i = 0; i < PENDING_RETRIES && attempt.error.code === "OPERATION_PENDING"; i++) {
|
|
77
|
+
await sleep(PENDING_BACKOFF_MS[i] ?? 4000);
|
|
78
|
+
attempt = await this.once(method, path, body, opts);
|
|
79
|
+
if (attempt.ok)
|
|
80
|
+
return attempt.value;
|
|
81
|
+
}
|
|
82
|
+
throw attempt.error;
|
|
83
|
+
}
|
|
84
|
+
async once(method, path, body, opts) {
|
|
85
|
+
const headers = { "x-api-key": this.apiKey, accept: "application/json" };
|
|
86
|
+
if (body !== undefined)
|
|
87
|
+
headers["content-type"] = "application/json";
|
|
88
|
+
if (opts.user) {
|
|
89
|
+
const t = await this.tokens.load();
|
|
90
|
+
if (!t)
|
|
91
|
+
return { ok: false, error: new TheooError("SESSION_INVALID", "Not signed in.", 401) };
|
|
92
|
+
headers.authorization = `Bearer ${t.accessToken}`;
|
|
93
|
+
}
|
|
94
|
+
let res;
|
|
95
|
+
try {
|
|
96
|
+
res = await this.fetchImpl(this.baseUrl + path, {
|
|
97
|
+
method,
|
|
98
|
+
headers,
|
|
99
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
100
|
+
// The API never redirects. Following one would hand `x-api-key` —
|
|
101
|
+
// a custom header, which the Fetch spec does not strip the way it
|
|
102
|
+
// strips `Authorization` — to whatever host the redirect names.
|
|
103
|
+
redirect: "error",
|
|
104
|
+
// Nothing here authenticates with cookies, and sending them would
|
|
105
|
+
// make every call a CSRF target on the API's own origin.
|
|
106
|
+
credentials: "omit",
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
return { ok: false, error: new TheooError("NETWORK", e.message ?? "network error", 0) };
|
|
111
|
+
}
|
|
112
|
+
if (res.status === 204)
|
|
113
|
+
return { ok: true, value: undefined };
|
|
114
|
+
if (res.status === 404 && opts.optional)
|
|
115
|
+
return { ok: true, value: null };
|
|
116
|
+
const text = await res.text();
|
|
117
|
+
let json = null;
|
|
118
|
+
try {
|
|
119
|
+
json = text ? JSON.parse(text) : null;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
/* not JSON */
|
|
123
|
+
}
|
|
124
|
+
if (res.ok)
|
|
125
|
+
return { ok: true, value: json };
|
|
126
|
+
const err = json?.error;
|
|
127
|
+
return {
|
|
128
|
+
ok: false,
|
|
129
|
+
error: new TheooError(err?.code ?? "INTERNAL", err?.message ?? `HTTP ${res.status}`, res.status),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** Store a fresh session; `null` signs out locally. */
|
|
133
|
+
async setSession(session, user) {
|
|
134
|
+
const stored = session
|
|
135
|
+
? {
|
|
136
|
+
accessToken: session.accessToken,
|
|
137
|
+
refreshToken: session.refreshToken,
|
|
138
|
+
expiresAt: Date.now() + session.expiresIn * 1000,
|
|
139
|
+
sessionId: session.sessionId,
|
|
140
|
+
user: user ?? (await this.tokens.load())?.user ?? "",
|
|
141
|
+
aal: session.aal,
|
|
142
|
+
}
|
|
143
|
+
: null;
|
|
144
|
+
await this.tokens.save(stored);
|
|
145
|
+
this.onSession?.(stored);
|
|
146
|
+
return stored;
|
|
147
|
+
}
|
|
148
|
+
/** One refresh at a time; concurrent callers share it. */
|
|
149
|
+
refresh() {
|
|
150
|
+
if (!this.refreshing) {
|
|
151
|
+
this.refreshing = this.doRefresh().finally(() => {
|
|
152
|
+
this.refreshing = null;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return this.refreshing;
|
|
156
|
+
}
|
|
157
|
+
async doRefresh() {
|
|
158
|
+
const t = await this.tokens.load();
|
|
159
|
+
if (!t)
|
|
160
|
+
return null;
|
|
161
|
+
const r = await this.once("POST", "/v1/auth/refresh", { refreshToken: t.refreshToken }, {});
|
|
162
|
+
if (!r.ok) {
|
|
163
|
+
if (r.error.needsSignIn)
|
|
164
|
+
await this.setSession(null);
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return this.setSession(r.value, t.user);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire types, one to one with the Rust DTOs in `theoo-core` and
|
|
3
|
+
* `theoo-api`. Field names are the JSON names (camelCase); enums are the
|
|
4
|
+
* serde spellings. Chain ids are plain numbers.
|
|
5
|
+
*/
|
|
6
|
+
export type AuthProvider = "kingschat" | "email" | "phone" | "google" | "passkey";
|
|
7
|
+
export type ChallengePurpose = "signup" | "login" | "link_identity" | "step_up" | "recovery" | "verify_contact";
|
|
8
|
+
export type AssuranceLevel = "none" | "basic" | "possession" | "verified";
|
|
9
|
+
export type ErrorCode = "CHALLENGE_INVALID" | "CHALLENGE_EXPIRED" | "CHALLENGE_EXHAUSTED" | "SESSION_INVALID" | "SESSION_EXPIRED" | "SESSION_REPLAYED" | "OAUTH_STATE_MISMATCH" | "OAUTH_PROVIDER_ERROR" | "OAUTH_AUDIENCE_MISMATCH" | "PROVIDER_NOT_ENABLED" | "PASSKEY_VERIFICATION_FAILED" | "PASSKEY_CLONED" | "PASSKEY_UNKNOWN" | "IDENTITY_TAKEN" | "IDENTITY_NOT_FOUND" | "LAST_IDENTITY" | "INSUFFICIENT_ASSURANCE" | "STEP_UP_REQUIRED" | "STEP_UP_UNAVAILABLE" | "ACCOUNT_SUSPENDED" | "ACCOUNT_PROVISIONING" | "NO_ACCOUNT" | "CHAIN_UNAVAILABLE" | "OPERATION_INVALID" | "RECOVERY_UNAVAILABLE" | "SESSION_KEY_INVALID" | "BUDGET_EXHAUSTED" | "OPERATION_PENDING" | "TENANT_UNKNOWN" | "TENANT_SUSPENDED" | "API_KEY_INVALID" | "RATE_LIMITED" | "VALIDATION_FAILED" | "NOT_FOUND" | "CONFLICT" | "INTERNAL";
|
|
10
|
+
/** What the tenant knows about the end user's client. Sent along on every request that acts for a user. */
|
|
11
|
+
export interface ClientInfo {
|
|
12
|
+
ip?: string | null;
|
|
13
|
+
userAgent?: string | null;
|
|
14
|
+
origin?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface BeginAuthRequest {
|
|
17
|
+
provider: AuthProvider;
|
|
18
|
+
purpose?: ChallengePurpose;
|
|
19
|
+
/** Email or E.164 phone. For a passkey enrolment, the label for the new credential. */
|
|
20
|
+
destination?: string;
|
|
21
|
+
client?: ClientInfo;
|
|
22
|
+
}
|
|
23
|
+
export type AuthChallenge = {
|
|
24
|
+
kind: "code";
|
|
25
|
+
challengeId: string;
|
|
26
|
+
destinationMasked: string;
|
|
27
|
+
expiresAt: number;
|
|
28
|
+
devCode?: string | null;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "redirect";
|
|
31
|
+
state: string;
|
|
32
|
+
url: string;
|
|
33
|
+
} | {
|
|
34
|
+
kind: "popup";
|
|
35
|
+
state: string;
|
|
36
|
+
url: string;
|
|
37
|
+
expectsPostMessage: boolean;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "webauthn";
|
|
40
|
+
ceremonyId: string;
|
|
41
|
+
options: WebAuthnOptions;
|
|
42
|
+
expiresAt: number;
|
|
43
|
+
};
|
|
44
|
+
/** A WebAuthn options document as the server produces it: `{ publicKey: … }` with base64url byte fields. */
|
|
45
|
+
export interface WebAuthnOptions {
|
|
46
|
+
publicKey: Record<string, unknown>;
|
|
47
|
+
[k: string]: unknown;
|
|
48
|
+
}
|
|
49
|
+
export type CompleteAuthRequest = {
|
|
50
|
+
kind: "code";
|
|
51
|
+
challengeId: string;
|
|
52
|
+
code: string;
|
|
53
|
+
client?: ClientInfo;
|
|
54
|
+
} | {
|
|
55
|
+
kind: "oauth_callback";
|
|
56
|
+
state: string;
|
|
57
|
+
code: string;
|
|
58
|
+
client?: ClientInfo;
|
|
59
|
+
} | {
|
|
60
|
+
kind: "forwarded_token";
|
|
61
|
+
state: string;
|
|
62
|
+
accessToken: string;
|
|
63
|
+
client?: ClientInfo;
|
|
64
|
+
} | {
|
|
65
|
+
kind: "webauthn";
|
|
66
|
+
ceremonyId: string;
|
|
67
|
+
assertion: unknown;
|
|
68
|
+
client?: ClientInfo;
|
|
69
|
+
};
|
|
70
|
+
export interface SessionTokens {
|
|
71
|
+
accessToken: string;
|
|
72
|
+
refreshToken: string;
|
|
73
|
+
expiresIn: number;
|
|
74
|
+
aal: AssuranceLevel;
|
|
75
|
+
sessionId: string;
|
|
76
|
+
}
|
|
77
|
+
export interface SmartAccount {
|
|
78
|
+
address: string;
|
|
79
|
+
chain: number;
|
|
80
|
+
deployed: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* The passkey that owns this account, as a SEC1 compressed P-256 point
|
|
83
|
+
* (`0x02`/`0x03` then x). A public key: the address is derived from it and
|
|
84
|
+
* the chain holds it once deployed. Never the private half, which exists
|
|
85
|
+
* only on the user's device.
|
|
86
|
+
*/
|
|
87
|
+
owner: string;
|
|
88
|
+
}
|
|
89
|
+
export interface AuthOutcome {
|
|
90
|
+
session: SessionTokens;
|
|
91
|
+
user: string;
|
|
92
|
+
account: SmartAccount | null;
|
|
93
|
+
isNewUser: boolean;
|
|
94
|
+
linkedExisting: boolean;
|
|
95
|
+
recommendedNextFactor: AuthProvider | null;
|
|
96
|
+
}
|
|
97
|
+
export interface Me {
|
|
98
|
+
user: string;
|
|
99
|
+
session: string;
|
|
100
|
+
aal: AssuranceLevel;
|
|
101
|
+
effectiveAal: AssuranceLevel;
|
|
102
|
+
stepUpFreshUntil: number | null;
|
|
103
|
+
isStaff: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* An authenticated end user, as a server sees them after resolving the access
|
|
107
|
+
* token their app is holding.
|
|
108
|
+
*
|
|
109
|
+
* Read the level with `effectiveAssurance`, never `subject.aal`: the base
|
|
110
|
+
* level ignores whether a step-up has since gone stale.
|
|
111
|
+
*/
|
|
112
|
+
export interface Caller {
|
|
113
|
+
tenant: string;
|
|
114
|
+
user: string;
|
|
115
|
+
session: string;
|
|
116
|
+
subject: {
|
|
117
|
+
aal: AssuranceLevel;
|
|
118
|
+
stepUpFreshUntil: number | null;
|
|
119
|
+
isStaff: boolean;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A chain this tenant's users can hold accounts on.
|
|
124
|
+
*
|
|
125
|
+
* Every entry shares the tenant's account model, because that is fixed for
|
|
126
|
+
* life. Note that **the account address differs per chain** unless the
|
|
127
|
+
* factory was deployed at the same address everywhere — the address is
|
|
128
|
+
* derived from the factory, so a different factory address gives a different
|
|
129
|
+
* account address for the same passkey.
|
|
130
|
+
*/
|
|
131
|
+
export interface ChainOption {
|
|
132
|
+
chain: number;
|
|
133
|
+
name: string;
|
|
134
|
+
model: "legacy" | "erc4337";
|
|
135
|
+
/** What a call with no `chain` gets. */
|
|
136
|
+
isDefault: boolean;
|
|
137
|
+
/** Whether Theoo pays the gas here. */
|
|
138
|
+
sponsored: boolean;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* A chain a project could be pointed at, as the console sees it before any
|
|
142
|
+
* project exists. Unlike {@link ChainOption} this spans both account models,
|
|
143
|
+
* because choosing the model is part of creating a project.
|
|
144
|
+
*/
|
|
145
|
+
export interface AvailableChain {
|
|
146
|
+
chain: number;
|
|
147
|
+
name: string;
|
|
148
|
+
model: "legacy" | "erc4337";
|
|
149
|
+
/** Whether Theoo pays the gas here. */
|
|
150
|
+
sponsored: boolean;
|
|
151
|
+
}
|
|
152
|
+
/** A project, as the developer who owns it sees it. */
|
|
153
|
+
export interface Project {
|
|
154
|
+
id: string;
|
|
155
|
+
slug: string;
|
|
156
|
+
displayName: string;
|
|
157
|
+
status: string;
|
|
158
|
+
rpId: string;
|
|
159
|
+
origins: string[];
|
|
160
|
+
defaultChain: number;
|
|
161
|
+
accountModel: "legacy" | "erc4337";
|
|
162
|
+
solanaCluster: string | null;
|
|
163
|
+
sponsorshipDailyWei: string | null;
|
|
164
|
+
webhookUrl: string | null;
|
|
165
|
+
googleEnabled: boolean;
|
|
166
|
+
kingschatEnabled: boolean;
|
|
167
|
+
createdAt: number;
|
|
168
|
+
/** How many keys are live on it. */
|
|
169
|
+
keys: number;
|
|
170
|
+
}
|
|
171
|
+
export interface NewProject {
|
|
172
|
+
slug: string;
|
|
173
|
+
name: string;
|
|
174
|
+
/**
|
|
175
|
+
* The domain this project's passkeys bind to. **Permanent** once its users
|
|
176
|
+
* enrol: changing it orphans every credential they have.
|
|
177
|
+
*/
|
|
178
|
+
rpId: string;
|
|
179
|
+
origins: string[];
|
|
180
|
+
chain: number;
|
|
181
|
+
accountModel?: "legacy" | "erc4337";
|
|
182
|
+
}
|
|
183
|
+
export interface NewProjectKey {
|
|
184
|
+
label: string;
|
|
185
|
+
/** `secret` for a server, `publishable` for an app. */
|
|
186
|
+
scope?: "secret" | "publishable";
|
|
187
|
+
origins?: string[];
|
|
188
|
+
providers?: string[];
|
|
189
|
+
providerLimits?: Record<string, number>;
|
|
190
|
+
}
|
|
191
|
+
/** A key, returned once. Theoo stores only its hash. */
|
|
192
|
+
export interface IssuedKey extends ApiKeySummary {
|
|
193
|
+
key: string;
|
|
194
|
+
}
|
|
195
|
+
export interface ApiKeySummary {
|
|
196
|
+
prefix: string;
|
|
197
|
+
label: string;
|
|
198
|
+
scope: string;
|
|
199
|
+
allowedOrigins: string[] | null;
|
|
200
|
+
allowedProviders: string[] | null;
|
|
201
|
+
providerLimits: Record<string, number> | null;
|
|
202
|
+
createdAt: number;
|
|
203
|
+
lastUsedAt: number | null;
|
|
204
|
+
revokedAt: number | null;
|
|
205
|
+
}
|
|
206
|
+
export interface Elevation {
|
|
207
|
+
elevatedUntil: number;
|
|
208
|
+
ttlSeconds: number;
|
|
209
|
+
}
|
|
210
|
+
export interface IdentitySummary {
|
|
211
|
+
provider: AuthProvider;
|
|
212
|
+
contactMasked: string | null;
|
|
213
|
+
label: string | null;
|
|
214
|
+
verified: boolean;
|
|
215
|
+
canStepUp: boolean;
|
|
216
|
+
addedAt: number;
|
|
217
|
+
lastUsedAt: number | null;
|
|
218
|
+
}
|
|
219
|
+
/** A call for the account to make. Hex strings and decimal wei, so nothing here needs a chain library. */
|
|
220
|
+
export interface ChainCall {
|
|
221
|
+
to: string;
|
|
222
|
+
value?: string;
|
|
223
|
+
data?: string;
|
|
224
|
+
}
|
|
225
|
+
export interface SessionGrant {
|
|
226
|
+
/** The one contract the session may call. Never the account itself. */
|
|
227
|
+
target: string;
|
|
228
|
+
/**
|
|
229
|
+
* The one function it may call there, as `0x` plus eight hex digits.
|
|
230
|
+
* Absent means any function on that target, which a spend cap cannot bound:
|
|
231
|
+
* `transfer` and `approve` live on the same token. ERC-4337 accounts only.
|
|
232
|
+
*/
|
|
233
|
+
selector?: string | null;
|
|
234
|
+
/** Total native value it may send over its life, decimal wei. */
|
|
235
|
+
spendCap?: string;
|
|
236
|
+
/** Unix seconds. */
|
|
237
|
+
expiresAt: number;
|
|
238
|
+
label?: string | null;
|
|
239
|
+
}
|
|
240
|
+
export type OperationKind = {
|
|
241
|
+
kind: "call";
|
|
242
|
+
call: ChainCall;
|
|
243
|
+
} | {
|
|
244
|
+
kind: "enable_recovery";
|
|
245
|
+
} | {
|
|
246
|
+
kind: "cancel_recovery";
|
|
247
|
+
} | {
|
|
248
|
+
kind: "grant_session";
|
|
249
|
+
session: SessionGrant;
|
|
250
|
+
} | {
|
|
251
|
+
kind: "renew_session";
|
|
252
|
+
session: SessionRenewal;
|
|
253
|
+
} | {
|
|
254
|
+
kind: "revoke_session";
|
|
255
|
+
session: string;
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* New terms for a session key that already exists, keeping its address, its
|
|
259
|
+
* target and its selector.
|
|
260
|
+
*
|
|
261
|
+
* Both account models implement a grant by overwriting the key's slot, so a
|
|
262
|
+
* renewal **resets what has been spent** rather than continuing the old
|
|
263
|
+
* tally. It is a new grant to the same key, which is why the passkey signs
|
|
264
|
+
* it; what you save is minting a key and distributing a new address.
|
|
265
|
+
*/
|
|
266
|
+
export interface SessionRenewal {
|
|
267
|
+
session: string;
|
|
268
|
+
/** Unix seconds, later than now. */
|
|
269
|
+
expiresAt: number;
|
|
270
|
+
/** A new cap, or omit to keep the one it has. Either way, spent restarts. */
|
|
271
|
+
spendCap?: string;
|
|
272
|
+
}
|
|
273
|
+
export interface PreparedOperation {
|
|
274
|
+
id: string;
|
|
275
|
+
chain: number;
|
|
276
|
+
account: string;
|
|
277
|
+
/** The 32 bytes the passkey signs, hex. */
|
|
278
|
+
challenge: string;
|
|
279
|
+
webauthnOptions: WebAuthnOptions;
|
|
280
|
+
expiresAt: number;
|
|
281
|
+
model: "legacy" | "erc4337";
|
|
282
|
+
sponsored: boolean;
|
|
283
|
+
deploys: boolean;
|
|
284
|
+
session?: string | null;
|
|
285
|
+
}
|
|
286
|
+
export type OperationState = "prepared" | "submitted" | "included" | "failed" | "expired";
|
|
287
|
+
export interface OperationStatus {
|
|
288
|
+
id: string;
|
|
289
|
+
chain: number;
|
|
290
|
+
account: string;
|
|
291
|
+
kind: string;
|
|
292
|
+
state: OperationState;
|
|
293
|
+
to: string;
|
|
294
|
+
value: string;
|
|
295
|
+
txHash: string | null;
|
|
296
|
+
deployTxHash: string | null;
|
|
297
|
+
userOpHash: string | null;
|
|
298
|
+
error: string | null;
|
|
299
|
+
session?: string | null;
|
|
300
|
+
createdAt: number;
|
|
301
|
+
submittedAt: number | null;
|
|
302
|
+
includedAt: number | null;
|
|
303
|
+
}
|
|
304
|
+
export interface PendingRecovery {
|
|
305
|
+
newPasskey: string | null;
|
|
306
|
+
readyAt: number;
|
|
307
|
+
approvals: number;
|
|
308
|
+
canComplete: boolean;
|
|
309
|
+
}
|
|
310
|
+
export interface RecoveryStatus {
|
|
311
|
+
chain: number;
|
|
312
|
+
account: string | null;
|
|
313
|
+
deployed: boolean;
|
|
314
|
+
platformGuardian: string | null;
|
|
315
|
+
enabled: boolean;
|
|
316
|
+
guardianCount: number;
|
|
317
|
+
threshold: number;
|
|
318
|
+
ownerPasskey: string | null;
|
|
319
|
+
candidatePasskey: string | null;
|
|
320
|
+
pending: PendingRecovery | null;
|
|
321
|
+
}
|
|
322
|
+
export type SessionKeyState = "pending" | "active" | "expired" | "revoked" | "failed";
|
|
323
|
+
export interface SessionKey {
|
|
324
|
+
id: string;
|
|
325
|
+
chain: number;
|
|
326
|
+
account: string;
|
|
327
|
+
key: string;
|
|
328
|
+
target: string;
|
|
329
|
+
selector: string | null;
|
|
330
|
+
spendCap: string;
|
|
331
|
+
spent: string;
|
|
332
|
+
expiresAt: number;
|
|
333
|
+
state: SessionKeyState;
|
|
334
|
+
label: string | null;
|
|
335
|
+
grantOperation: string | null;
|
|
336
|
+
renewOperation: string | null;
|
|
337
|
+
revokeOperation: string | null;
|
|
338
|
+
createdAt: number;
|
|
339
|
+
lastUsedAt: number | null;
|
|
340
|
+
}
|
|
341
|
+
export interface SolanaAccountMeta {
|
|
342
|
+
pubkey: string;
|
|
343
|
+
isSigner?: boolean;
|
|
344
|
+
isWritable?: boolean;
|
|
345
|
+
}
|
|
346
|
+
/** What a Solana session key may do. The program enforces every bound. */
|
|
347
|
+
export interface SolanaSessionGrant {
|
|
348
|
+
/** The one address it may send to, or the one program it may invoke. */
|
|
349
|
+
target: string;
|
|
350
|
+
/** Total lamports it may send over its life, decimal. */
|
|
351
|
+
spendCap?: string;
|
|
352
|
+
/** Unix seconds. */
|
|
353
|
+
expiresAt: number;
|
|
354
|
+
label?: string | null;
|
|
355
|
+
}
|
|
356
|
+
/** What the passkey authorises on Solana. Lamports are decimal strings; instruction data is base64. */
|
|
357
|
+
export type SolanaAction = {
|
|
358
|
+
kind: "transfer";
|
|
359
|
+
to: string;
|
|
360
|
+
lamports: string;
|
|
361
|
+
} | {
|
|
362
|
+
kind: "invoke";
|
|
363
|
+
programId: string;
|
|
364
|
+
accounts: SolanaAccountMeta[];
|
|
365
|
+
data: string;
|
|
366
|
+
} | {
|
|
367
|
+
kind: "enable_recovery";
|
|
368
|
+
} | {
|
|
369
|
+
kind: "cancel_recovery";
|
|
370
|
+
} | {
|
|
371
|
+
kind: "grant_session";
|
|
372
|
+
session: SolanaSessionGrant;
|
|
373
|
+
} | {
|
|
374
|
+
kind: "renew_session";
|
|
375
|
+
session: SessionRenewal;
|
|
376
|
+
} | {
|
|
377
|
+
kind: "revoke_session";
|
|
378
|
+
session: string;
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* A Solana session key. The same bounded delegate as on the EVM side, minus
|
|
382
|
+
* the selector: a Solana instruction has no four-byte function id, so the
|
|
383
|
+
* bound is the one program it may call.
|
|
384
|
+
*/
|
|
385
|
+
export interface SolanaSessionKey {
|
|
386
|
+
id: string;
|
|
387
|
+
cluster: string;
|
|
388
|
+
account: string;
|
|
389
|
+
key: string;
|
|
390
|
+
target: string;
|
|
391
|
+
spendCap: string;
|
|
392
|
+
spent: string;
|
|
393
|
+
expiresAt: number;
|
|
394
|
+
state: SessionKeyState;
|
|
395
|
+
label: string | null;
|
|
396
|
+
grantOperation: string | null;
|
|
397
|
+
renewOperation: string | null;
|
|
398
|
+
revokeOperation: string | null;
|
|
399
|
+
createdAt: number;
|
|
400
|
+
lastUsedAt: number | null;
|
|
401
|
+
}
|
|
402
|
+
export interface SolanaPendingRecovery {
|
|
403
|
+
newPasskey: string | null;
|
|
404
|
+
readyAt: number;
|
|
405
|
+
approvals: number;
|
|
406
|
+
canComplete: boolean;
|
|
407
|
+
}
|
|
408
|
+
export interface SolanaRecoveryStatus {
|
|
409
|
+
cluster: string;
|
|
410
|
+
account: string | null;
|
|
411
|
+
initialized: boolean;
|
|
412
|
+
platformGuardian: string | null;
|
|
413
|
+
enabled: boolean;
|
|
414
|
+
guardianCount: number;
|
|
415
|
+
threshold: number;
|
|
416
|
+
ownerPasskey: string | null;
|
|
417
|
+
candidatePasskey: string | null;
|
|
418
|
+
pending: SolanaPendingRecovery | null;
|
|
419
|
+
}
|
|
420
|
+
export interface SolanaAccount {
|
|
421
|
+
cluster: string;
|
|
422
|
+
address: string;
|
|
423
|
+
initialized: boolean;
|
|
424
|
+
lamports: string;
|
|
425
|
+
}
|
|
426
|
+
export interface PreparedSolanaOperation {
|
|
427
|
+
id: string;
|
|
428
|
+
cluster: string;
|
|
429
|
+
account: string;
|
|
430
|
+
challenge: string;
|
|
431
|
+
webauthnOptions: WebAuthnOptions;
|
|
432
|
+
expiresAt: number;
|
|
433
|
+
nonce: number;
|
|
434
|
+
initializes: boolean;
|
|
435
|
+
/** For `grant_session` and `revoke_session`: the key concerned. */
|
|
436
|
+
session?: string | null;
|
|
437
|
+
}
|
|
438
|
+
export interface SolanaOperationStatus {
|
|
439
|
+
id: string;
|
|
440
|
+
cluster: string;
|
|
441
|
+
account: string;
|
|
442
|
+
kind: "transfer" | "invoke" | "enable_recovery" | "cancel_recovery" | "grant_session" | "renew_session" | "revoke_session" | "session_call";
|
|
443
|
+
/** The session key this operation granted, revoked or acted under. */
|
|
444
|
+
session?: string | null;
|
|
445
|
+
summary: Record<string, unknown>;
|
|
446
|
+
state: OperationState;
|
|
447
|
+
signature: string | null;
|
|
448
|
+
error: string | null;
|
|
449
|
+
createdAt: number;
|
|
450
|
+
submittedAt: number | null;
|
|
451
|
+
includedAt: number | null;
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|