@seedprotocol/publish 0.7.3 → 0.7.4-next.784.g879c6a3
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 +75 -0
- package/dist/authorization.d.ts +41 -0
- package/dist/authorization.d.ts.map +1 -0
- package/dist/{chainConfig-RhKIuGtN.js → chainConfig-BHTH_BGB.js} +2012 -1488
- package/dist/chainConfig-BHTH_BGB.js.map +1 -0
- package/dist/config.d.ts +25 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/{ensureAutomationSessionKey-CvUntLne.js → ensureAutomationSessionKey-DITIsceC.js} +31 -31
- package/dist/{ensureAutomationSessionKey-CvUntLne.js.map → ensureAutomationSessionKey-DITIsceC.js.map} +1 -1
- package/dist/ensureModularPublishBootstrap-sAAJn75c.js +21 -0
- package/dist/{ensureModularPublishBootstrap-D9q246TT.js.map → ensureModularPublishBootstrap-sAAJn75c.js.map} +1 -1
- package/dist/{ensureSmartWalletThenPublish-C_iS5Wb-.js → ensureSmartWalletThenPublish-hRJ9T0f8.js} +15 -15
- package/dist/{ensureSmartWalletThenPublish-C_iS5Wb-.js.map → ensureSmartWalletThenPublish-hRJ9T0f8.js.map} +1 -1
- package/dist/helpers/abi/eas.d.ts +42 -0
- package/dist/helpers/abi/eas.d.ts.map +1 -1
- package/dist/helpers/adapters/permissionlessTxSender.d.ts +5 -1
- package/dist/helpers/adapters/permissionlessTxSender.d.ts.map +1 -1
- package/dist/helpers/ensureWalletThenPublish.d.ts.map +1 -1
- package/dist/helpers/publishWalletRegistry.d.ts +5 -0
- package/dist/helpers/publishWalletRegistry.d.ts.map +1 -1
- package/dist/helpers/resolveRevokeAccount.d.ts.map +1 -1
- package/dist/helpers/turbo.d.ts +55 -0
- package/dist/helpers/turbo.d.ts.map +1 -0
- package/dist/helpers/uploadApi.d.ts +3 -1
- package/dist/helpers/uploadApi.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +338 -479
- package/dist/index.js.map +1 -1
- package/dist/{managedAccountAdmin-CLVRJEKI.js → managedAccountAdmin-CSBb6NaZ.js} +10 -10
- package/dist/{managedAccountAdmin-CLVRJEKI.js.map → managedAccountAdmin-CSBb6NaZ.js.map} +1 -1
- package/dist/payment.d.ts +106 -0
- package/dist/payment.d.ts.map +1 -0
- package/dist/{publishAuthorization-DAarz1JK.js → publishAuthorization-CZyvsNGG.js} +25 -25
- package/dist/{publishAuthorization-DAarz1JK.js.map → publishAuthorization-CZyvsNGG.js.map} +1 -1
- package/dist/react/ConnectButton.d.ts.map +1 -1
- package/dist/react/useSeedWallet.d.ts.map +1 -1
- package/dist/resolveRevokeAccount-CbQiAEZp.js +37 -0
- package/dist/resolveRevokeAccount-CbQiAEZp.js.map +1 -0
- package/dist/services/arweaveL1Finalize/worker.d.ts.map +1 -1
- package/dist/services/domainOwnership/challenge.d.ts +4 -1
- package/dist/services/domainOwnership/challenge.d.ts.map +1 -1
- package/dist/services/domainOwnership/index.d.ts +1 -1
- package/dist/services/domainOwnership/index.d.ts.map +1 -1
- package/dist/services/domainOwnership/public.d.ts +1 -1
- package/dist/services/domainOwnership/public.d.ts.map +1 -1
- package/dist/services/domainOwnership/registry.d.ts +2 -0
- package/dist/services/domainOwnership/registry.d.ts.map +1 -1
- package/dist/services/publish/actors/authorizing.d.ts +10 -0
- package/dist/services/publish/actors/authorizing.d.ts.map +1 -0
- package/dist/services/publish/actors/checking.d.ts.map +1 -1
- package/dist/services/publish/actors/createAttestationsDirectToEas.d.ts.map +1 -1
- package/dist/services/publish/actors/index.d.ts +1 -0
- package/dist/services/publish/actors/index.d.ts.map +1 -1
- package/dist/services/publish/actors/sendReimbursementRequest.d.ts.map +1 -1
- package/dist/services/publish/actors/uploadViaBundler.d.ts.map +1 -1
- package/dist/services/publish/helpers/undeployedSmartAccount.d.ts +15 -0
- package/dist/services/publish/helpers/undeployedSmartAccount.d.ts.map +1 -0
- package/dist/services/publish/helpers/uploadToTurbo.d.ts +8 -0
- package/dist/services/publish/helpers/uploadToTurbo.d.ts.map +1 -0
- package/dist/services/publish/helpers/verifyArweaveTransactionsExist.d.ts +2 -1
- package/dist/services/publish/helpers/verifyArweaveTransactionsExist.d.ts.map +1 -1
- package/dist/services/publish/index.d.ts +13 -1
- package/dist/services/publish/index.d.ts.map +1 -1
- package/dist/services/publishCost/estimatePublishCost.d.ts +1 -0
- package/dist/services/publishCost/estimatePublishCost.d.ts.map +1 -1
- package/dist/services/publishCost/types.d.ts +7 -0
- package/dist/services/publishCost/types.d.ts.map +1 -1
- package/dist/services/publishManager/actions/createPublish.d.ts.map +1 -1
- package/dist/services/publishManager/actions/requestSavePublish.d.ts +10 -0
- package/dist/services/publishManager/actions/requestSavePublish.d.ts.map +1 -1
- package/dist/services/revoke/revokeAttestations.d.ts +2 -1
- package/dist/services/revoke/revokeAttestations.d.ts.map +1 -1
- package/dist/thirdweb.js +106 -105
- package/dist/thirdweb.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/undeployedSmartAccount-DwGsM3K1.js +24 -0
- package/dist/undeployedSmartAccount-DwGsM3K1.js.map +1 -0
- package/dist/worker--EZUESZk.js +88 -0
- package/dist/worker--EZUESZk.js.map +1 -0
- package/package.json +6 -6
- package/dist/chainConfig-RhKIuGtN.js.map +0 -1
- package/dist/ensureModularPublishBootstrap-D9q246TT.js +0 -21
- package/dist/resolveRevokeAccount-TRcqJtIO.js +0 -36
- package/dist/resolveRevokeAccount-TRcqJtIO.js.map +0 -1
- package/dist/worker-CyuMiBB-.js +0 -72
- package/dist/worker-CyuMiBB-.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managedAccountAdmin-
|
|
1
|
+
{"version":3,"file":"managedAccountAdmin-CSBb6NaZ.js","names":["__exportAll","readIsAdmin","getModularAccountWallet","syncPublishInAppAuthToken","ManagedAccountPublishError","getPublishThirdwebChain","getClient","getPublishChainName","managedAccountAdmin_exports","getManagedAccountAdmin","wallet","admin","managedAddress","isAdmin","cause"],"sources":["../src/helpers/managedAccountAdmin.ts"],"sourcesContent":["import type { Address } from 'viem'\nimport type { Account } from 'thirdweb/wallets'\nimport { ManagedAccountPublishError } from '../errors'\nimport { getPublishChainName } from './chainConfig'\nimport { readIsAdmin } from './contracts'\nimport { getClient, getModularAccountWallet, syncPublishInAppAuthToken } from './thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Connects the user's in-app EOA, the ManagedAccount's admin, for admin-only transactions such as\n * `installSeedExecutor`. Those must come from the admin directly: the new contracts reject them as\n * self-calls from the smart account. `PublishConfig.thirdweb.modularWalletMode` decides whether\n * the EOA sends gas-sponsored EIP-7702 transactions (default) or plain funded ones.\n *\n * @throws ManagedAccountPublishError `MANAGED_ACCOUNT_UNAVAILABLE` when the wallet is not\n * connected or is not an admin of `managedAddress`\n */\nexport async function getManagedAccountAdmin(managedAddress: string): Promise<Account> {\n syncPublishInAppAuthToken()\n const wallet = getModularAccountWallet()\n await wallet.autoConnect({ client: getClient(), chain: getPublishThirdwebChain() })\n const admin = wallet.getAccount()\n if (!admin) {\n throw new ManagedAccountPublishError(\n `Could not connect the in-app wallet that administers your publishing account on ${getPublishChainName()}. Reconnect with the same sign-in method and try again.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n let isAdmin: boolean\n try {\n isAdmin = await readIsAdmin(managedAddress as Address, admin.address as Address)\n } catch (cause) {\n throw new ManagedAccountPublishError(\n `Could not check the admins of your publishing account on ${getPublishChainName()}.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n cause,\n )\n }\n if (!isAdmin) {\n throw new ManagedAccountPublishError(\n `The connected in-app wallet (${admin.address}) is not an admin of publishing account ${managedAddress}.`,\n 'MANAGED_ACCOUNT_UNAVAILABLE',\n managedAddress,\n )\n }\n return admin\n}\n"],"mappings":";;;;AAiBA,eAAsBS,EAAuB,GAA0C;CACrF,EAA0B;CAC1B,IAAMC,IAASR,EAAwB;CACvC,MAAMQ,EAAO,YAAY;EAAE,QAAQJ,EAAU;EAAG,OAAOD,EAAwB;CAAE,CAAC;CAClF,IAAMM,IAAQD,EAAO,WAAW;CAChC,IAAI,CAACC,GACH,MAAM,IAAIP,EACR,mFAAmFG,EAAoB,EAAE,0DACzG,+BACAK,CACF;CAEF,IAAIC;CACJ,IAAI;EACF,IAAU,MAAMZ,EAAYW,GAA2BD,EAAM,OAAkB;CACjF,SAASG,GAAO;EACd,MAAM,IAAIV,EACR,4DAA4DG,EAAoB,EAAE,IAClF,+BACAK,GACAE,CACF;CACF;CACA,IAAI,CAACD,GACH,MAAM,IAAIT,EACR,gCAAgCO,EAAM,QAAQ,0CAA0CC,EAAe,IACvG,+BACAA,CACF;CAEF,OAAOD;AACT"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { PublishConfig } from './config';
|
|
2
|
+
/**
|
|
3
|
+
* Who pays a publish's EVM gas: `'sponsored'` (a Thirdweb or ERC-4337 paymaster) or `'user'`
|
|
4
|
+
* (the publishing account's own ETH).
|
|
5
|
+
*/
|
|
6
|
+
export type PublishGasPayer = 'sponsored' | 'user';
|
|
7
|
+
/**
|
|
8
|
+
* Who pays for Arweave storage: `'operator'` (the upload API at `uploadApiBaseUrl` funds it) or
|
|
9
|
+
* `'user'` (see {@link PublishUserStorageConfig}).
|
|
10
|
+
*/
|
|
11
|
+
export type PublishStoragePayer = 'operator' | 'user';
|
|
12
|
+
/** Default Turbo endpoints (ArDrive). */
|
|
13
|
+
export declare const DEFAULT_TURBO_UPLOAD_URL = "https://upload.ardrive.io";
|
|
14
|
+
export declare const DEFAULT_TURBO_PAYMENT_URL = "https://payment.ardrive.io";
|
|
15
|
+
/**
|
|
16
|
+
* How users pay for storage when `payment.storage` is `'user'`. The only provider so far is
|
|
17
|
+
* Turbo: data items, signed by the user's EVM key as on the bundler path, go straight to the
|
|
18
|
+
* Turbo upload service, which charges that address's Turbo credits (topped up with a card or
|
|
19
|
+
* crypto through Turbo). Items under Turbo's free-tier size are free.
|
|
20
|
+
*/
|
|
21
|
+
export interface PublishUserStorageConfig {
|
|
22
|
+
provider?: 'turbo';
|
|
23
|
+
/** Turbo upload service. Default {@link DEFAULT_TURBO_UPLOAD_URL}. */
|
|
24
|
+
uploadUrl?: string;
|
|
25
|
+
/** Turbo payment service (balances, prices). Default {@link DEFAULT_TURBO_PAYMENT_URL}. */
|
|
26
|
+
paymentUrl?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Addresses whose shared Turbo credits pay first (Turbo's `x-paid-by`), e.g. an app wallet that
|
|
29
|
+
* approved credits for its users. The signer's own credits cover the rest.
|
|
30
|
+
*/
|
|
31
|
+
paidBy?: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Who pays for a publish. Each field is optional: leave it out to keep what the lower-level
|
|
35
|
+
* settings (`thirdweb.sponsorGas`, `paymasterUrl`, ...) give. When set, it fills in those
|
|
36
|
+
* settings' defaults, and `initPublish` throws if a setting contradicts it.
|
|
37
|
+
*/
|
|
38
|
+
export interface PublishPaymentConfig {
|
|
39
|
+
gas?: PublishGasPayer;
|
|
40
|
+
storage?: PublishStoragePayer;
|
|
41
|
+
/** With `storage: 'user'`: the provider users pay. Defaults to Turbo. */
|
|
42
|
+
userStorage?: PublishUserStorageConfig;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Which account sends a publish's transactions:
|
|
46
|
+
* - `'modular'`: the user's Thirdweb managed account (`useModularExecutor`)
|
|
47
|
+
* - `'eip7702'`: the permissionless EIP-7702 sender (`accountMode: 'eip7702'` with `bundlerUrl`)
|
|
48
|
+
* - `'wallet'`: the registered publish wallet as-is (EIP-1193, ethers or a Thirdweb account)
|
|
49
|
+
*/
|
|
50
|
+
export type PublishSenderKind = 'modular' | 'eip7702' | 'wallet';
|
|
51
|
+
export interface ResolvedPublishPayment {
|
|
52
|
+
sender: PublishSenderKind;
|
|
53
|
+
gas: {
|
|
54
|
+
payer: PublishGasPayer;
|
|
55
|
+
/** Who sponsors when `payer` is `'sponsored'`. */
|
|
56
|
+
sponsor?: 'thirdweb' | 'paymaster';
|
|
57
|
+
};
|
|
58
|
+
storage: {
|
|
59
|
+
payer: PublishStoragePayer;
|
|
60
|
+
path: 'l1' | 'bundler';
|
|
61
|
+
/** Where uploads go: the upload API, or (user-paid) Turbo directly. */
|
|
62
|
+
uploadTo: 'upload-api' | 'turbo';
|
|
63
|
+
/** Set when `uploadTo` is `'turbo'`. */
|
|
64
|
+
turbo?: {
|
|
65
|
+
uploadUrl: string;
|
|
66
|
+
paymentUrl: string;
|
|
67
|
+
paidBy: string[];
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export declare class PublishPaymentConfigError extends Error {
|
|
72
|
+
constructor(message: string);
|
|
73
|
+
}
|
|
74
|
+
type PaymentInputs = Pick<PublishConfig, 'payment' | 'useModularExecutor' | 'accountMode' | 'bundlerUrl' | 'paymasterUrl' | 'thirdweb' | 'useArweaveBundler'>;
|
|
75
|
+
/** The sender ensureWalletThenPublish and useSeedWallet use for this config. */
|
|
76
|
+
export declare function resolvePublishSender(config: PaymentInputs): PublishSenderKind;
|
|
77
|
+
/**
|
|
78
|
+
* `thirdweb.sponsorGas` with `payment.gas` as its default. Thirdweb wallets read this, so a
|
|
79
|
+
* `payment: { gas: 'user' }` config builds unsponsored wallets without setting sponsorGas too.
|
|
80
|
+
*/
|
|
81
|
+
export declare function resolveSponsorGas(config: Pick<PublishConfig, 'payment' | 'thirdweb'>): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Who pays gas and storage for this config, from the sender it selects. The publish flow and
|
|
84
|
+
* {@link estimatePublishCost} both use this, so a cost estimate reports what a publish does.
|
|
85
|
+
*
|
|
86
|
+
* - modular: Thirdweb sponsors when `thirdweb.sponsorGas` (default true)
|
|
87
|
+
* - eip7702: a paymaster sponsors (`paymasterUrl`, else the bundler), unless `payment.gas` is
|
|
88
|
+
* `'user'`, which sends without one
|
|
89
|
+
* - wallet: the user pays
|
|
90
|
+
*
|
|
91
|
+
* Operator-paid storage goes through the upload API on both paths. On the bundler path the
|
|
92
|
+
* user's key signs data items and the operator pays for them. On the L1 path the user's Arweave
|
|
93
|
+
* key pays the fee and the upload API reimburses it before the upload; the second pass for
|
|
94
|
+
* deferred Html is not reimbursed. User-paid storage uploads data items to Turbo, charged to the
|
|
95
|
+
* signer's credits.
|
|
96
|
+
*/
|
|
97
|
+
export declare function resolvePublishPayment(config: PaymentInputs): ResolvedPublishPayment;
|
|
98
|
+
/** `useArweaveBundler` with `payment.storage: 'user'` as its default (user-paid storage uploads data items). */
|
|
99
|
+
export declare function resolveUseArweaveBundler(config: Pick<PublishConfig, 'payment' | 'useArweaveBundler'>): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Throws {@link PublishPaymentConfigError} when `payment` asks for something the other settings
|
|
102
|
+
* can't deliver. Called by `initPublish`.
|
|
103
|
+
*/
|
|
104
|
+
export declare function assertPublishPaymentConfig(config: PaymentInputs): void;
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=payment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,MAAM,CAAA;AAElD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,CAAA;AAErD,yCAAyC;AACzC,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AACnE,eAAO,MAAM,yBAAyB,+BAA+B,CAAA;AAErE;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,eAAe,CAAA;IACrB,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,yEAAyE;IACzE,WAAW,CAAC,EAAE,wBAAwB,CAAA;CACvC;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,iBAAiB,CAAA;IACzB,GAAG,EAAE;QACH,KAAK,EAAE,eAAe,CAAA;QACtB,kDAAkD;QAClD,OAAO,CAAC,EAAE,UAAU,GAAG,WAAW,CAAA;KACnC,CAAA;IACD,OAAO,EAAE;QACP,KAAK,EAAE,mBAAmB,CAAA;QAC1B,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;QACtB,uEAAuE;QACvE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAA;QAChC,wCAAwC;QACxC,KAAK,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAA;KACpE,CAAA;CACF;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,KAAK,aAAa,GAAG,IAAI,CACvB,aAAa,EACb,SAAS,GAAG,oBAAoB,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,UAAU,GAAG,mBAAmB,CACpH,CAAA;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAK7E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,UAAU,CAAC,GAAG,OAAO,CAI9F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,sBAAsB,CAqCnF;AAED,gHAAgH;AAChH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,mBAAmB,CAAC,GAAG,OAAO,CAE9G;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAoCtE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { At as e, Ct as t, D as n, E as r, Mt as i, O as a, Tt as o, a as s, jt as c, qt as l } from "./chainConfig-BHTH_BGB.js";
|
|
2
2
|
import { keccak256 as u, toUtf8Bytes as d } from "ethers";
|
|
3
3
|
import { SchemaEncoder as f, SchemaRegistry as p, ZERO_BYTES32 as m } from "@ethereum-attestation-service/eas-sdk";
|
|
4
4
|
import { createContext as h, useContext as g } from "react";
|
|
@@ -13,7 +13,7 @@ function A() {
|
|
|
13
13
|
//#endregion
|
|
14
14
|
//#region src/helpers/approvedTargetsForAutomationPublish.ts
|
|
15
15
|
function j() {
|
|
16
|
-
let e =
|
|
16
|
+
let e = s().modularAccountModuleContract?.trim();
|
|
17
17
|
if (!e || !/^0x[0-9a-fA-F]{40}$/.test(e)) throw Error("@seedprotocol/publish: session keys require PublishConfig.modularAccountModuleContract (their only approved target is the Seed executor module).");
|
|
18
18
|
return [e.toLowerCase()];
|
|
19
19
|
}
|
|
@@ -45,13 +45,13 @@ function F(e) {
|
|
|
45
45
|
//#region src/services/publishAuthorization/index.ts
|
|
46
46
|
var I = "0x0000000000000000000000000000000000000000", L = !0, R = "0x0000000000000000000000000000000000000000";
|
|
47
47
|
function z(e) {
|
|
48
|
-
if (
|
|
49
|
-
if (
|
|
48
|
+
if (t(e)) return e.txSender;
|
|
49
|
+
if (o(e)) return e;
|
|
50
50
|
throw Error("@seedprotocol/publish: publish authorization write APIs require a PublishWallet or SeedTxSender");
|
|
51
51
|
}
|
|
52
|
-
async function B(
|
|
53
|
-
let
|
|
54
|
-
return
|
|
52
|
+
async function B(e, t) {
|
|
53
|
+
let n = await e.sendTransaction(t);
|
|
54
|
+
return l(n.transactionHash);
|
|
55
55
|
}
|
|
56
56
|
function V(e, t) {
|
|
57
57
|
let n = t.trim();
|
|
@@ -62,15 +62,15 @@ function H() {
|
|
|
62
62
|
return p.getSchemaUID(v, I, L);
|
|
63
63
|
}
|
|
64
64
|
async function U(e) {
|
|
65
|
-
let t = z(e),
|
|
66
|
-
return await
|
|
65
|
+
let t = z(e), i = H();
|
|
66
|
+
return await n(i) || (await B(t, a({
|
|
67
67
|
schema: v,
|
|
68
68
|
resolverAddress: I,
|
|
69
69
|
revocable: L
|
|
70
|
-
})), await B(t,
|
|
71
|
-
schemaUid:
|
|
70
|
+
})), await B(t, r({
|
|
71
|
+
schemaUid: i,
|
|
72
72
|
schemaName: b
|
|
73
|
-
}))),
|
|
73
|
+
}))), i;
|
|
74
74
|
}
|
|
75
75
|
function W(e) {
|
|
76
76
|
return new f(v).encodeData([
|
|
@@ -111,21 +111,21 @@ function W(e) {
|
|
|
111
111
|
}
|
|
112
112
|
]);
|
|
113
113
|
}
|
|
114
|
-
async function G(
|
|
115
|
-
let
|
|
114
|
+
async function G(t) {
|
|
115
|
+
let n = z(t.wallet), r = t.ensureSchema === !1 ? H() : await U(t.wallet), i = V("identity", t.identity), a = V("sessionKey", t.sessionKey), o = t.app?.trim() ? V("app", t.app) : R, l = t.grantedAt ?? Math.floor(Date.now() / 1e3), u = typeof t.expiresAt == "number" && t.expiresAt > 0 ? Math.trunc(t.expiresAt) : 0, d = t.scopes ?? S, f = O(t.permissionsHash ?? P(N({ expiresAt: u > 0 ? u : void 0 }), d === S ? "publish,revoke" : d));
|
|
116
116
|
if (f === m) throw Error("@seedprotocol/publish: attestPublishAuthorization requires a non-zero permissionsHash");
|
|
117
|
-
let p = typeof
|
|
118
|
-
identity:
|
|
119
|
-
sessionKey:
|
|
120
|
-
app:
|
|
117
|
+
let p = typeof t.expirationTime == "number" && t.expirationTime > 0 ? t.expirationTime : u > 0 ? u : l + _, h = W({
|
|
118
|
+
identity: i,
|
|
119
|
+
sessionKey: a,
|
|
120
|
+
app: o,
|
|
121
121
|
scopes: d,
|
|
122
122
|
grantedAt: l,
|
|
123
123
|
expiresAt: u,
|
|
124
124
|
permissionsHash: f
|
|
125
|
-
}), g = await B(
|
|
126
|
-
schema:
|
|
125
|
+
}), g = await B(n, c({
|
|
126
|
+
schema: r,
|
|
127
127
|
data: {
|
|
128
|
-
recipient:
|
|
128
|
+
recipient: a,
|
|
129
129
|
expirationTime: BigInt(p),
|
|
130
130
|
revocable: !0,
|
|
131
131
|
refUID: m,
|
|
@@ -134,11 +134,11 @@ async function G(e) {
|
|
|
134
134
|
}
|
|
135
135
|
}));
|
|
136
136
|
if (!g) throw Error("@seedprotocol/publish: attestPublishAuthorization failed — no receipt");
|
|
137
|
-
let { easContractAddress: v } =
|
|
137
|
+
let { easContractAddress: v } = s(), y = e(g, v);
|
|
138
138
|
if (!y || !D(y)) throw Error("@seedprotocol/publish: attestPublishAuthorization failed — could not parse attestation UID");
|
|
139
139
|
return {
|
|
140
140
|
uid: y,
|
|
141
|
-
schemaUid:
|
|
141
|
+
schemaUid: r,
|
|
142
142
|
permissionsHash: f,
|
|
143
143
|
grantedAt: l,
|
|
144
144
|
expiresAt: u,
|
|
@@ -148,7 +148,7 @@ async function G(e) {
|
|
|
148
148
|
async function K(e) {
|
|
149
149
|
let t = z(e.wallet), n = e.schemaUid ?? H(), r = O(e.uid);
|
|
150
150
|
if (!D(r)) throw Error("@seedprotocol/publish: revokePublishAuthorization requires a valid attestation uid");
|
|
151
|
-
if (!await B(t,
|
|
151
|
+
if (!await B(t, i([{
|
|
152
152
|
schema: n,
|
|
153
153
|
data: [{ uid: r }]
|
|
154
154
|
}]))) throw Error("@seedprotocol/publish: revokePublishAuthorization failed — no receipt");
|
|
@@ -173,4 +173,4 @@ async function q(e) {
|
|
|
173
173
|
//#endregion
|
|
174
174
|
export { G as a, H as c, N as d, P as f, A as g, k as h, q as i, K as l, j as m, x as n, W as o, F as p, C as r, U as s, y as t, M as u };
|
|
175
175
|
|
|
176
|
-
//# sourceMappingURL=publishAuthorization-
|
|
176
|
+
//# sourceMappingURL=publishAuthorization-CZyvsNGG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishAuthorization-DAarz1JK.js","names":["ZERO_ADDRESS","waitForPublishReceipt","getAttestationUidFromReceipt","getPublishConfig","registerSchema","isSeedTxSender","isPublishWallet","prepareNameSchemaAttestation","prepareEasAttest","getSchemaRecord","prepareEasMultiRevoke","PUBLISH_AUTHORIZATION_SCHEMA_DEF$1","PUBLISH_AUTHORIZATION_SCHEMA_NAME$1","PUBLISH_AUTHORIZATION_SCOPES$1","PublishConfigContext","createContext","usePublishConfig","config","useContext","approvedTargetsForAutomationPublish","module","PUBLISH_AUTOMATION_SCOPES","buildAutomationSessionKeyPermissions","out","params","hashAutomationSessionKeyPermissions","material","permissions","a","scopes","keccak256","toUtf8Bytes","toThirdwebSessionKeyPermissions","base","RESOLVER_ADDRESS","REVOCABLE","ZERO_ADDRESS$1","resolveTxSender","account","sendAndWait","result","txSender","tx","assertAddress","t","addr","label","getPublishAuthorizationSchemaUid","SchemaRegistry","PUBLISH_AUTHORIZATION_SCHEMA_DEF","ensurePublishAuthorizationSchema","sender","schemaUid","PUBLISH_AUTHORIZATION_SCHEMA_NAME","encodePublishAuthorizationAttestationData","SchemaEncoder","normalizeBytes32Hex","attestPublishAuthorization","identity","sessionKey","app","grantedAt","expiresAt","PUBLISH_AUTHORIZATION_SCOPES","permissionsHash","ZERO_BYTES32","expirationTime","PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS","data","receipt","uid","easContractAddress","isValidEasAttestationUid","revokePublishAuthorization","assessPublishAuthorizationLive","row","getPublishAuthorizationFromEas","r","decoded","decodePublishAuthorizationData","assessPublishAuthorization"],"sources":["../src/react/PublishConfigContext.tsx","../src/helpers/approvedTargetsForAutomationPublish.ts","../src/helpers/automationSessionKeyPermissions.ts","../src/services/publishAuthorization/index.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { PublishConfig } from '../config'\n\nexport const PublishConfigContext = createContext<PublishConfig | null>(null)\n\nexport function usePublishConfig(): PublishConfig {\n const config = useContext(PublishConfigContext)\n if (!config) {\n throw new Error(\n 'usePublishConfig: PublishConfig is missing. Pass config to PublishProvider or call initPublish() before render.',\n )\n }\n return config\n}\n","import { getPublishConfig } from '../config'\n\n/**\n * Allowlisted call targets for session keys on a ManagedAccount.\n * Returns only the configured Seed executor module — never the ManagedAccount or raw EAS\n * (those would allow `setEas` / arbitrary attestations).\n *\n * @throws if `modularAccountModuleContract` is unset or invalid\n */\nexport function approvedTargetsForAutomationPublish(): `0x${string}`[] {\n const module = getPublishConfig().modularAccountModuleContract?.trim()\n if (!module || !/^0x[0-9a-fA-F]{40}$/.test(module)) {\n throw new Error(\n '@seedprotocol/publish: session keys require PublishConfig.modularAccountModuleContract ' +\n '(their only approved target is the Seed executor module).',\n )\n }\n return [module.toLowerCase() as `0x${string}`]\n}\n","import { keccak256, toUtf8Bytes } from 'ethers'\nimport { approvedTargetsForAutomationPublish } from './approvedTargetsForAutomationPublish'\n\n/** Fixed v1 scopes for publish automation grants. */\nexport const PUBLISH_AUTOMATION_SCOPES = 'publish,revoke' as const\n\nexport type AutomationSessionKeyPermissions = {\n approvedTargets: `0x${string}`[]\n nativeTokenLimitPerTransaction: number\n /** Unix seconds; omit for Thirdweb default long window. */\n expiresAt?: number\n}\n\n/**\n * Canonical permissions for an automation session key (module-only targets).\n */\nexport function buildAutomationSessionKeyPermissions(params?: {\n expiresAt?: number\n}): AutomationSessionKeyPermissions {\n const approvedTargets = approvedTargetsForAutomationPublish()\n const out: AutomationSessionKeyPermissions = {\n approvedTargets,\n nativeTokenLimitPerTransaction: 0,\n }\n if (typeof params?.expiresAt === 'number' && params.expiresAt > 0) {\n out.expiresAt = Math.trunc(params.expiresAt)\n }\n return out\n}\n\n/**\n * Deterministic permissions hash for the PublishAuthorization sidecar.\n * Material: sorted targets | nativeLimit | expiresAt (0 if unset) | scopes\n */\nexport function hashAutomationSessionKeyPermissions(\n permissions: AutomationSessionKeyPermissions,\n scopes: string = PUBLISH_AUTOMATION_SCOPES,\n): `0x${string}` {\n const targets = [...permissions.approvedTargets].map((a) => a.toLowerCase()).sort().join(',')\n const limit = permissions.nativeTokenLimitPerTransaction\n const expiresAt = permissions.expiresAt ?? 0\n const material = `${targets}|${limit}|${expiresAt}|${scopes.trim()}`\n return keccak256(toUtf8Bytes(material)) as `0x${string}`\n}\n\n/** Shape passed to Thirdweb `addSessionKey` / `shouldUpdateSessionKey`. */\nexport function toThirdwebSessionKeyPermissions(permissions: AutomationSessionKeyPermissions): {\n approvedTargets: `0x${string}`[]\n nativeTokenLimitPerTransaction: number\n permissionEndTimestamp?: Date\n} {\n const base = {\n approvedTargets: permissions.approvedTargets,\n nativeTokenLimitPerTransaction: permissions.nativeTokenLimitPerTransaction,\n }\n if (permissions.expiresAt != null && permissions.expiresAt > 0) {\n return {\n ...base,\n permissionEndTimestamp: new Date(permissions.expiresAt * 1000),\n }\n }\n return base\n}\n","import {\n PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS,\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n PUBLISH_AUTHORIZATION_SCOPES,\n assessPublishAuthorization,\n decodePublishAuthorizationData,\n getPublishAuthorizationFromEas,\n type PublishAuthorizationAssessResult,\n type PublishAuthorizationDecoded,\n} from '@seedprotocol/eas'\nimport { SchemaEncoder, ZERO_BYTES32 } from '@ethereum-attestation-service/eas-sdk'\nimport { SchemaRegistry } from '@ethereum-attestation-service/eas-sdk'\nimport { prepareEasAttest, prepareEasMultiRevoke } from '~/helpers/easDirect'\nimport { getSchemaRecord, registerSchema } from '~/helpers/schemaRegistry'\nimport { prepareNameSchemaAttestation } from '~/helpers/nameSchemaAttestation'\nimport { waitForPublishReceipt } from '~/helpers/chainClient'\nimport { getPublishConfig } from '~/config'\nimport {\n isPublishWallet,\n isSeedTxSender,\n type PublishWallet,\n type SeedTxSender,\n} from '~/helpers/seedSigner'\nimport { getAttestationUidFromReceipt } from '~/helpers/easDirect'\nimport { normalizeBytes32Hex, isValidEasAttestationUid } from '@seedprotocol/eas'\nimport {\n buildAutomationSessionKeyPermissions,\n hashAutomationSessionKeyPermissions,\n PUBLISH_AUTOMATION_SCOPES,\n} from '~/helpers/automationSessionKeyPermissions'\n\nexport {\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n PUBLISH_AUTHORIZATION_SCOPES,\n} from '@seedprotocol/eas'\n\nconst RESOLVER_ADDRESS = '0x0000000000000000000000000000000000000000'\nconst REVOCABLE = true\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\n\nfunction resolveTxSender(account: PublishWallet | SeedTxSender): SeedTxSender {\n if (isPublishWallet(account)) return account.txSender\n if (isSeedTxSender(account)) return account\n throw new Error(\n '@seedprotocol/publish: publish authorization write APIs require a PublishWallet or SeedTxSender',\n )\n}\n\nasync function sendAndWait(\n txSender: SeedTxSender,\n tx: Parameters<SeedTxSender['sendTransaction']>[0],\n) {\n const result = await txSender.sendTransaction(tx)\n return waitForPublishReceipt(result.transactionHash)\n}\n\nfunction assertAddress(label: string, addr: string): `0x${string}` {\n const t = addr.trim()\n if (!/^0x[0-9a-fA-F]{40}$/.test(t)) {\n throw new Error(`@seedprotocol/publish: ${label} must be a valid address`)\n }\n return t as `0x${string}`\n}\n\n/** Deterministic on-chain schema UID for {@link PUBLISH_AUTHORIZATION_SCHEMA_DEF}. */\nexport function getPublishAuthorizationSchemaUid(): `0x${string}` {\n return SchemaRegistry.getSchemaUID(\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n RESOLVER_ADDRESS as `0x${string}`,\n REVOCABLE,\n ) as `0x${string}`\n}\n\n/**\n * Registers the PublishAuthorization EAS schema (if missing) and creates a Schema #1 name attestation.\n */\nexport async function ensurePublishAuthorizationSchema(\n account: PublishWallet | SeedTxSender,\n): Promise<`0x${string}`> {\n const sender = resolveTxSender(account)\n const schemaUid = getPublishAuthorizationSchemaUid()\n const onChain = await getSchemaRecord(schemaUid)\n if (!onChain) {\n await sendAndWait(\n sender,\n registerSchema({\n schema: PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n resolverAddress: RESOLVER_ADDRESS,\n revocable: REVOCABLE,\n }),\n )\n await sendAndWait(\n sender,\n prepareNameSchemaAttestation({\n schemaUid,\n schemaName: PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n }),\n )\n }\n return schemaUid\n}\n\nexport function encodePublishAuthorizationAttestationData(params: {\n identity: string\n sessionKey: string\n app: string\n scopes: string\n grantedAt: number\n expiresAt: number\n permissionsHash: string\n}): `0x${string}` {\n const schemaEncoder = new SchemaEncoder(PUBLISH_AUTHORIZATION_SCHEMA_DEF)\n const encodedData = schemaEncoder.encodeData([\n { name: 'identity', value: params.identity as `0x${string}`, type: 'address' },\n { name: 'sessionKey', value: params.sessionKey as `0x${string}`, type: 'address' },\n { name: 'app', value: params.app as `0x${string}`, type: 'address' },\n { name: 'scopes', value: params.scopes, type: 'string' },\n { name: 'grantedAt', value: params.grantedAt, type: 'uint64' },\n { name: 'expiresAt', value: params.expiresAt, type: 'uint64' },\n {\n name: 'permissionsHash',\n value: normalizeBytes32Hex(params.permissionsHash) as `0x${string}`,\n type: 'bytes32',\n },\n ])\n return encodedData as `0x${string}`\n}\n\nexport type AttestPublishAuthorizationParams = {\n /** Must be the ManagedAccount (identity) wallet — becomes EAS attester. */\n wallet: PublishWallet | SeedTxSender\n identity: string\n sessionKey: string\n /** Optional app label address; defaults to zero address. */\n app?: string\n scopes?: string\n grantedAt?: number\n expiresAt?: number\n permissionsHash?: string\n ensureSchema?: boolean\n /** Override EAS expirationTime (unix seconds). */\n expirationTime?: number\n}\n\nexport type AttestPublishAuthorizationResult = {\n uid: `0x${string}`\n schemaUid: `0x${string}`\n permissionsHash: `0x${string}`\n grantedAt: number\n expiresAt: number\n expirationTime: number\n}\n\n/**\n * ManagedAccount attests a PublishAuthorization grant (recipient = session key).\n */\nexport async function attestPublishAuthorization(\n params: AttestPublishAuthorizationParams,\n): Promise<AttestPublishAuthorizationResult> {\n const sender = resolveTxSender(params.wallet)\n const schemaUid =\n params.ensureSchema === false\n ? getPublishAuthorizationSchemaUid()\n : await ensurePublishAuthorizationSchema(params.wallet)\n\n const identity = assertAddress('identity', params.identity)\n const sessionKey = assertAddress('sessionKey', params.sessionKey)\n const app = params.app?.trim()\n ? assertAddress('app', params.app)\n : (ZERO_ADDRESS as `0x${string}`)\n\n const grantedAt = params.grantedAt ?? Math.floor(Date.now() / 1000)\n const expiresAt =\n typeof params.expiresAt === 'number' && params.expiresAt > 0\n ? Math.trunc(params.expiresAt)\n : 0\n const scopes = params.scopes ?? PUBLISH_AUTHORIZATION_SCOPES\n\n const permissionsHash = normalizeBytes32Hex(\n params.permissionsHash ??\n hashAutomationSessionKeyPermissions(\n buildAutomationSessionKeyPermissions({\n expiresAt: expiresAt > 0 ? expiresAt : undefined,\n }),\n scopes === PUBLISH_AUTHORIZATION_SCOPES ? PUBLISH_AUTOMATION_SCOPES : scopes,\n ),\n ) as `0x${string}`\n\n if (permissionsHash === ZERO_BYTES32) {\n throw new Error(\n '@seedprotocol/publish: attestPublishAuthorization requires a non-zero permissionsHash',\n )\n }\n\n const expirationTime =\n typeof params.expirationTime === 'number' && params.expirationTime > 0\n ? params.expirationTime\n : expiresAt > 0\n ? expiresAt\n : grantedAt + PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS\n\n const data = encodePublishAuthorizationAttestationData({\n identity,\n sessionKey,\n app,\n scopes,\n grantedAt,\n expiresAt,\n permissionsHash,\n })\n\n const tx = prepareEasAttest({\n schema: schemaUid,\n data: {\n recipient: sessionKey,\n expirationTime: BigInt(expirationTime),\n revocable: true,\n refUID: ZERO_BYTES32 as `0x${string}`,\n data,\n value: 0n,\n },\n })\n\n const receipt = await sendAndWait(sender, tx)\n if (!receipt) {\n throw new Error('@seedprotocol/publish: attestPublishAuthorization failed — no receipt')\n }\n const { easContractAddress } = getPublishConfig()\n const uid = getAttestationUidFromReceipt(receipt, easContractAddress)\n if (!uid || !isValidEasAttestationUid(uid)) {\n throw new Error(\n '@seedprotocol/publish: attestPublishAuthorization failed — could not parse attestation UID',\n )\n }\n\n return {\n uid: uid as `0x${string}`,\n schemaUid,\n permissionsHash,\n grantedAt,\n expiresAt,\n expirationTime,\n }\n}\n\n/**\n * Revoke a PublishAuthorization sidecar (must be signed by the original ManagedAccount attester).\n */\nexport async function revokePublishAuthorization(params: {\n wallet: PublishWallet | SeedTxSender\n uid: string\n schemaUid?: string\n}): Promise<void> {\n const sender = resolveTxSender(params.wallet)\n const schemaUid = (params.schemaUid ?? getPublishAuthorizationSchemaUid()) as `0x${string}`\n const uid = normalizeBytes32Hex(params.uid) as `0x${string}`\n if (!isValidEasAttestationUid(uid)) {\n throw new Error(\n '@seedprotocol/publish: revokePublishAuthorization requires a valid attestation uid',\n )\n }\n\n const tx = prepareEasMultiRevoke([\n {\n schema: schemaUid,\n data: [{ uid }],\n },\n ])\n const receipt = await sendAndWait(sender, tx)\n if (!receipt) {\n throw new Error('@seedprotocol/publish: revokePublishAuthorization failed — no receipt')\n }\n}\n\nexport type AssessPublishAuthorizationLiveResult = {\n uid: string\n decoded: PublishAuthorizationDecoded\n assess: PublishAuthorizationAssessResult\n expirationTime?: number | null\n}\n\n/**\n * Load a PublishAuthorization attestation by uid (via identity filter + client match) and assess.\n * Prefer filtering with {@link getPublishAuthorizationFromEas} when you know identity/sessionKey.\n */\nexport async function assessPublishAuthorizationLive(params: {\n uid: string\n identities: string[]\n}): Promise<AssessPublishAuthorizationLiveResult | null> {\n const rows = await getPublishAuthorizationFromEas({\n identities: params.identities,\n excludeRevoked: false,\n })\n const row = rows.find((r) => r.id?.toLowerCase() === params.uid.toLowerCase())\n if (!row) return null\n const decoded = decodePublishAuthorizationData(row.decodedDataJson ?? '[]')\n const expirationTime =\n typeof row.expirationTime === 'number'\n ? row.expirationTime\n : typeof row.expirationTime === 'string'\n ? Number(row.expirationTime)\n : null\n return {\n uid: row.id,\n decoded,\n assess: assessPublishAuthorization({ decoded, expirationTime }),\n expirationTime,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publishAuthorization-CZyvsNGG.js","names":["ZERO_ADDRESS","getAttestationUidFromReceipt","isPublishWallet","getSchemaRecord","prepareNameSchemaAttestation","prepareEasMultiRevoke","registerSchema","isSeedTxSender","getPublishConfig","prepareEasAttest","waitForPublishReceipt","PUBLISH_AUTHORIZATION_SCHEMA_DEF$1","PUBLISH_AUTHORIZATION_SCHEMA_NAME$1","PUBLISH_AUTHORIZATION_SCOPES$1","PublishConfigContext","createContext","usePublishConfig","config","useContext","approvedTargetsForAutomationPublish","module","PUBLISH_AUTOMATION_SCOPES","buildAutomationSessionKeyPermissions","out","params","hashAutomationSessionKeyPermissions","material","permissions","a","scopes","keccak256","toUtf8Bytes","toThirdwebSessionKeyPermissions","base","RESOLVER_ADDRESS","REVOCABLE","ZERO_ADDRESS$1","resolveTxSender","account","sendAndWait","result","txSender","tx","assertAddress","t","addr","label","getPublishAuthorizationSchemaUid","SchemaRegistry","PUBLISH_AUTHORIZATION_SCHEMA_DEF","ensurePublishAuthorizationSchema","sender","schemaUid","PUBLISH_AUTHORIZATION_SCHEMA_NAME","encodePublishAuthorizationAttestationData","SchemaEncoder","normalizeBytes32Hex","attestPublishAuthorization","identity","sessionKey","app","grantedAt","expiresAt","PUBLISH_AUTHORIZATION_SCOPES","permissionsHash","ZERO_BYTES32","expirationTime","PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS","data","receipt","uid","easContractAddress","isValidEasAttestationUid","revokePublishAuthorization","assessPublishAuthorizationLive","row","getPublishAuthorizationFromEas","r","decoded","decodePublishAuthorizationData","assessPublishAuthorization"],"sources":["../src/react/PublishConfigContext.tsx","../src/helpers/approvedTargetsForAutomationPublish.ts","../src/helpers/automationSessionKeyPermissions.ts","../src/services/publishAuthorization/index.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { PublishConfig } from '../config'\n\nexport const PublishConfigContext = createContext<PublishConfig | null>(null)\n\nexport function usePublishConfig(): PublishConfig {\n const config = useContext(PublishConfigContext)\n if (!config) {\n throw new Error(\n 'usePublishConfig: PublishConfig is missing. Pass config to PublishProvider or call initPublish() before render.',\n )\n }\n return config\n}\n","import { getPublishConfig } from '../config'\n\n/**\n * Allowlisted call targets for session keys on a ManagedAccount.\n * Returns only the configured Seed executor module — never the ManagedAccount or raw EAS\n * (those would allow `setEas` / arbitrary attestations).\n *\n * @throws if `modularAccountModuleContract` is unset or invalid\n */\nexport function approvedTargetsForAutomationPublish(): `0x${string}`[] {\n const module = getPublishConfig().modularAccountModuleContract?.trim()\n if (!module || !/^0x[0-9a-fA-F]{40}$/.test(module)) {\n throw new Error(\n '@seedprotocol/publish: session keys require PublishConfig.modularAccountModuleContract ' +\n '(their only approved target is the Seed executor module).',\n )\n }\n return [module.toLowerCase() as `0x${string}`]\n}\n","import { keccak256, toUtf8Bytes } from 'ethers'\nimport { approvedTargetsForAutomationPublish } from './approvedTargetsForAutomationPublish'\n\n/** Fixed v1 scopes for publish automation grants. */\nexport const PUBLISH_AUTOMATION_SCOPES = 'publish,revoke' as const\n\nexport type AutomationSessionKeyPermissions = {\n approvedTargets: `0x${string}`[]\n nativeTokenLimitPerTransaction: number\n /** Unix seconds; omit for Thirdweb default long window. */\n expiresAt?: number\n}\n\n/**\n * Canonical permissions for an automation session key (module-only targets).\n */\nexport function buildAutomationSessionKeyPermissions(params?: {\n expiresAt?: number\n}): AutomationSessionKeyPermissions {\n const approvedTargets = approvedTargetsForAutomationPublish()\n const out: AutomationSessionKeyPermissions = {\n approvedTargets,\n nativeTokenLimitPerTransaction: 0,\n }\n if (typeof params?.expiresAt === 'number' && params.expiresAt > 0) {\n out.expiresAt = Math.trunc(params.expiresAt)\n }\n return out\n}\n\n/**\n * Deterministic permissions hash for the PublishAuthorization sidecar.\n * Material: sorted targets | nativeLimit | expiresAt (0 if unset) | scopes\n */\nexport function hashAutomationSessionKeyPermissions(\n permissions: AutomationSessionKeyPermissions,\n scopes: string = PUBLISH_AUTOMATION_SCOPES,\n): `0x${string}` {\n const targets = [...permissions.approvedTargets].map((a) => a.toLowerCase()).sort().join(',')\n const limit = permissions.nativeTokenLimitPerTransaction\n const expiresAt = permissions.expiresAt ?? 0\n const material = `${targets}|${limit}|${expiresAt}|${scopes.trim()}`\n return keccak256(toUtf8Bytes(material)) as `0x${string}`\n}\n\n/** Shape passed to Thirdweb `addSessionKey` / `shouldUpdateSessionKey`. */\nexport function toThirdwebSessionKeyPermissions(permissions: AutomationSessionKeyPermissions): {\n approvedTargets: `0x${string}`[]\n nativeTokenLimitPerTransaction: number\n permissionEndTimestamp?: Date\n} {\n const base = {\n approvedTargets: permissions.approvedTargets,\n nativeTokenLimitPerTransaction: permissions.nativeTokenLimitPerTransaction,\n }\n if (permissions.expiresAt != null && permissions.expiresAt > 0) {\n return {\n ...base,\n permissionEndTimestamp: new Date(permissions.expiresAt * 1000),\n }\n }\n return base\n}\n","import {\n PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS,\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n PUBLISH_AUTHORIZATION_SCOPES,\n assessPublishAuthorization,\n decodePublishAuthorizationData,\n getPublishAuthorizationFromEas,\n type PublishAuthorizationAssessResult,\n type PublishAuthorizationDecoded,\n} from '@seedprotocol/eas'\nimport { SchemaEncoder, ZERO_BYTES32 } from '@ethereum-attestation-service/eas-sdk'\nimport { SchemaRegistry } from '@ethereum-attestation-service/eas-sdk'\nimport { prepareEasAttest, prepareEasMultiRevoke } from '~/helpers/easDirect'\nimport { getSchemaRecord, registerSchema } from '~/helpers/schemaRegistry'\nimport { prepareNameSchemaAttestation } from '~/helpers/nameSchemaAttestation'\nimport { waitForPublishReceipt } from '~/helpers/chainClient'\nimport { getPublishConfig } from '~/config'\nimport {\n isPublishWallet,\n isSeedTxSender,\n type PublishWallet,\n type SeedTxSender,\n} from '~/helpers/seedSigner'\nimport { getAttestationUidFromReceipt } from '~/helpers/easDirect'\nimport { normalizeBytes32Hex, isValidEasAttestationUid } from '@seedprotocol/eas'\nimport {\n buildAutomationSessionKeyPermissions,\n hashAutomationSessionKeyPermissions,\n PUBLISH_AUTOMATION_SCOPES,\n} from '~/helpers/automationSessionKeyPermissions'\n\nexport {\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n PUBLISH_AUTHORIZATION_SCOPES,\n} from '@seedprotocol/eas'\n\nconst RESOLVER_ADDRESS = '0x0000000000000000000000000000000000000000'\nconst REVOCABLE = true\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\n\nfunction resolveTxSender(account: PublishWallet | SeedTxSender): SeedTxSender {\n if (isPublishWallet(account)) return account.txSender\n if (isSeedTxSender(account)) return account\n throw new Error(\n '@seedprotocol/publish: publish authorization write APIs require a PublishWallet or SeedTxSender',\n )\n}\n\nasync function sendAndWait(\n txSender: SeedTxSender,\n tx: Parameters<SeedTxSender['sendTransaction']>[0],\n) {\n const result = await txSender.sendTransaction(tx)\n return waitForPublishReceipt(result.transactionHash)\n}\n\nfunction assertAddress(label: string, addr: string): `0x${string}` {\n const t = addr.trim()\n if (!/^0x[0-9a-fA-F]{40}$/.test(t)) {\n throw new Error(`@seedprotocol/publish: ${label} must be a valid address`)\n }\n return t as `0x${string}`\n}\n\n/** Deterministic on-chain schema UID for {@link PUBLISH_AUTHORIZATION_SCHEMA_DEF}. */\nexport function getPublishAuthorizationSchemaUid(): `0x${string}` {\n return SchemaRegistry.getSchemaUID(\n PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n RESOLVER_ADDRESS as `0x${string}`,\n REVOCABLE,\n ) as `0x${string}`\n}\n\n/**\n * Registers the PublishAuthorization EAS schema (if missing) and creates a Schema #1 name attestation.\n */\nexport async function ensurePublishAuthorizationSchema(\n account: PublishWallet | SeedTxSender,\n): Promise<`0x${string}`> {\n const sender = resolveTxSender(account)\n const schemaUid = getPublishAuthorizationSchemaUid()\n const onChain = await getSchemaRecord(schemaUid)\n if (!onChain) {\n await sendAndWait(\n sender,\n registerSchema({\n schema: PUBLISH_AUTHORIZATION_SCHEMA_DEF,\n resolverAddress: RESOLVER_ADDRESS,\n revocable: REVOCABLE,\n }),\n )\n await sendAndWait(\n sender,\n prepareNameSchemaAttestation({\n schemaUid,\n schemaName: PUBLISH_AUTHORIZATION_SCHEMA_NAME,\n }),\n )\n }\n return schemaUid\n}\n\nexport function encodePublishAuthorizationAttestationData(params: {\n identity: string\n sessionKey: string\n app: string\n scopes: string\n grantedAt: number\n expiresAt: number\n permissionsHash: string\n}): `0x${string}` {\n const schemaEncoder = new SchemaEncoder(PUBLISH_AUTHORIZATION_SCHEMA_DEF)\n const encodedData = schemaEncoder.encodeData([\n { name: 'identity', value: params.identity as `0x${string}`, type: 'address' },\n { name: 'sessionKey', value: params.sessionKey as `0x${string}`, type: 'address' },\n { name: 'app', value: params.app as `0x${string}`, type: 'address' },\n { name: 'scopes', value: params.scopes, type: 'string' },\n { name: 'grantedAt', value: params.grantedAt, type: 'uint64' },\n { name: 'expiresAt', value: params.expiresAt, type: 'uint64' },\n {\n name: 'permissionsHash',\n value: normalizeBytes32Hex(params.permissionsHash) as `0x${string}`,\n type: 'bytes32',\n },\n ])\n return encodedData as `0x${string}`\n}\n\nexport type AttestPublishAuthorizationParams = {\n /** Must be the ManagedAccount (identity) wallet — becomes EAS attester. */\n wallet: PublishWallet | SeedTxSender\n identity: string\n sessionKey: string\n /** Optional app label address; defaults to zero address. */\n app?: string\n scopes?: string\n grantedAt?: number\n expiresAt?: number\n permissionsHash?: string\n ensureSchema?: boolean\n /** Override EAS expirationTime (unix seconds). */\n expirationTime?: number\n}\n\nexport type AttestPublishAuthorizationResult = {\n uid: `0x${string}`\n schemaUid: `0x${string}`\n permissionsHash: `0x${string}`\n grantedAt: number\n expiresAt: number\n expirationTime: number\n}\n\n/**\n * ManagedAccount attests a PublishAuthorization grant (recipient = session key).\n */\nexport async function attestPublishAuthorization(\n params: AttestPublishAuthorizationParams,\n): Promise<AttestPublishAuthorizationResult> {\n const sender = resolveTxSender(params.wallet)\n const schemaUid =\n params.ensureSchema === false\n ? getPublishAuthorizationSchemaUid()\n : await ensurePublishAuthorizationSchema(params.wallet)\n\n const identity = assertAddress('identity', params.identity)\n const sessionKey = assertAddress('sessionKey', params.sessionKey)\n const app = params.app?.trim()\n ? assertAddress('app', params.app)\n : (ZERO_ADDRESS as `0x${string}`)\n\n const grantedAt = params.grantedAt ?? Math.floor(Date.now() / 1000)\n const expiresAt =\n typeof params.expiresAt === 'number' && params.expiresAt > 0\n ? Math.trunc(params.expiresAt)\n : 0\n const scopes = params.scopes ?? PUBLISH_AUTHORIZATION_SCOPES\n\n const permissionsHash = normalizeBytes32Hex(\n params.permissionsHash ??\n hashAutomationSessionKeyPermissions(\n buildAutomationSessionKeyPermissions({\n expiresAt: expiresAt > 0 ? expiresAt : undefined,\n }),\n scopes === PUBLISH_AUTHORIZATION_SCOPES ? PUBLISH_AUTOMATION_SCOPES : scopes,\n ),\n ) as `0x${string}`\n\n if (permissionsHash === ZERO_BYTES32) {\n throw new Error(\n '@seedprotocol/publish: attestPublishAuthorization requires a non-zero permissionsHash',\n )\n }\n\n const expirationTime =\n typeof params.expirationTime === 'number' && params.expirationTime > 0\n ? params.expirationTime\n : expiresAt > 0\n ? expiresAt\n : grantedAt + PUBLISH_AUTHORIZATION_DEFAULT_EXPIRATION_SECS\n\n const data = encodePublishAuthorizationAttestationData({\n identity,\n sessionKey,\n app,\n scopes,\n grantedAt,\n expiresAt,\n permissionsHash,\n })\n\n const tx = prepareEasAttest({\n schema: schemaUid,\n data: {\n recipient: sessionKey,\n expirationTime: BigInt(expirationTime),\n revocable: true,\n refUID: ZERO_BYTES32 as `0x${string}`,\n data,\n value: 0n,\n },\n })\n\n const receipt = await sendAndWait(sender, tx)\n if (!receipt) {\n throw new Error('@seedprotocol/publish: attestPublishAuthorization failed — no receipt')\n }\n const { easContractAddress } = getPublishConfig()\n const uid = getAttestationUidFromReceipt(receipt, easContractAddress)\n if (!uid || !isValidEasAttestationUid(uid)) {\n throw new Error(\n '@seedprotocol/publish: attestPublishAuthorization failed — could not parse attestation UID',\n )\n }\n\n return {\n uid: uid as `0x${string}`,\n schemaUid,\n permissionsHash,\n grantedAt,\n expiresAt,\n expirationTime,\n }\n}\n\n/**\n * Revoke a PublishAuthorization sidecar (must be signed by the original ManagedAccount attester).\n */\nexport async function revokePublishAuthorization(params: {\n wallet: PublishWallet | SeedTxSender\n uid: string\n schemaUid?: string\n}): Promise<void> {\n const sender = resolveTxSender(params.wallet)\n const schemaUid = (params.schemaUid ?? getPublishAuthorizationSchemaUid()) as `0x${string}`\n const uid = normalizeBytes32Hex(params.uid) as `0x${string}`\n if (!isValidEasAttestationUid(uid)) {\n throw new Error(\n '@seedprotocol/publish: revokePublishAuthorization requires a valid attestation uid',\n )\n }\n\n const tx = prepareEasMultiRevoke([\n {\n schema: schemaUid,\n data: [{ uid }],\n },\n ])\n const receipt = await sendAndWait(sender, tx)\n if (!receipt) {\n throw new Error('@seedprotocol/publish: revokePublishAuthorization failed — no receipt')\n }\n}\n\nexport type AssessPublishAuthorizationLiveResult = {\n uid: string\n decoded: PublishAuthorizationDecoded\n assess: PublishAuthorizationAssessResult\n expirationTime?: number | null\n}\n\n/**\n * Load a PublishAuthorization attestation by uid (via identity filter + client match) and assess.\n * Prefer filtering with {@link getPublishAuthorizationFromEas} when you know identity/sessionKey.\n */\nexport async function assessPublishAuthorizationLive(params: {\n uid: string\n identities: string[]\n}): Promise<AssessPublishAuthorizationLiveResult | null> {\n const rows = await getPublishAuthorizationFromEas({\n identities: params.identities,\n excludeRevoked: false,\n })\n const row = rows.find((r) => r.id?.toLowerCase() === params.uid.toLowerCase())\n if (!row) return null\n const decoded = decodePublishAuthorizationData(row.decodedDataJson ?? '[]')\n const expirationTime =\n typeof row.expirationTime === 'number'\n ? row.expirationTime\n : typeof row.expirationTime === 'string'\n ? Number(row.expirationTime)\n : null\n return {\n uid: row.id,\n decoded,\n assess: assessPublishAuthorization({ decoded, expirationTime }),\n expirationTime,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectButton.d.ts","sourceRoot":"","sources":["../../src/react/ConnectButton.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAA;AAsFjE,QAAA,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"ConnectButton.d.ts","sourceRoot":"","sources":["../../src/react/ConnectButton.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAkC,MAAM,OAAO,CAAA;AAsFjE,QAAA,MAAM,aAAa,EAAE,EAoMpB,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSeedWallet.d.ts","sourceRoot":"","sources":["../../src/react/useSeedWallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACpD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"useSeedWallet.d.ts","sourceRoot":"","sources":["../../src/react/useSeedWallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACpD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;AAY9B,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,CAAA;AAE1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;IAC9B,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAA;IAClC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC3E,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CA8DnD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { B as e, G as t, H as n, X as r, a as i, gt as a, nt as o, q as s } from "./chainConfig-BHTH_BGB.js";
|
|
2
|
+
import { getGetAdditionalSyncAddresses as c } from "@seedprotocol/sdk";
|
|
3
|
+
//#region src/helpers/resolveRevokeAccount.ts
|
|
4
|
+
async function l(l) {
|
|
5
|
+
let { account: u, attester: d } = l;
|
|
6
|
+
if (!d || u.address.toLowerCase() === d.toLowerCase()) return u;
|
|
7
|
+
let f = c(), p = !1;
|
|
8
|
+
if (f) {
|
|
9
|
+
let e = await f(), t = d.toLowerCase();
|
|
10
|
+
p = !!e?.some((e) => e?.toLowerCase() === t);
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
let i = await t(u.address);
|
|
14
|
+
if (d.toLowerCase() === i.toLowerCase() || p) {
|
|
15
|
+
let t = p ? await e(a()).catch(() => i) : i;
|
|
16
|
+
if (await s(t)) {
|
|
17
|
+
r();
|
|
18
|
+
let e = n();
|
|
19
|
+
await e.autoConnect({
|
|
20
|
+
client: o(),
|
|
21
|
+
chain: a()
|
|
22
|
+
});
|
|
23
|
+
let t = e.getAccount();
|
|
24
|
+
if (t) return t;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
} catch {}
|
|
28
|
+
if (p) {
|
|
29
|
+
let { modularAccountModuleContract: e } = i();
|
|
30
|
+
throw e?.trim() ? Error("Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.") : Error("Revocation not supported for items published via the modular executor.");
|
|
31
|
+
}
|
|
32
|
+
return u;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { l as resolveRevokeAccount };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=resolveRevokeAccount-CbQiAEZp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRevokeAccount-CbQiAEZp.js","names":["getConnectedManagedAccountAddress","getSmartWalletAddressForAdmin","getManagedAccountWallet","syncPublishInAppAuthToken","getPublishConfig","getPublishThirdwebChain","getClient","isSmartWalletDeployed","resolveRevokeAccount","params","attester","account","additionalGetter","getGetAdditionalSyncAddresses","attesterIsExecutorModule","additional","attesterLower","a","derivedManagedAccount","managedAddress","managedAccountWallet","managedAccount","modularAccountModuleContract"],"sources":["../src/helpers/resolveRevokeAccount.ts"],"sourcesContent":["import type { Account } from 'thirdweb/wallets'\nimport { getGetAdditionalSyncAddresses } from '@seedprotocol/sdk'\nimport { getPublishConfig } from '~/config'\nimport {\n getClient,\n getSmartWalletAddressForAdmin,\n isSmartWalletDeployed,\n getManagedAccountWallet,\n getConnectedManagedAccountAddress,\n syncPublishInAppAuthToken,\n} from '~/helpers/thirdweb'\nimport { getPublishThirdwebChain } from './thirdwebChain'\n\n/**\n * Resolves which account to use for revoking attestations.\n * When the attester is the user's ManagedAccount (EIP4337) but they're connected\n * with a different wallet (e.g. EOA or modular account), attempts to use the\n * ManagedAccount wallet for the revoke.\n *\n * When the attester is the legacy executor module address, attempts the ManagedAccount\n * wallet if `modularAccountModuleContract` is configured (executor-routed multiRevoke).\n * Throws only when the module was the attester and no ManagedAccount path is available.\n */\nexport async function resolveRevokeAccount(params: {\n account: Account\n attester: string | null\n}): Promise<Account> {\n const { account, attester } = params\n\n if (!attester || account.address.toLowerCase() === attester.toLowerCase()) {\n return account\n }\n\n const additionalGetter = getGetAdditionalSyncAddresses()\n let attesterIsExecutorModule = false\n if (additionalGetter) {\n const additional = await additionalGetter()\n const attesterLower = attester.toLowerCase()\n attesterIsExecutorModule = !!additional?.some(\n (a: string | undefined) => a?.toLowerCase() === attesterLower,\n )\n }\n\n try {\n const derivedManagedAccount = await getSmartWalletAddressForAdmin(account.address)\n const attesterLower = attester.toLowerCase()\n const derivedLower = derivedManagedAccount.toLowerCase()\n\n if (attesterLower === derivedLower || attesterIsExecutorModule) {\n const managedAddress = attesterIsExecutorModule\n ? await getConnectedManagedAccountAddress(getPublishThirdwebChain()).catch(() => derivedManagedAccount)\n : derivedManagedAccount\n const deployed = await isSmartWalletDeployed(managedAddress)\n if (deployed) {\n // Same as ensureModularPublishBootstrap: the managed wallet reads the in-app session token.\n syncPublishInAppAuthToken()\n const managedAccountWallet = getManagedAccountWallet()\n await managedAccountWallet.autoConnect({\n client: getClient(),\n chain: getPublishThirdwebChain(),\n })\n const managedAccount = managedAccountWallet.getAccount()\n if (managedAccount) {\n return managedAccount\n }\n }\n }\n } catch {\n // Fall through\n }\n\n if (attesterIsExecutorModule) {\n const { modularAccountModuleContract } = getPublishConfig()\n if (!modularAccountModuleContract?.trim()) {\n throw new Error(\n 'Revocation not supported for items published via the modular executor.',\n )\n }\n // Module configured but ManagedAccount wallet unavailable\n throw new Error(\n 'Revocation not supported for items published via the modular executor. Connect the ManagedAccount that controls the executor module.',\n )\n }\n\n return account\n}\n"],"mappings":";;;AAuBA,eAAsBQ,EAAqB,GAGtB;CACnB,IAAM,EAAE,YAAS,gBAAaC;CAE9B,IAAI,CAACC,KAAYC,EAAQ,QAAQ,YAAY,MAAMD,EAAS,YAAY,GACtE,OAAOC;CAGT,IAAMC,IAAmBC,EAA8B,GACnDC,IAA2B;CAC/B,IAAIF,GAAkB;EACpB,IAAMG,IAAa,MAAMH,EAAiB,GACpCI,IAAgBN,EAAS,YAAY;EAC3C,IAA2B,CAAC,CAACK,GAAY,MACtC,MAA0BE,GAAG,YAAY,MAAMD,CAClD;CACF;CAEA,IAAI;EACF,IAAME,IAAwB,MAAMjB,EAA8BU,EAAQ,OAAO;EAIjF,IAHsBD,EAAS,YAG3B,MAFiBQ,EAAsB,YAErB,KAAgBJ,GAA0B;GAC9D,IAAMK,IAAiBL,IACnB,MAAMd,EAAkCK,EAAwB,CAAC,CAAC,CAAC,YAAYa,CAAqB,IACpGA;GAEJ,IAAI,MADmBX,EAAsBY,CAAc,GAC7C;IAEZ,EAA0B;IAC1B,IAAMC,IAAuBlB,EAAwB;IACrD,MAAMkB,EAAqB,YAAY;KACrC,QAAQd,EAAU;KAClB,OAAOD,EAAwB;IACjC,CAAC;IACD,IAAMgB,IAAiBD,EAAqB,WAAW;IACvD,IAAIC,GACF,OAAOA;GAEX;EACF;CACF,QAAQ,CAER;CAEA,IAAIP,GAA0B;EAC5B,IAAM,EAAE,oCAAiCV,EAAiB;EAO1D,MANKkB,GAA8B,KAAK,IAM9B,MACR,sIACF,IAPY,MACR,wEACF;CAMJ;CAEA,OAAOX;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/services/arweaveL1Finalize/worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/services/arweaveL1Finalize/worker.ts"],"names":[],"mappings":"AAmBA,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAKlD"}
|
|
@@ -28,7 +28,10 @@ export declare function createDomainOwnershipChallenge(params: {
|
|
|
28
28
|
/** Override challenge TTL (ms). Default 72h. */
|
|
29
29
|
ttlMs?: number;
|
|
30
30
|
now?: number;
|
|
31
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* When false, skip eTLD+1 normalization: the challenge is on the hostname as given, and the
|
|
33
|
+
* scope defaults to {@link DOMAIN_OWNERSHIP_SCOPE_HOSTNAME}. Default true.
|
|
34
|
+
*/
|
|
32
35
|
normalizeRegistrable?: boolean;
|
|
33
36
|
}): DomainOwnershipChallenge;
|
|
34
37
|
//# sourceMappingURL=challenge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"challenge.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/challenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,uBAAuB,
|
|
1
|
+
{"version":3,"file":"challenge.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/challenge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,uBAAuB,EAMxB,MAAM,mBAAmB,CAAA;AAG1B,MAAM,MAAM,wBAAwB,GAAG;IACrC,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,uBAAuB,CAAA;IACtC,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,KAAK,MAAM,EAAE,CAAA;IAC5B,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAgBD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,wBAAwB,CAmD3B"}
|
|
@@ -3,7 +3,7 @@ import { type PublishWallet, type SeedTxSender } from '~/helpers/seedSigner';
|
|
|
3
3
|
import { createDomainOwnershipChallenge, type DomainOwnershipChallenge } from './challenge';
|
|
4
4
|
import { verifyDomainOwnershipDns, type VerifyDomainOwnershipDnsResult } from './dnsVerify';
|
|
5
5
|
import { fingerprintFromRegistrySnapshot, lookupDomainRegistry, normalizeRegistrableDomain, type DomainRegistrySnapshot } from './registry';
|
|
6
|
-
export { DOMAIN_OWNERSHIP_SCHEMA_DEF, DOMAIN_OWNERSHIP_SCHEMA_NAME, DOMAIN_OWNERSHIP_METHOD, } from '@seedprotocol/eas';
|
|
6
|
+
export { DOMAIN_OWNERSHIP_SCHEMA_DEF, DOMAIN_OWNERSHIP_SCHEMA_NAME, DOMAIN_OWNERSHIP_METHOD, DOMAIN_OWNERSHIP_SCOPE_HOSTNAME, DOMAIN_OWNERSHIP_SCOPE_REGISTRABLE, } from '@seedprotocol/eas';
|
|
7
7
|
export { createDomainOwnershipChallenge };
|
|
8
8
|
export type { DomainOwnershipChallenge };
|
|
9
9
|
export { verifyDomainOwnershipDns };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAA;AAQ1B,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,8BAA8B,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,wBAAwB,EAAE,KAAK,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DOMAIN_OWNERSHIP_SCHEMA_DEF, DOMAIN_OWNERSHIP_SCHEMA_NAME, DOMAIN_OWNERSHIP_METHOD, createDomainOwnershipChallenge, verifyDomainOwnershipDns, lookupDomainRegistry, normalizeRegistrableDomain, fingerprintFromRegistrySnapshot, getDomainOwnershipSchemaUid, ensureDomainOwnershipSchema, encodeDomainOwnershipAttestationData, attestDomainOwnership, revokeDomainOwnership, verifyDomainOwnershipChallenge, verifyAndAttestDomainOwnership, assessDomainOwnershipLive, type DomainOwnershipChallenge, type DomainRegistrySnapshot, type VerifyDomainOwnershipDnsResult, type AttestDomainOwnershipParams, type AttestDomainOwnershipResult, type VerifyDomainOwnershipChallengeResult, type VerifyAndAttestDomainOwnershipResult, type AssessDomainOwnershipLiveResult, } from './index';
|
|
1
|
+
export { DOMAIN_OWNERSHIP_SCHEMA_DEF, DOMAIN_OWNERSHIP_SCHEMA_NAME, DOMAIN_OWNERSHIP_METHOD, DOMAIN_OWNERSHIP_SCOPE_HOSTNAME, DOMAIN_OWNERSHIP_SCOPE_REGISTRABLE, createDomainOwnershipChallenge, verifyDomainOwnershipDns, lookupDomainRegistry, normalizeRegistrableDomain, fingerprintFromRegistrySnapshot, getDomainOwnershipSchemaUid, ensureDomainOwnershipSchema, encodeDomainOwnershipAttestationData, attestDomainOwnership, revokeDomainOwnership, verifyDomainOwnershipChallenge, verifyAndAttestDomainOwnership, assessDomainOwnershipLive, type DomainOwnershipChallenge, type DomainRegistrySnapshot, type VerifyDomainOwnershipDnsResult, type AttestDomainOwnershipParams, type AttestDomainOwnershipResult, type VerifyDomainOwnershipChallengeResult, type VerifyAndAttestDomainOwnershipResult, type AssessDomainOwnershipLiveResult, } from './index';
|
|
2
2
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,GACrC,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,GACrC,MAAM,SAAS,CAAA"}
|
|
@@ -10,6 +10,8 @@ export type DomainRegistrySnapshot = DomainRegistryFingerprintInput & {
|
|
|
10
10
|
* Normalize input to a registrable domain (eTLD+1). Throws when invalid.
|
|
11
11
|
*/
|
|
12
12
|
export declare function normalizeRegistrableDomain(input: string): string;
|
|
13
|
+
/** Lowercased hostname without a trailing dot. No eTLD+1 normalization. */
|
|
14
|
+
export declare function normalizeHostname(input: string): string;
|
|
13
15
|
/**
|
|
14
16
|
* Fetch RDAP/WHOIS registry snapshot and compute fingerprint inputs.
|
|
15
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,sBAAsB,GAAG,8BAA8B,GAAG;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAiBxC;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,8BAA8B,GACvC,KAAK,MAAM,EAAE,CAMf"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/services/domainOwnership/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,sBAAsB,GAAG,8BAA8B,GAAG;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAiBxC;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,8BAA8B,GACvC,KAAK,MAAM,EAAE,CAMf"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PublishMachineContext } from '../../../types';
|
|
2
|
+
import { type PublishAuthorization } from '~/authorization';
|
|
3
|
+
/**
|
|
4
|
+
* First publish step: asks `authorizePublish` (per publish, else from config) to approve before
|
|
5
|
+
* anything is spent. Resolves with the authorization (its token rides along in context).
|
|
6
|
+
*/
|
|
7
|
+
export declare const authorizing: import("xstate").PromiseActorLogic<PublishAuthorization, {
|
|
8
|
+
context: PublishMachineContext;
|
|
9
|
+
}, import("xstate").EventObject>;
|
|
10
|
+
//# sourceMappingURL=authorizing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizing.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/authorizing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAG3D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAWhF;;;GAGG;AACH,eAAO,MAAM,WAAW;aAC6B,qBAAqB;gCAczE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checking.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/checking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,KAAK,iBAAiB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"checking.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/checking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,KAAK,iBAAiB,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAqDlD,eAAO,MAAM,QAAQ,yGAiIpB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAttestationsDirectToEas.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestationsDirectToEas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AA6J3D,eAAO,MAAM,6BAA6B;gBAI1B,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aAhCnB,qBAAqB;WAAS,OAAO;
|
|
1
|
+
{"version":3,"file":"createAttestationsDirectToEas.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/createAttestationsDirectToEas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AA6J3D,eAAO,MAAM,6BAA6B;gBAI1B,OAAO;oBACH,qBAAqB,CAAC,gBAAgB,CAAC;;aAhCnB,qBAAqB;WAAS,OAAO;gCA+W5E,CAAA"}
|
|
@@ -11,4 +11,5 @@ export { uploadViaBundler } from './uploadViaBundler';
|
|
|
11
11
|
export { createAttestations } from './createAttestations';
|
|
12
12
|
export { createAttestationsDirectToEas } from './createAttestationsDirectToEas';
|
|
13
13
|
export { checking } from './checking';
|
|
14
|
+
export { authorizing } from './authorizing';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAA;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,KAAK,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAC7G,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAA;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendReimbursementRequest.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/sendReimbursementRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sendReimbursementRequest.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/sendReimbursementRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAU3D,eAAO,MAAM,wBAAwB;aAFG,qBAAqB;WAAS,OAAO;gCAgD5E,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadViaBundler.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/uploadViaBundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"uploadViaBundler.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/actors/uploadViaBundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAqC3D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;aAAwC,qBAAqB;eAiKzF,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PublishWallet } from '~/helpers/seedSigner';
|
|
2
|
+
/**
|
|
3
|
+
* For a publisher address with no bytecode, says why it must not attest straight to EAS, or
|
|
4
|
+
* returns null when it can (an EOA).
|
|
5
|
+
*
|
|
6
|
+
* - The wallet sends from another address: EAS would record that address as the attester.
|
|
7
|
+
* - The publisher is the ManagedAccount factory address of a known admin (the wallet's signer,
|
|
8
|
+
* or an admin / owned address of the registered session): it is a smart account that is not
|
|
9
|
+
* deployed yet. Direct EAS would attest one transaction per Seed and deploy the account as a
|
|
10
|
+
* side effect, instead of the account's multiPublish.
|
|
11
|
+
*
|
|
12
|
+
* Factory reads that fail (no factory configured, RPC error) rule that admin out.
|
|
13
|
+
*/
|
|
14
|
+
export declare function undeployedPublisherProblem(publisherAddress: string, wallet: Partial<PublishWallet> | undefined): Promise<'sender_is_not_publisher' | 'undeployed_smart_account' | null>;
|
|
15
|
+
//# sourceMappingURL=undeployedSmartAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undeployedSmartAccount.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/undeployedSmartAccount.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAMzD;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAC9C,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,GACzC,OAAO,CAAC,yBAAyB,GAAG,0BAA0B,GAAG,IAAI,CAAC,CAuBxE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PublishMachineContext } from '../../../types';
|
|
2
|
+
import type { ResolvedPublishPayment } from '~/payment';
|
|
3
|
+
/**
|
|
4
|
+
* User-paid storage (`payment.storage: 'user'`): checks the signer's Turbo credits cover the
|
|
5
|
+
* items, then POSTs each to Turbo, which charges the signer (or `paidBy`).
|
|
6
|
+
*/
|
|
7
|
+
export declare function uploadToTurbo(items: unknown[], turbo: NonNullable<ResolvedPublishPayment['storage']['turbo']>, context: PublishMachineContext): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=uploadToTurbo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadToTurbo.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/uploadToTurbo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAsCvD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,WAAW,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAC9D,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Verifies each id is available via the upload API (`/api/upload/arweave/data/:id`)
|
|
2
|
+
* Verifies each id is available via the upload API (`/api/upload/arweave/data/:id`), or from
|
|
3
|
+
* Turbo for user-paid storage,
|
|
3
4
|
* before creating storageTransactionId attestations. Prevents attestations when
|
|
4
5
|
* the upload pipeline has not indexed the transaction or data item yet.
|
|
5
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyArweaveTransactionsExist.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/verifyArweaveTransactionsExist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyArweaveTransactionsExist.d.ts","sourceRoot":"","sources":["../../../../src/services/publish/helpers/verifyArweaveTransactionsExist.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDnF"}
|