{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "InstantiateMsg", "type": "object", "required": [ "croncat_manager_key", "croncat_tasks_key", "pause_admin", "public_registration" ], "properties": { "agent_nomination_duration": { "description": "Sets the amount of time opportunity for a pending agent to become active. If there is a pending queue, the longer a pending agent waits, the more pending agents can potentially become active based on this nomination window. This duration doesn't block the already nominated agent from becoming active, it only opens the door for more to become active. If a pending agent is nominated, then is lazy and beat by another agent, they get removed from pending queue and must register again.", "type": [ "integer", "null" ], "format": "uint16", "minimum": 0.0 }, "agents_eject_threshold": { "description": "How many slots an agent can miss before being removed from the active queue", "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 }, "allowed_agents": { "description": "If public registration is false, this provides initial, approved agent addresses", "type": [ "array", "null" ], "items": { "type": "string" } }, "croncat_manager_key": { "description": "Name of the key for raw querying Manager address from the factory", "type": "array", "items": [ { "type": "string" }, { "type": "array", "items": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } ], "maxItems": 2, "minItems": 2 }, "croncat_tasks_key": { "description": "Name of the key for raw querying Tasks address from the factory", "type": "array", "items": [ { "type": "string" }, { "type": "array", "items": { "type": "integer", "format": "uint8", "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } ], "maxItems": 2, "minItems": 2 }, "min_active_agent_count": { "description": "Minimum agent count in active queue to be untouched by bad agent verifier", "type": [ "integer", "null" ], "format": "uint16", "minimum": 0.0 }, "min_coins_for_agent_registration": { "description": "The required amount needed to actually execute a few tasks before withdraw profits. This helps make sure agent wont get stuck out the gate", "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 }, "min_tasks_per_agent": { "description": "The ratio used to calculate active agents/tasks. Example: \"3\", requires there are 4 tasks before letting in another agent to become active. (3 tasks for agent 1, 1 task for agent 2)", "type": [ "integer", "null" ], "format": "uint64", "minimum": 0.0 }, "pause_admin": { "description": "A multisig admin whose sole responsibility is to pause the contract in event of emergency. Must be a different contract address than DAO, cannot be a regular keypair Does not have the ability to unpause, must rely on the DAO to assess the situation and act accordingly", "allOf": [ { "$ref": "#/definitions/Addr" } ] }, "public_registration": { "description": "Whether agent registration is public or restricted to an internal whitelist", "type": "boolean" }, "version": { "description": "CW2 Version provided by factory", "type": [ "string", "null" ] } }, "additionalProperties": false, "definitions": { "Addr": { "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", "type": "string" } } }