/** * SIGNET: Programmable Signing -- WASM policies at the agent layer * * Deploy, attach, and manage WASM signing policy programs on the * Sequence0 chain. Programs run in a sandboxed WASM environment at the * agent layer and can enforce custom signing policies (e.g. spending * limits, time locks, multi-party approval workflows). * * Programs are deployed to the ProgramRegistry contract on-chain, * then attached to individual wallets. When a sign request arrives, * agents execute all attached programs -- the request is approved only * if every program returns "allow". * * @example * ```typescript * import { Sequence0 } from '@sequence0/sdk'; * * const s0 = new Sequence0({ network: 'mainnet', ownerPrivateKey: '0x...' }); * * // Deploy a spending-limit WASM program * const programId = await s0.deployProgram({ * bytecode: wasmBytes, * metadataUri: 'ipfs://Qm.../spending-limit.json', * gasLimit: 5_000_000, * }); * * // Attach it to a wallet * await s0.attachProgram('my-wallet', programId); * * // Query attached programs * const programs = await s0.getWalletPrograms('my-wallet'); * ``` */ export interface ProgramDeployOptions { /** WASM bytecode as hex string or ArrayBuffer */ bytecode: string | ArrayBuffer; /** IPFS URI for human-readable metadata (e.g. name, description, ABI) */ metadataUri?: string; /** Max WASM fuel units (default: 10_000_000) */ gasLimit?: number; /** Max WASM memory pages (default: 16 = 1MB, each page is 64KB) */ memoryLimit?: number; } export interface ProgramInfo { /** Unique program identifier (bytes32 hex) */ programId: string; /** Ethereum address of the deployer */ deployer: string; /** Unix timestamp when the program was deployed */ createdAt: number; /** Whether the program is currently active */ isActive: boolean; /** IPFS URI pointing to program metadata */ metadataUri: string; /** Max WASM fuel units */ gasLimit: number; /** Max WASM memory pages */ memoryLimit: number; } export interface WalletProgramsResponse { /** The wallet ID queried */ walletId: string; /** Programs attached to this wallet */ programs: ProgramInfo[]; } //# sourceMappingURL=programmable.d.ts.map