///
import { ExecutionContext, Fetcher, Request } from '@cloudflare/workers-types/experimental';
import { Address, Hash, Hex } from 'viem';
import * as iamTypes from './env/iam/types.js';
export { ApiError } from './rpc.js';
export * from './env/iam/types.js';
export * from './env/tpm/types.js';
export interface Runner {
getConfig(): Promise>;
getAttestation(params: GetAttestationParams): Promise;
acquireIdentity(params: AcquireIdentityParams): Promise;
getOmniKey(params: GetOmniKeyParams): Promise;
}
export type AcqRelIdentityParams = {
network: NetworkNameOrNetwork;
identity: IdentityIdOrIdentity;
recipient?: Address;
permitter?: Address;
};
export type GetAttestationParams = AcqRelIdentityParams & {
purpose?: 'acquire' | 'release';
};
export type Attestation = {
document: Hex;
};
export type AcquireIdentityParams = AcqRelIdentityParams & {
permitTtl?: number;
duration?: number;
authorization?: Uint8Array | Hex;
/** @experimental */
sssss?: iamTypes.SsssParams;
};
export type GetOmniKeyParams = {
network: NetworkNameOrNetwork;
identity: IdentityIdOrIdentity;
/** @experimental */
sssss?: iamTypes.SsssParams;
};
export type NetworkNameOrNetwork = 'local' | `sapphire-${'testnet' | 'mainnet'}` | iamTypes.Network;
export type IdentityIdOrIdentity = Hash | iamTypes.Identity;
export interface Callbacks {
tasks(rnr: Runner): Promise;
}
export type WorkerEnv = {
config: Record;
iam: Fetcher;
tpm?: Fetcher;
};
export default function (callbacks: Callbacks): {
fetch: (req: Request>, env: WorkerEnv, ctx: ExecutionContext) => Promise;
scheduled(_event: ScheduledEvent, env: WorkerEnv, ctx: ExecutionContext): void;
};
//# sourceMappingURL=index.d.ts.map