## Export
Goal: vertical spike with [valset](https://github.com/confio/poe-contracts/tree/main/contracts/tgrade-valset) contract
Out of scope: Import, Validation
To discuss:
- "Custom data model" to persist state oneof with [wasmd Model](https://github.com/CosmWasm/wasmd/blob/v0.24.0/proto/cosmwasm/wasm/v1/types.proto#L134) binary
- Exportable data in valset contract
### In Tgrade
- New [privilege](https://github.com/confio/tgrade/blob/v0.8.0-beta2/x/twasm/types/privilege.go#L11) `StateExporterImporter` (or better name) ?? disciss
- Add new [sudo callback](https://github.com/confio/tgrade/blob/v0.8.0-beta2/x/twasm/contract/callback_msgs.go#L5) for export
- Add new state export data model to protobuf and
- Extend twasm [export](https://github.com/confio/tgrade/blob/v0.8.0-beta2/x/globalfee/module.go#L97)
- Persist Params, Sequences, CodeInfos as in [wasmd](https://github.com/CosmWasm/wasmd/blob/v0.24.0/x/wasm/keeper/genesis.go#L85)
- Persist privileges for contracts
- Persist ContractInfo (with extension) for all contracts and state:
- simple dump as in [wasmd ](https://github.com/CosmWasm/wasmd/blob/v0.24.0/x/wasm/keeper/genesis.go#L107) as default or
- call sudo export method when `StateExporterImporter` privilege is set and store response as "custom data model"
- Extend poe [export](https://github.com/confio/tgrade/blob/main/x/poe/keeper/genesis.go#L69)
- Set [seed_mode](https://github.com/confio/tgrade/blob/v0.8.0-beta2/proto/confio/poe/v1beta1/genesis.proto#L20) to false
- Persist contract type, address in [PoEContract](https://github.com/confio/tgrade/blob/v0.8.0-beta2/proto/confio/poe/v1beta1/genesis.proto#L35)
- Nothing to do with [globalfee](https://github.com/confio/tgrade/blob/main/x/globalfee/module.go#L87-L94)
- Enable/ integrate export calls to modules for [app](https://github.com/confio/tgrade/blob/v0.8.0-beta2/app/export.go#L9)
### In Contract
- Registers for `StateExporterImporter` privilege
- Accepts `Export` callback via [sudo msg](https://github.com/confio/poe-contracts/blob/main/packages/bindings/src/sudo.rs#L8)
- Return relevant state in "custom data model"
- Persist setup data (name)
- Persist other state
- Version
## Todo
- memory concerns when growing chain
- make it work with gentx