import type { Address, Hex, SignableMessage, SignedAuthorization, TypedDataDefinition } from 'viem'; import type { ChainReference, EvmChainReference } from '../chains/types.js'; import type { BundlerPort } from '../clients/bundler/port.js'; import type { OrchestratorPort } from '../clients/orchestrator/port.js'; import type { OrchestratorAppFeeBalances, OrchestratorPortfolio } from '../clients/orchestrator/types.js'; import type { PaymasterPort } from '../clients/paymaster/port.js'; import type { RpcPort } from '../clients/rpc/port.js'; import type { AccountInvocationContext, ResolvedSdkConfig } from '../config/resolved.js'; import type { Session, SessionDefinition, SessionDetails } from '../modules/validators/smart-sessions/types.js'; import type { IndependentOwnerSignature } from '../signing/intent-plans/independent.js'; import type { OwnerSignerSelection, SignerInvocationPort, SigningTranscript } from '../signing/types.js'; import type { IntentInput, IntentSessionSelection, IntentStatus, PreparedIntent, SignedIntent, SubmittedIntent } from '../transactions/intents/types.js'; import type { PreparedUserOperation, SignedUserOperation, SubmittedUserOperation, UserOperationInput, UserOperationStatus } from '../transactions/user-operations/types.js'; export interface ClockPort { readonly now: () => number; readonly sleep: (milliseconds: number) => Promise; readonly timeout: (promise: Promise, milliseconds: number, error: () => Error) => Promise; } export interface CoreDependencies { readonly orchestrator: OrchestratorPort; readonly rpc: RpcPort; readonly bundler?: BundlerPort; readonly paymaster?: PaymasterPort; readonly signerInvoker?: SignerInvocationPort; readonly clock: ClockPort; } export type AccountDependencyResolver = (context: AccountInvocationContext) => CoreDependencies; export interface ProjectWorkflows { readonly getIntentStatus: (intentId: string) => Promise; readonly splitIntents: OrchestratorPort['splitIntents']; readonly getAppFeeBalances: () => Promise; readonly createSession: (definition: SessionDefinition) => Promise; } export interface AccountWorkflows { readonly getAddress: (context: AccountInvocationContext, chain: import('../chains/types.js').EvmChainReference) => import('viem').Address; readonly signMessage: (context: AccountInvocationContext, input: { readonly message: SignableMessage; readonly chain: import('../chains/types.js').EvmChainReference; readonly signers?: OwnerSignerSelection | IntentSessionSelection; }) => Promise<{ readonly signature: Hex; readonly transcript: SigningTranscript; }>; readonly signTypedData: (context: AccountInvocationContext, input: { readonly typedData: TypedDataDefinition; readonly chain: import('../chains/types.js').EvmChainReference; readonly signers?: OwnerSignerSelection | IntentSessionSelection; }) => Promise<{ readonly signature: Hex; readonly transcript: SigningTranscript; }>; readonly signEip7702InitData: (context: AccountInvocationContext) => Promise<{ readonly signature: Hex; readonly transcript: SigningTranscript; }>; readonly signAuthorizations: (context: AccountInvocationContext, input: { readonly chains: readonly import('../chains/types.js').ChainReference[]; readonly eip7702InitSignature?: Hex; }) => Promise<{ readonly authorizations: readonly SignedAuthorization[]; readonly transcript?: SigningTranscript; }>; readonly prepareIntent: (context: AccountInvocationContext, input: IntentInput) => Promise>; readonly signIntent: (context: AccountInvocationContext, input: PreparedIntent) => Promise<{ readonly intent: SignedIntent; readonly transcript: SigningTranscript; }>; readonly signIntentAsOwner: (context: AccountInvocationContext, input: PreparedIntent, selection: { readonly signerId: string; readonly validatorId?: number | Hex; }) => Promise; readonly assembleIntent: (context: AccountInvocationContext, input: PreparedIntent, signatures: readonly IndependentOwnerSignature[]) => Promise>; readonly submitIntent: (context: AccountInvocationContext, input: SignedIntent) => Promise; readonly sendIntent: (context: AccountInvocationContext, input: IntentInput) => Promise; readonly waitForIntentStatus: (context: AccountInvocationContext, intentId: string) => Promise; readonly prepareUserOperation: (context: AccountInvocationContext, input: UserOperationInput) => Promise>; readonly signUserOperation: (context: AccountInvocationContext, input: PreparedUserOperation) => Promise>; readonly submitUserOperation: (context: AccountInvocationContext, input: SignedUserOperation) => Promise; readonly sendUserOperation: (context: AccountInvocationContext, input: UserOperationInput) => Promise; readonly getUserOperationStatus: (context: AccountInvocationContext, input: SubmittedUserOperation) => Promise; readonly waitForUserOperationStatus: (context: AccountInvocationContext, input: SubmittedUserOperation) => Promise; readonly reconstructPreparedUserOperation: (context: AccountInvocationContext, input: { readonly chain: EvmChainReference; readonly operation: PreparedUserOperation['operation']; readonly signers?: OwnerSignerSelection; }) => Promise>; readonly reconstructSignedUserOperation: (context: AccountInvocationContext, input: { readonly chain: EvmChainReference; readonly operation: PreparedUserOperation['operation']; readonly signature: Hex; readonly signers?: OwnerSignerSelection; }) => Promise>; readonly getPortfolio: (context: AccountInvocationContext, onTestnets?: boolean) => Promise; readonly getInitData: (context: AccountInvocationContext) => { readonly factory: Address; readonly factoryData: Hex; }; readonly isDeployed: (context: AccountInvocationContext, chain: EvmChainReference) => Promise; readonly deploy: (context: AccountInvocationContext, chain: EvmChainReference, options?: { readonly sponsored?: boolean; readonly eip7702InitSignature?: Hex; }) => Promise; readonly setup: (context: AccountInvocationContext, chain: EvmChainReference) => Promise; readonly getTransactionMessages: (prepared: PreparedIntent) => IntentMessages; readonly reconstructPreparedIntent: (context: AccountInvocationContext, input: { readonly traceId: string; readonly quote: PreparedIntent['quote']; readonly quotes: PreparedIntent['quotes']; readonly request: PreparedIntent['request']; readonly intentInput: IntentInput; }) => Promise>; readonly signIntentFromSignData: (context: AccountInvocationContext, input: { readonly signData: IntentMessages; readonly targetChain: ChainReference; readonly signers?: OwnerSignerSelection | IntentSessionSelection; }) => Promise<{ readonly originSignatures: SignedIntent['originSignatures']; readonly destinationSignature: Hex; readonly targetExecutionSignature: Hex | undefined; readonly transcript: SigningTranscript; }>; readonly getOwners: (context: AccountInvocationContext, chain: EvmChainReference) => Promise<{ readonly accounts: readonly Address[]; readonly threshold: number; } | null>; readonly getValidators: (context: AccountInvocationContext, chain: EvmChainReference) => Promise; readonly getExecutors: (context: AccountInvocationContext, chain: EvmChainReference) => Promise; readonly getSessionDetails: (context: AccountInvocationContext, sessions: readonly Session[]) => Promise; readonly isSessionEnabled: (context: AccountInvocationContext, session: Session) => Promise; readonly signEnableSession: (context: AccountInvocationContext, details: SessionDetails) => Promise; } export interface IntentMessages { readonly origin: readonly TypedDataDefinition[]; readonly destination: TypedDataDefinition; readonly targetExecution?: TypedDataDefinition; } export interface AccountComposition { readonly context: AccountInvocationContext; readonly workflows: AccountWorkflows; } export interface CoreComposition { readonly config: ResolvedSdkConfig; readonly project: ProjectWorkflows; readonly createAccount: (context: AccountInvocationContext) => AccountComposition; } export type CoreCompositionFactory = (config: ResolvedSdkConfig, dependencies: CoreDependencies) => CoreComposition; //# sourceMappingURL=compose-types.d.ts.map