/** * TOML template strings written by `sigil portal add`. Hand-written rather * than serialized so we can include explanatory comments — TOML serializers * generally strip those. */ export declare const PERMISSIVE_TEMPLATE = "# sigil policy file \u2014 permissive mode (default)\n#\n# This portal will sign anything the agent asks for. Your private key is\n# still encrypted at rest and never enters Claude's context, but signing\n# authority is unbounded.\n#\n# To restrict what this portal can sign, run:\n#\n# sigil portal remove \n# sigil portal add --key-file --strict\n#\n# ...and edit the resulting policy file. Or just change \"permissive\" below\n# to \"strict\" and add the rules in the commented template at:\n# https://github.com/cdrn/sigil#policy-engine\n\nmode = \"permissive\"\n\n# Optional rolling-window caps on native value signed by this portal \u2014 the\n# one restriction that still makes sense on a permissive portal (\"a bot with\n# an allowance\"). Decimal strings in wei; either or both may be set; an\n# hourly cap must not exceed the daily one. Only tx.value is counted (token\n# transfers are calldata) \u2014 see the README.\n# max_value_per_hour_wei = \"100000000000000000\" # 0.1 ETH / hour\n# max_value_per_day_wei = \"1000000000000000000\" # 1 ETH / day\n#\n# Same for native SOL transfers, in lamports (1 SOL = 1000000000):\n# svm_max_lamports_per_hour = \"100000000\"\n# svm_max_lamports_per_day = \"1000000000\"\n"; export declare const STRICT_TEMPLATE = "# sigil policy file \u2014 strict mode\n#\n# Every sign request is checked against the rules below before the key is\n# used. Edit the values to fit your portal. Anything you leave at the\n# default-zero/empty state will deny.\n\nmode = \"strict\"\n\n# Allowed chain IDs (decimal). At least one is required.\n# 1 = ethereum mainnet\n# 8453 = base\n# 42161 = arbitrum one\n# 10 = optimism\n# 11155111 = sepolia testnet\nchain_ids = [1]\n\n# Allowed destination addresses (lowercase 0x-prefixed). Empty = no tx allowed.\n# Example:\n# allow_to = [\"0x000000000000000000000000000000000000dead\"]\nallow_to = []\n\n# Per-tx value cap in wei. Default 0 = no ETH sends allowed at all.\n# 0.1 ether = \"100000000000000000\"\n# 1 ether = \"1000000000000000000\"\n# Quoted because uint256 doesn't fit in a TOML integer.\nmax_value_wei = \"0\"\n\n# 4-byte function selectors that are callable. Empty = pure ETH sends only.\n# Common selectors:\n# \"0xa9059cbb\" ERC-20 transfer(address,uint256)\n# \"0x095ea7b3\" ERC-20 approve(address,uint256)\n# \"0x23b872dd\" ERC-20 transferFrom(address,address,uint256)\nallowed_selectors = []\n\n# Contract creation (deploys, to = null). Initcode is arbitrary code that no\n# allowlist can vet, so even when enabled every deploy still respects\n# max_value_wei and ALWAYS routes to the out-of-band confirm gate \u2014 a\n# [confirm.ntfy] block in ~/.sigil/config.toml is required, otherwise\n# sigil-mcp refuses to start.\nallow_contract_creation = false\n\n# EIP-191 personal_sign \u2014 typically safe (used by Sign-In With Ethereum and\n# similar login flows). Set true to permit.\nallow_message_signing = false\n\n# EIP-712 typed data \u2014 CAN authorize off-chain financial actions (Permit,\n# OpenSea orders, gasless approvals). Treat with the same care as signing\n# transactions. Set true to permit.\nallow_typed_data = false\n\n# When allow_typed_data = true, these refine what may be signed. Each empty\n# list means \"no restriction on that axis\". Independently, a domain that\n# must carry a chainId naming one of chain_ids above (chain-less domains are\n# refused in strict mode \u2014 they can't be checked).\n# typed_data_verifying_contracts \u2014 lowercase 0x addresses the domain's\n# verifyingContract must be one of (e.g. Permit2, an exchange).\n# typed_data_primary_types \u2014 primaryType names, e.g. [\"Permit\", \"Order\"].\ntyped_data_verifying_contracts = []\ntyped_data_primary_types = []\n\n# Optional rolling-window caps on tx.value (mode-independent). Decimal\n# strings in wei; hourly must not exceed daily. Enforced against a\n# per-portal ledger in ~/.sigil/state; see \"sigil policy spend \".\n# max_value_per_hour_wei = \"100000000000000000\" # 0.1 ETH / hour\n# max_value_per_day_wei = \"1000000000000000000\" # 1 ETH / day\n\n# Optional: above this wei amount, sigil pushes a notification to your\n# phone and waits for an explicit approve/deny tap before signing. Must be\n# strictly less than max_value_wei. Requires a [confirm.ntfy] block in\n# ~/.sigil/config.toml; without one, sigil-mcp refuses to start.\n# Example: confirm anything above 0.01 ETH.\n# require_confirm_above_wei = \"10000000000000000\"\n\n# --- Solana (SVM) ----------------------------------------------------------\n# The same key also controls a Solana (ed25519) address \u2014 see its base58 in\n# \"sigil portal list\". These rules gate signing with it.\n\n# Sign arbitrary off-chain ed25519 messages (e.g. Sign-In With Solana).\nallow_svm_message_signing = false\n\n# Allowed recipients for native SOL transfers (base58). Empty = none.\n# sigil only decodes System-Program SOL transfers offline; any Solana tx it\n# can't fully decode (SPL tokens, program calls, address-lookup-table\n# accounts) is routed to the confirm gate instead of auto-allowed.\n# Example: svm_allow_to = [\"So11111111111111111111111111111111111111112\"]\nsvm_allow_to = []\n\n# Per-tx cap on total transferred lamports (1 SOL = 1000000000). Default 0 =\n# no SOL transfers allowed. Quoted to stay clear of TOML int limits.\nsvm_max_lamports = \"0\"\n\n# Optional: above this lamport total \u2014 OR for any tx sigil can't fully decode\n# \u2014 push a confirm to your phone. Must be strictly less than svm_max_lamports.\n# Example: confirm anything above 0.1 SOL.\n# require_confirm_above_lamports = \"100000000\"\n\n# Optional rolling-window caps on decoded native SOL transfers, in lamports.\n# svm_max_lamports_per_hour = \"100000000\"\n# svm_max_lamports_per_day = \"1000000000\"\n"; export type PolicyMode = 'permissive' | 'strict'; export declare function policyTemplate(mode: PolicyMode): string; //# sourceMappingURL=template.d.ts.map