@seedprotocol/publish 0.7.10 → 0.7.11-next.1396.g883ef47
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/CHANGELOG.md +9 -1
- package/README.md +1 -1
- package/dist/{chainConfig-B8U89YJb.js → chainConfig-nYXoVL1s.js} +1283 -1284
- package/dist/chainConfig-nYXoVL1s.js.map +1 -0
- package/dist/{collectBatchUids-CnIe9jUB.js → collectBatchUids-qRc2q61Q.js} +1 -2
- package/dist/collectBatchUids-qRc2q61Q.js.map +1 -0
- package/dist/config.d.ts +0 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/{ensureAutomationSessionKey-B19eVd1T.js → ensureAutomationSessionKey-BaaHU2Wb.js} +27 -27
- package/dist/{ensureAutomationSessionKey-B19eVd1T.js.map → ensureAutomationSessionKey-BaaHU2Wb.js.map} +1 -1
- package/dist/{ensureModularPublishBootstrap-COEV4BGz.js → ensureModularPublishBootstrap-NzYQ1MfY.js} +9 -9
- package/dist/{ensureModularPublishBootstrap-COEV4BGz.js.map → ensureModularPublishBootstrap-NzYQ1MfY.js.map} +1 -1
- package/dist/{ensureSmartWalletThenPublish-DhWyUjt0.js → ensureSmartWalletThenPublish-CpuDoo5O.js} +16 -16
- package/dist/{ensureSmartWalletThenPublish-DhWyUjt0.js.map → ensureSmartWalletThenPublish-CpuDoo5O.js.map} +1 -1
- package/dist/helpers/adapters/eip1193.d.ts +1 -3
- package/dist/helpers/adapters/eip1193.d.ts.map +1 -1
- package/dist/helpers/assertStorageBoundToIdentity.d.ts.map +1 -1
- package/dist/helpers/constants.d.ts +0 -13
- package/dist/helpers/constants.d.ts.map +1 -1
- package/dist/helpers/enrollPublishAutomation.d.ts +5 -1
- package/dist/helpers/enrollPublishAutomation.d.ts.map +1 -1
- package/dist/helpers/publishWalletRegistry.d.ts +1 -5
- package/dist/helpers/publishWalletRegistry.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +239 -239
- package/dist/index.js.map +1 -1
- package/dist/managedAccountAdmin-BeSXTCeH.js +26 -0
- package/dist/{managedAccountAdmin-xZbC3bQ5.js.map → managedAccountAdmin-BeSXTCeH.js.map} +1 -1
- package/dist/{publishAuthorization-CpmPRbpm.js → publishAuthorization-CVl5ZK5B.js} +37 -34
- package/dist/publishAuthorization-CVl5ZK5B.js.map +1 -0
- package/dist/publishWalletRegistry-BaQe9rIR.js.map +1 -1
- package/dist/react/PublishProvider.thirdweb.d.ts +0 -1
- package/dist/react/PublishProvider.thirdweb.d.ts.map +1 -1
- package/dist/{resolveRevokeAccount-D08n9UTy.js → resolveRevokeAccount-DRrUY9FR.js} +12 -12
- package/dist/{resolveRevokeAccount-D08n9UTy.js.map → resolveRevokeAccount-DRrUY9FR.js.map} +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/publish/actors/index.d.ts +1 -1
- package/dist/services/publish/actors/index.d.ts.map +1 -1
- package/dist/services/publish/actors/seedUidHelpers.d.ts +0 -39
- package/dist/services/publish/actors/seedUidHelpers.d.ts.map +1 -1
- package/dist/services/publish/actors/utils.d.ts +0 -1
- package/dist/services/publish/actors/utils.d.ts.map +1 -1
- package/dist/services/publish/index.d.ts +4 -6
- package/dist/services/publish/index.d.ts.map +1 -1
- package/dist/services/publishAuthorization/index.d.ts +1 -1
- package/dist/services/publishAuthorization/index.d.ts.map +1 -1
- package/dist/services/publishCost/index.d.ts +2 -2
- package/dist/services/publishCost/index.d.ts.map +1 -1
- package/dist/services/publishedBy/collectBatchUids.d.ts +0 -2
- package/dist/services/publishedBy/collectBatchUids.d.ts.map +1 -1
- package/dist/services/publishedBy/index.d.ts +1 -3
- package/dist/services/publishedBy/index.d.ts.map +1 -1
- package/dist/services/publishedBy/public.d.ts +1 -1
- package/dist/services/publishedBy/public.d.ts.map +1 -1
- package/dist/thirdweb.js +129 -128
- package/dist/thirdweb.js.map +1 -1
- package/dist/{worker-4DXDWw6E.js → worker-D1czx7Yg.js} +2 -2
- package/dist/{worker-4DXDWw6E.js.map → worker-D1czx7Yg.js.map} +1 -1
- package/package.json +7 -9
- package/dist/chainConfig-B8U89YJb.js.map +0 -1
- package/dist/collectBatchUids-CnIe9jUB.js.map +0 -1
- package/dist/managedAccountAdmin-xZbC3bQ5.js +0 -26
- package/dist/publishAuthorization-CpmPRbpm.js.map +0 -1
- package/dist/services/publish/seeds.d.ts +0 -2
- package/dist/services/publish/seeds.d.ts.map +0 -1
- package/dist/services/shared.d.ts +0 -7
- package/dist/services/shared.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collectBatchUids-CnIe9jUB.js","names":["__exportAll","collectBatchUids_exports","collectPublishedBatch","uidsFromAttestationPairs","pushUid","uid","n","normalizeBytes32Hex","isValidEasAttestationUid","out","seedUid","params","attestationUids","u","seen","unique","key","versionRaw","p","pairs"],"sources":["../src/services/publishedBy/collectBatchUids.ts"],"sourcesContent":["import { isValidEasAttestationUid, normalizeBytes32Hex } from '@seedprotocol/eas'\nimport type { PublishedBatchResult } from './index'\n\nconst ZERO =\n '0x0000000000000000000000000000000000000000000000000000000000000000' as const\n\nfunction pushUid(out: string[], uid: string | undefined | null) {\n if (!uid) return\n const n = normalizeBytes32Hex(uid)\n if (!isValidEasAttestationUid(n)) return\n out.push(n)\n}\n\n/**\n * Build a {@link PublishedBatchResult} from seed/version UIDs and any additional attestation UIDs\n * (property attestations, related seeds, etc.) collected from publish receipts.\n */\nexport function collectPublishedBatch(params: {\n seedUid: string\n versionUid?: string | null\n extraUids?: readonly (string | undefined | null)[]\n}): PublishedBatchResult | null {\n const seedUid = normalizeBytes32Hex(params.seedUid) as `0x${string}`\n if (!isValidEasAttestationUid(seedUid)) return null\n\n const attestationUids: string[] = []\n pushUid(attestationUids, seedUid)\n if (params.versionUid) pushUid(attestationUids, params.versionUid)\n for (const u of params.extraUids ?? []) {\n pushUid(attestationUids, u)\n }\n\n // Dedupe preserving order\n const seen = new Set<string>()\n const unique: `0x${string}`[] = []\n for (const u of attestationUids) {\n const key = u.toLowerCase()\n if (seen.has(key)) continue\n seen.add(key)\n unique.push(u as `0x${string}`)\n }\n\n const versionRaw = params.versionUid ? normalizeBytes32Hex(params.versionUid) : undefined\n const versionUid =\n versionRaw && isValidEasAttestationUid(versionRaw)\n ? (versionRaw as `0x${string}`)\n : undefined\n\n return {\n seedUid,\n versionUid,\n attestationUids: unique,\n }\n}\n\n/**\n * Flatten CreatedAttestation / Attested pairs into UID strings (skips placeholders).\n */\nexport function uidsFromAttestationPairs(\n pairs: readonly { attestationUid?: string; uid?: string }[],\n): string[] {\n const out: string[] = []\n for (const p of pairs) {\n pushUid(out, p.attestationUid ?? p.uid)\n }\n return out\n}\n\nexport { ZERO as ZERO_BYTES32_PUBLISHED_BY }\n"],"mappings":";;;;;;;;AAMA,SAASI,EAAQ,GAAe,GAAgC;CAC9D,IAAI,CAACC,GAAK;CACV,IAAMC,IAAIC,EAAoBF,CAAG;CACjC,AAAKG,EAAyBF,CAAC,KAC/BG,EAAI,KAAKH,CAAC;AACZ;AAMA,SAAgBJ,EAAsB,GAIN;CAC9B,IAAMQ,IAAUH,EAAoBI,EAAO,OAAO;CAClD,IAAI,CAACH,EAAyBE,CAAO,GAAG,OAAO;CAE/C,IAAME,IAA4B,CAAC;CAEnC,AADAR,EAAQQ,GAAiBF,CAAO,GAC5BC,EAAO,cAAYP,EAAQQ,GAAiBD,EAAO,UAAU;CACjE,KAAK,IAAME,KAAKF,EAAO,aAAa,CAAC,GACnC,EAAQC,GAAiBC,CAAC;CAI5B,IAAMC,oBAAO,IAAI,IAAY,GACvBC,IAA0B,CAAC;CACjC,KAAK,IAAMF,KAAKD,GAAiB;EAC/B,IAAMI,IAAMH,EAAE,YAAY;EAC1B,AAAIC,EAAK,IAAIE,CAAG,MAChBF,EAAK,IAAIE,CAAG,GACZD,EAAO,KAAKF,CAAkB;CAChC;CAEA,IAAMI,IAAaN,EAAO,aAAaJ,EAAoBI,EAAO,UAAU,IAAI,KAAA;CAMhF,OAAO;EACL;EACA,YANAM,KAAcT,EAAyBS,CAAU,IAC5CA,IACD,KAAA;EAKJ,iBAAiBF;CACnB;AACF;AAKA,SAAgBZ,EACd,GACU;CACV,IAAMM,IAAgB,CAAC;CACvB,KAAK,IAAMS,KAAKC,GACd,EAAQV,GAAKS,EAAE,kBAAkBA,EAAE,GAAG;CAExC,OAAOT;AACT"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
|
|
2
|
-
import { G as t, Q as n, _t as r, it as i, qt as a, t as o, zt as s } from "./chainConfig-B8U89YJb.js";
|
|
3
|
-
//#region src/helpers/managedAccountAdmin.ts
|
|
4
|
-
var c = /* @__PURE__ */ e({ getManagedAccountAdmin: () => l });
|
|
5
|
-
async function l(e) {
|
|
6
|
-
n();
|
|
7
|
-
let c = t();
|
|
8
|
-
await c.autoConnect({
|
|
9
|
-
client: i(),
|
|
10
|
-
chain: r()
|
|
11
|
-
});
|
|
12
|
-
let l = c.getAccount();
|
|
13
|
-
if (!l) throw new a(`Could not connect the in-app wallet that administers your publishing account on ${o()}. Reconnect with the same sign-in method and try again.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
|
|
14
|
-
let u;
|
|
15
|
-
try {
|
|
16
|
-
u = await s(e, l.address);
|
|
17
|
-
} catch (t) {
|
|
18
|
-
throw new a(`Could not check the admins of your publishing account on ${o()}.`, "MANAGED_ACCOUNT_UNAVAILABLE", e, t);
|
|
19
|
-
}
|
|
20
|
-
if (!u) throw new a(`The connected in-app wallet (${l.address}) is not an admin of publishing account ${e}.`, "MANAGED_ACCOUNT_UNAVAILABLE", e);
|
|
21
|
-
return l;
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
export { c as n, l as t };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=managedAccountAdmin-xZbC3bQ5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publishAuthorization-CpmPRbpm.js","names":["ZERO_ADDRESS","registerSchema","prepareEasMultiRevoke","isSeedTxSender","prepareNameSchemaAttestation","getAttestationUidFromReceipt","waitForPublishReceipt","getPublishConfig","getSchemaRecord","prepareEasAttest","isPublishWallet","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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../src/services/publish/seeds.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Actor, ActorLogic, Snapshot } from 'xstate';
|
|
2
|
-
type SubscribeToProcess = (actor: Actor<ActorLogic<any, any>>, saveFn: (params: {
|
|
3
|
-
persistedSnapshot: Snapshot<unknown>;
|
|
4
|
-
}) => Promise<void>) => Actor<ActorLogic<any, any>>;
|
|
5
|
-
export declare const subscribeToProcess: SubscribeToProcess;
|
|
6
|
-
export {};
|
|
7
|
-
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/services/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAG,MAAM,QAAQ,CAAA;AAIrD,KAAK,kBAAkB,GAAG,CAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAE,MAAM,EAAE;IAAE,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,KAAO,OAAO,CAAC,IAAI,CAAC,KAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAEhL,eAAO,MAAM,kBAAkB,EAAE,kBAWhC,CAAA"}
|