diff --git a/packages/client-node/README.md b/packages/client-node/README.md index 585a8342..3946797c 100644 --- a/packages/client-node/README.md +++ b/packages/client-node/README.md @@ -1,10 +1,10 @@ -# Logion Client SDK (browser) +# Logion Client SDK (node) -This project provides a JS/TypeScript SDK enabling an application running in a browser to interact with a logion network. +This project provides a JS/TypeScript SDK enabling an application running in a Node.js environment, to interact with a logion network. ## Installation -Use your favorite package manager (e.g. yarn) and install package `@logion/client-browser` in your JavaScript/TypeScript project. +Use your favorite package manager (e.g. yarn) and install package `@logion/client-node` in your JavaScript/TypeScript project. ## Usage diff --git a/packages/client-node/config/ipfs-cluster1/identity.json b/packages/client-node/config/ipfs-cluster1/identity.json new file mode 100644 index 00000000..21b2a759 --- /dev/null +++ b/packages/client-node/config/ipfs-cluster1/identity.json @@ -0,0 +1,4 @@ +{ + "id": "12D3KooWHpQ7R7EHsm5KrnPfbEvYAp9C4AD9J42EosATYtEbGzMw", + "private_key": "CAESQESsX1Ey1mlZ64rayr54hxUPELHwEZKKMaMZt2gGpi2Rdt+xIu6KTbbikVMiT85ctUX4A2UnWkpIDticV8RRH5o=" +} \ No newline at end of file diff --git a/packages/client-node/config/ipfs-cluster1/service.json b/packages/client-node/config/ipfs-cluster1/service.json new file mode 100644 index 00000000..893813e1 --- /dev/null +++ b/packages/client-node/config/ipfs-cluster1/service.json @@ -0,0 +1,168 @@ +{ + "cluster": { + "peername": "node1", + "secret": "2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b", + "leave_on_shutdown": false, + "listen_multiaddress": [ + "/ip4/0.0.0.0/tcp/9096", + "/ip4/0.0.0.0/udp/9096/quic" + ], + "enable_relay_hop": true, + "connection_manager": { + "high_water": 400, + "low_water": 100, + "grace_period": "2m0s" + }, + "dial_peer_timeout": "3s", + "state_sync_interval": "5m0s", + "pin_recover_interval": "12m0s", + "replication_factor_min": -1, + "replication_factor_max": -1, + "monitor_ping_interval": "2s", + "peer_watch_interval": "5s", + "mdns_interval": "0", + "disable_repinning": false, + "peer_addresses": [] + }, + "consensus": { + "crdt": { + "cluster_name": "ipfs-cluster", + "trusted_peers": [ + "*" + ], + "batching": { + "max_batch_size": 0, + "max_batch_age": "0s" + }, + "repair_interval": "1h0m0s" + } + }, + "api": { + "ipfsproxy": { + "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095", + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "log_file": "", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "1m0s", + "max_header_bytes": 4096 + }, + "restapi": { + "http_listen_multiaddress": "/ip4/0.0.0.0/tcp/9094", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + } + }, + "ipfs_connector": { + "ipfshttp": { + "node_multiaddress": "/dns4/client-node_ipfs1_1/tcp/5001", + "connect_swarms_delay": "30s", + "ipfs_request_timeout": "5m0s", + "pin_timeout": "2m0s", + "unpin_timeout": "3h0m0s", + "repogc_timeout": "24h0m0s", + "informer_trigger_interval": 0 + } + }, + "pin_tracker": { + "stateless": { + "concurrent_pins": 10, + "priority_pin_max_age": "24h0m0s", + "priority_pin_max_retries": 5 + } + }, + "monitor": { + "pubsubmon": { + "check_interval": "15s" + } + }, + "allocator": { + "balanced": { + "allocate_by": [ + "tag:group", + "freespace" + ] + } + }, + "informer": { + "disk": { + "metric_ttl": "30s", + "metric_type": "freespace" + }, + "tags": { + "metric_ttl": "30s", + "tags": { + "group": "default" + } + } + }, + "observations": { + "metrics": { + "enable_stats": false, + "prometheus_endpoint": "/ip4/127.0.0.1/tcp/8888", + "reporting_interval": "2s" + }, + "tracing": { + "enable_tracing": false, + "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831", + "sampling_prob": 0.3, + "service_name": "cluster-daemon" + } + }, + "datastore": { + "leveldb": { + "leveldb_options": { + "block_cache_capacity": 0, + "block_cache_evict_removed": false, + "block_restart_interval": 0, + "block_size": 0, + "compaction_expand_limit_factor": 0, + "compaction_gp_overlaps_factor": 0, + "compaction_l0_trigger": 0, + "compaction_source_limit_factor": 0, + "compaction_table_size": 0, + "compaction_table_size_multiplier": 0, + "compaction_table_size_multiplier_per_level": null, + "compaction_total_size": 0, + "compaction_total_size_multiplier": 0, + "compaction_total_size_multiplier_per_level": null, + "compression": 0, + "disable_buffer_pool": false, + "disable_block_cache": false, + "disable_compaction_backoff": false, + "disable_large_batch_transaction": false, + "iterator_sampling_rate": 0, + "no_sync": false, + "no_write_merge": false, + "open_files_cache_capacity": 0, + "read_only": false, + "strict": 0, + "write_buffer": 0, + "write_l0_pause_trigger": 0, + "write_l0_slowdown_trigger": 0 + } + } + } + } diff --git a/packages/client-node/config/ipfs-cluster2/identity.json b/packages/client-node/config/ipfs-cluster2/identity.json new file mode 100644 index 00000000..85e2023a --- /dev/null +++ b/packages/client-node/config/ipfs-cluster2/identity.json @@ -0,0 +1,4 @@ +{ + "id": "12D3KooWGy66BfypN8Q1nGKvH92eAjYcx7ryvyhJoLHF8gHA7AGw", + "private_key": "CAESQHTuyPm35QRrSYxkQ5spp5SBn5FkYEaYhv2e2KiOp0wxaj3bCdfdEL0CdAQ1VmXuZQTIb1/O60hBVg7Fy54MnaA=" +} \ No newline at end of file diff --git a/packages/client-node/config/ipfs-cluster2/service.json b/packages/client-node/config/ipfs-cluster2/service.json new file mode 100644 index 00000000..165488a1 --- /dev/null +++ b/packages/client-node/config/ipfs-cluster2/service.json @@ -0,0 +1,168 @@ +{ + "cluster": { + "peername": "node2", + "secret": "2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b", + "leave_on_shutdown": false, + "listen_multiaddress": [ + "/ip4/0.0.0.0/tcp/9096", + "/ip4/0.0.0.0/udp/9096/quic" + ], + "enable_relay_hop": true, + "connection_manager": { + "high_water": 400, + "low_water": 100, + "grace_period": "2m0s" + }, + "dial_peer_timeout": "3s", + "state_sync_interval": "5m0s", + "pin_recover_interval": "12m0s", + "replication_factor_min": -1, + "replication_factor_max": -1, + "monitor_ping_interval": "2s", + "peer_watch_interval": "5s", + "mdns_interval": "0", + "disable_repinning": false, + "peer_addresses": ["/dns4/client-node_ipfs-cluster1_1/tcp/9096/p2p/12D3KooWHpQ7R7EHsm5KrnPfbEvYAp9C4AD9J42EosATYtEbGzMw"] + }, + "consensus": { + "crdt": { + "cluster_name": "ipfs-cluster", + "trusted_peers": [ + "*" + ], + "batching": { + "max_batch_size": 0, + "max_batch_age": "0s" + }, + "repair_interval": "1h0m0s" + } + }, + "api": { + "ipfsproxy": { + "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095", + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "log_file": "", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "1m0s", + "max_header_bytes": 4096 + }, + "restapi": { + "http_listen_multiaddress": "/ip4/0.0.0.0/tcp/9094", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + } + }, + "ipfs_connector": { + "ipfshttp": { + "node_multiaddress": "/dns4/client-node_ipfs2_1/tcp/5001", + "connect_swarms_delay": "30s", + "ipfs_request_timeout": "5m0s", + "pin_timeout": "2m0s", + "unpin_timeout": "3h0m0s", + "repogc_timeout": "24h0m0s", + "informer_trigger_interval": 0 + } + }, + "pin_tracker": { + "stateless": { + "concurrent_pins": 10, + "priority_pin_max_age": "24h0m0s", + "priority_pin_max_retries": 5 + } + }, + "monitor": { + "pubsubmon": { + "check_interval": "15s" + } + }, + "allocator": { + "balanced": { + "allocate_by": [ + "tag:group", + "freespace" + ] + } + }, + "informer": { + "disk": { + "metric_ttl": "30s", + "metric_type": "freespace" + }, + "tags": { + "metric_ttl": "30s", + "tags": { + "group": "default" + } + } + }, + "observations": { + "metrics": { + "enable_stats": false, + "prometheus_endpoint": "/ip4/127.0.0.1/tcp/8888", + "reporting_interval": "2s" + }, + "tracing": { + "enable_tracing": false, + "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831", + "sampling_prob": 0.3, + "service_name": "cluster-daemon" + } + }, + "datastore": { + "leveldb": { + "leveldb_options": { + "block_cache_capacity": 0, + "block_cache_evict_removed": false, + "block_restart_interval": 0, + "block_size": 0, + "compaction_expand_limit_factor": 0, + "compaction_gp_overlaps_factor": 0, + "compaction_l0_trigger": 0, + "compaction_source_limit_factor": 0, + "compaction_table_size": 0, + "compaction_table_size_multiplier": 0, + "compaction_table_size_multiplier_per_level": null, + "compaction_total_size": 0, + "compaction_total_size_multiplier": 0, + "compaction_total_size_multiplier_per_level": null, + "compression": 0, + "disable_buffer_pool": false, + "disable_block_cache": false, + "disable_compaction_backoff": false, + "disable_large_batch_transaction": false, + "iterator_sampling_rate": 0, + "no_sync": false, + "no_write_merge": false, + "open_files_cache_capacity": 0, + "read_only": false, + "strict": 0, + "write_buffer": 0, + "write_l0_pause_trigger": 0, + "write_l0_slowdown_trigger": 0 + } + } + } + } diff --git a/packages/client-node/config/ipfs-cluster3/identity.json b/packages/client-node/config/ipfs-cluster3/identity.json new file mode 100644 index 00000000..2377db52 --- /dev/null +++ b/packages/client-node/config/ipfs-cluster3/identity.json @@ -0,0 +1,4 @@ +{ + "id": "12D3KooWEtFzvJiyfTCA6KNbM9gRrZ2vw5AheWbd36YmiVUr3Fpq", + "private_key": "CAESQHp9Oz0VWrs3Y/h/3vj45IXJWK67Y2itt/xL25ZOQy6dS0nIONpDDjWgwfMnqEs6qbR/fkbQ1Kpn6xX9FgKeMo4=" +} \ No newline at end of file diff --git a/packages/client-node/config/ipfs-cluster3/service.json b/packages/client-node/config/ipfs-cluster3/service.json new file mode 100644 index 00000000..e3e5fee4 --- /dev/null +++ b/packages/client-node/config/ipfs-cluster3/service.json @@ -0,0 +1,170 @@ +{ + "cluster": { + "peername": "node03", + "secret": "9100179336d42cbed9c24ab8498028b64898879e6a5fb7876022090a134f6b8f", + "leave_on_shutdown": false, + "listen_multiaddress": [ + "/ip4/0.0.0.0/tcp/9096", + "/ip4/0.0.0.0/udp/9096/quic" + ], + "enable_relay_hop": true, + "connection_manager": { + "high_water": 400, + "low_water": 100, + "grace_period": "2m0s" + }, + "dial_peer_timeout": "3s", + "state_sync_interval": "5m0s", + "pin_recover_interval": "12m0s", + "replication_factor_min": -1, + "replication_factor_max": -1, + "monitor_ping_interval": "2s", + "peer_watch_interval": "5s", + "mdns_interval": "0", + "disable_repinning": false, + "peer_addresses": [ + "/dns4/client-node_ipfs-cluster1_1/tcp/9096/p2p/12D3KooWHpQ7R7EHsm5KrnPfbEvYAp9C4AD9J42EosATYtEbGzMw", + "/dns4/client-node_ipfs-cluster2_1/tcp/9096/p2p/12D3KooWGy66BfypN8Q1nGKvH92eAjYcx7ryvyhJoLHF8gHA7AGw"] + }, + "consensus": { + "crdt": { + "cluster_name": "ipfs-cluster", + "trusted_peers": [ + "*" + ], + "batching": { + "max_batch_size": 0, + "max_batch_age": "0s" + }, + "repair_interval": "1h0m0s" + } + }, + "api": { + "ipfsproxy": { + "listen_multiaddress": "/ip4/127.0.0.1/tcp/9095", + "node_multiaddress": "/ip4/127.0.0.1/tcp/5001", + "log_file": "", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "1m0s", + "max_header_bytes": 4096 + }, + "restapi": { + "http_listen_multiaddress": "/ip4/0.0.0.0/tcp/9094", + "read_timeout": "0s", + "read_header_timeout": "5s", + "write_timeout": "0s", + "idle_timeout": "2m0s", + "max_header_bytes": 4096, + "basic_auth_credentials": null, + "http_log_file": "", + "headers": {}, + "cors_allowed_origins": [ + "*" + ], + "cors_allowed_methods": [ + "GET" + ], + "cors_allowed_headers": [], + "cors_exposed_headers": [ + "Content-Type", + "X-Stream-Output", + "X-Chunked-Output", + "X-Content-Length" + ], + "cors_allow_credentials": true, + "cors_max_age": "0s" + } + }, + "ipfs_connector": { + "ipfshttp": { + "node_multiaddress": "/dns4/client-node_ipfs3_1/tcp/5001", + "connect_swarms_delay": "30s", + "ipfs_request_timeout": "5m0s", + "pin_timeout": "2m0s", + "unpin_timeout": "3h0m0s", + "repogc_timeout": "24h0m0s", + "informer_trigger_interval": 0 + } + }, + "pin_tracker": { + "stateless": { + "concurrent_pins": 10, + "priority_pin_max_age": "24h0m0s", + "priority_pin_max_retries": 5 + } + }, + "monitor": { + "pubsubmon": { + "check_interval": "15s" + } + }, + "allocator": { + "balanced": { + "allocate_by": [ + "tag:group", + "freespace" + ] + } + }, + "informer": { + "disk": { + "metric_ttl": "30s", + "metric_type": "freespace" + }, + "tags": { + "metric_ttl": "30s", + "tags": { + "group": "default" + } + } + }, + "observations": { + "metrics": { + "enable_stats": false, + "prometheus_endpoint": "/ip4/127.0.0.1/tcp/8888", + "reporting_interval": "2s" + }, + "tracing": { + "enable_tracing": false, + "jaeger_agent_endpoint": "/ip4/0.0.0.0/udp/6831", + "sampling_prob": 0.3, + "service_name": "cluster-daemon" + } + }, + "datastore": { + "leveldb": { + "leveldb_options": { + "block_cache_capacity": 0, + "block_cache_evict_removed": false, + "block_restart_interval": 0, + "block_size": 0, + "compaction_expand_limit_factor": 0, + "compaction_gp_overlaps_factor": 0, + "compaction_l0_trigger": 0, + "compaction_source_limit_factor": 0, + "compaction_table_size": 0, + "compaction_table_size_multiplier": 0, + "compaction_table_size_multiplier_per_level": null, + "compaction_total_size": 0, + "compaction_total_size_multiplier": 0, + "compaction_total_size_multiplier_per_level": null, + "compression": 0, + "disable_buffer_pool": false, + "disable_block_cache": false, + "disable_compaction_backoff": false, + "disable_large_batch_transaction": false, + "iterator_sampling_rate": 0, + "no_sync": false, + "no_write_merge": false, + "open_files_cache_capacity": 0, + "read_only": false, + "strict": 0, + "write_buffer": 0, + "write_l0_pause_trigger": 0, + "write_l0_slowdown_trigger": 0 + } + } + } +} diff --git a/packages/client-node/config/ipfs1/config b/packages/client-node/config/ipfs1/config new file mode 100644 index 00000000..d4e772d0 --- /dev/null +++ b/packages/client-node/config/ipfs1/config @@ -0,0 +1,153 @@ +{ + "API": { + "HTTPHeaders": {} + }, + "Addresses": { + "API": "/ip4/0.0.0.0/tcp/5001", + "Announce": [], + "AppendAnnounce": [], + "Gateway": "/ip4/0.0.0.0/tcp/8080", + "NoAnnounce": [], + "Swarm": [ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001", + "/ip4/0.0.0.0/udp/4001/quic", + "/ip6/::/udp/4001/quic" + ] + }, + "AutoNAT": {}, + "Bootstrap": [], + "DNS": { + "Resolvers": {} + }, + "Datastore": { + "BloomFilterSize": 0, + "GCPeriod": "1h", + "HashOnRead": false, + "Spec": { + "mounts": [ + { + "child": { + "path": "blocks", + "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2", + "sync": true, + "type": "flatfs" + }, + "mountpoint": "/blocks", + "prefix": "flatfs.datastore", + "type": "measure" + }, + { + "child": { + "compression": "none", + "path": "datastore", + "type": "levelds" + }, + "mountpoint": "/", + "prefix": "leveldb.datastore", + "type": "measure" + } + ], + "type": "mount" + }, + "StorageGCWatermark": 90, + "StorageMax": "10GB" + }, + "Discovery": { + "MDNS": { + "Enabled": true, + "Interval": 10 + } + }, + "Experimental": { + "AcceleratedDHTClient": false, + "FilestoreEnabled": false, + "GraphsyncEnabled": false, + "Libp2pStreamMounting": false, + "P2pHttpProxy": false, + "StrategicProviding": false, + "UrlstoreEnabled": false + }, + "Gateway": { + "APICommands": [], + "HTTPHeaders": { + "Access-Control-Allow-Headers": [ + "X-Requested-With", + "Range", + "User-Agent" + ], + "Access-Control-Allow-Methods": [ + "GET" + ], + "Access-Control-Allow-Origin": [ + "*" + ] + }, + "NoDNSLink": false, + "NoFetch": false, + "PathPrefixes": [], + "PublicGateways": null, + "RootRedirect": "", + "Writable": false + }, + "Identity": { + "PeerID": "12D3KooWE6cKjo2QTQqFNJFG7ymfndXrY3vZa7kaMgGHPDKmdP9F", + "PrivKey": "CAESQDXX+s+EOczrInLDWnapNt0Gi7Y8quRYrzELjkgN3ePKP5gLvEjqSyfgRKw0k6PejNb0rl8Tpy5IqvxMsoNriJY=" + }, + "Internal": {}, + "Ipns": { + "RecordLifetime": "", + "RepublishPeriod": "", + "ResolveCacheSize": 128 + }, + "Migration": { + "DownloadSources": [], + "Keep": "" + }, + "Mounts": { + "FuseAllowOther": false, + "IPFS": "/ipfs", + "IPNS": "/ipns" + }, + "Peering": { + "Peers": null + }, + "Pinning": { + "RemoteServices": {} + }, + "Plugins": { + "Plugins": null + }, + "Provider": { + "Strategy": "" + }, + "Pubsub": { + "DisableSigning": false, + "Router": "" + }, + "Reprovider": { + "Interval": "12h", + "Strategy": "all" + }, + "Routing": { + "Type": "dht" + }, + "Swarm": { + "AddrFilters": null, + "ConnMgr": { + "GracePeriod": "20s", + "HighWater": 900, + "LowWater": 600, + "Type": "basic" + }, + "DisableBandwidthMetrics": false, + "DisableNatPortMap": false, + "RelayClient": {}, + "RelayService": {}, + "Transports": { + "Multiplexers": {}, + "Network": {}, + "Security": {} + } + } +} \ No newline at end of file diff --git a/packages/client-node/config/ipfs1/datastore_spec b/packages/client-node/config/ipfs1/datastore_spec new file mode 100644 index 00000000..7bf9626c --- /dev/null +++ b/packages/client-node/config/ipfs1/datastore_spec @@ -0,0 +1 @@ +{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"} \ No newline at end of file diff --git a/packages/client-node/config/ipfs1/swarm.key b/packages/client-node/config/ipfs1/swarm.key new file mode 100644 index 00000000..2e3e6891 --- /dev/null +++ b/packages/client-node/config/ipfs1/swarm.key @@ -0,0 +1,3 @@ +/key/swarm/psk/1.0.0/ +/base16/ +ed4e9d8858ee6cd48cd9f0796eab2bc38bba102b288f263d4ed8bca7a184b4be diff --git a/packages/client-node/config/ipfs1/version b/packages/client-node/config/ipfs1/version new file mode 100644 index 00000000..3cacc0b9 --- /dev/null +++ b/packages/client-node/config/ipfs1/version @@ -0,0 +1 @@ +12 \ No newline at end of file diff --git a/packages/client-node/config/ipfs2/config b/packages/client-node/config/ipfs2/config new file mode 100644 index 00000000..02c87e96 --- /dev/null +++ b/packages/client-node/config/ipfs2/config @@ -0,0 +1,153 @@ +{ + "API": { + "HTTPHeaders": {} + }, + "Addresses": { + "API": "/ip4/0.0.0.0/tcp/5001", + "Announce": [], + "AppendAnnounce": [], + "Gateway": "/ip4/0.0.0.0/tcp/8080", + "NoAnnounce": [], + "Swarm": [ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001", + "/ip4/0.0.0.0/udp/4001/quic", + "/ip6/::/udp/4001/quic" + ] + }, + "AutoNAT": {}, + "Bootstrap": ["/dns4/logion-test_ipfs1_1/tcp/4001/p2p/12D3KooWE6cKjo2QTQqFNJFG7ymfndXrY3vZa7kaMgGHPDKmdP9F"], + "DNS": { + "Resolvers": {} + }, + "Datastore": { + "BloomFilterSize": 0, + "GCPeriod": "1h", + "HashOnRead": false, + "Spec": { + "mounts": [ + { + "child": { + "path": "blocks", + "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2", + "sync": true, + "type": "flatfs" + }, + "mountpoint": "/blocks", + "prefix": "flatfs.datastore", + "type": "measure" + }, + { + "child": { + "compression": "none", + "path": "datastore", + "type": "levelds" + }, + "mountpoint": "/", + "prefix": "leveldb.datastore", + "type": "measure" + } + ], + "type": "mount" + }, + "StorageGCWatermark": 90, + "StorageMax": "10GB" + }, + "Discovery": { + "MDNS": { + "Enabled": true, + "Interval": 10 + } + }, + "Experimental": { + "AcceleratedDHTClient": false, + "FilestoreEnabled": false, + "GraphsyncEnabled": false, + "Libp2pStreamMounting": false, + "P2pHttpProxy": false, + "StrategicProviding": false, + "UrlstoreEnabled": false + }, + "Gateway": { + "APICommands": [], + "HTTPHeaders": { + "Access-Control-Allow-Headers": [ + "X-Requested-With", + "Range", + "User-Agent" + ], + "Access-Control-Allow-Methods": [ + "GET" + ], + "Access-Control-Allow-Origin": [ + "*" + ] + }, + "NoDNSLink": false, + "NoFetch": false, + "PathPrefixes": [], + "PublicGateways": null, + "RootRedirect": "", + "Writable": false + }, + "Identity": { + "PeerID": "12D3KooWJL1BQbW7zyQaLWwTA7mVGcWGzNqy1byMmoKCyULuQPqR", + "PrivKey": "CAESQL6BGUBwCtCh3AgJdIaKnJNdeOEIMKpj7XG777kDJTJRfnUwFgNirGrAyqGjAnBEQ59KsMoyBWDmeSOTX62Fs4g=" + }, + "Internal": {}, + "Ipns": { + "RecordLifetime": "", + "RepublishPeriod": "", + "ResolveCacheSize": 128 + }, + "Migration": { + "DownloadSources": [], + "Keep": "" + }, + "Mounts": { + "FuseAllowOther": false, + "IPFS": "/ipfs", + "IPNS": "/ipns" + }, + "Peering": { + "Peers": null + }, + "Pinning": { + "RemoteServices": {} + }, + "Plugins": { + "Plugins": null + }, + "Provider": { + "Strategy": "" + }, + "Pubsub": { + "DisableSigning": false, + "Router": "" + }, + "Reprovider": { + "Interval": "12h", + "Strategy": "all" + }, + "Routing": { + "Type": "dht" + }, + "Swarm": { + "AddrFilters": null, + "ConnMgr": { + "GracePeriod": "20s", + "HighWater": 900, + "LowWater": 600, + "Type": "basic" + }, + "DisableBandwidthMetrics": false, + "DisableNatPortMap": false, + "RelayClient": {}, + "RelayService": {}, + "Transports": { + "Multiplexers": {}, + "Network": {}, + "Security": {} + } + } +} \ No newline at end of file diff --git a/packages/client-node/config/ipfs2/datastore_spec b/packages/client-node/config/ipfs2/datastore_spec new file mode 100644 index 00000000..7bf9626c --- /dev/null +++ b/packages/client-node/config/ipfs2/datastore_spec @@ -0,0 +1 @@ +{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"} \ No newline at end of file diff --git a/packages/client-node/config/ipfs2/swarm.key b/packages/client-node/config/ipfs2/swarm.key new file mode 100644 index 00000000..2e3e6891 --- /dev/null +++ b/packages/client-node/config/ipfs2/swarm.key @@ -0,0 +1,3 @@ +/key/swarm/psk/1.0.0/ +/base16/ +ed4e9d8858ee6cd48cd9f0796eab2bc38bba102b288f263d4ed8bca7a184b4be diff --git a/packages/client-node/config/ipfs2/version b/packages/client-node/config/ipfs2/version new file mode 100644 index 00000000..3cacc0b9 --- /dev/null +++ b/packages/client-node/config/ipfs2/version @@ -0,0 +1 @@ +12 \ No newline at end of file diff --git a/packages/client-node/config/ipfs3/config b/packages/client-node/config/ipfs3/config new file mode 100644 index 00000000..e86ccd78 --- /dev/null +++ b/packages/client-node/config/ipfs3/config @@ -0,0 +1,153 @@ +{ + "API": { + "HTTPHeaders": {} + }, + "Addresses": { + "API": "/ip4/0.0.0.0/tcp/5001", + "Announce": [], + "AppendAnnounce": [], + "Gateway": "/ip4/0.0.0.0/tcp/8080", + "NoAnnounce": [], + "Swarm": [ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001", + "/ip4/0.0.0.0/udp/4001/quic", + "/ip6/::/udp/4001/quic" + ] + }, + "AutoNAT": {}, + "Bootstrap": ["/dns4/logion-test_ipfs1_1/tcp/4001/p2p/12D3KooWE6cKjo2QTQqFNJFG7ymfndXrY3vZa7kaMgGHPDKmdP9F"], + "DNS": { + "Resolvers": {} + }, + "Datastore": { + "BloomFilterSize": 0, + "GCPeriod": "1h", + "HashOnRead": false, + "Spec": { + "mounts": [ + { + "child": { + "path": "blocks", + "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2", + "sync": true, + "type": "flatfs" + }, + "mountpoint": "/blocks", + "prefix": "flatfs.datastore", + "type": "measure" + }, + { + "child": { + "compression": "none", + "path": "datastore", + "type": "levelds" + }, + "mountpoint": "/", + "prefix": "leveldb.datastore", + "type": "measure" + } + ], + "type": "mount" + }, + "StorageGCWatermark": 90, + "StorageMax": "10GB" + }, + "Discovery": { + "MDNS": { + "Enabled": true, + "Interval": 10 + } + }, + "Experimental": { + "AcceleratedDHTClient": false, + "FilestoreEnabled": false, + "GraphsyncEnabled": false, + "Libp2pStreamMounting": false, + "P2pHttpProxy": false, + "StrategicProviding": false, + "UrlstoreEnabled": false + }, + "Gateway": { + "APICommands": [], + "HTTPHeaders": { + "Access-Control-Allow-Headers": [ + "X-Requested-With", + "Range", + "User-Agent" + ], + "Access-Control-Allow-Methods": [ + "GET" + ], + "Access-Control-Allow-Origin": [ + "*" + ] + }, + "NoDNSLink": false, + "NoFetch": false, + "PathPrefixes": [], + "PublicGateways": null, + "RootRedirect": "", + "Writable": false + }, + "Identity": { + "PeerID": "12D3KooWJ8tudqDw9sosfBbrA5B2S4eR9ivfa4xdmcH4w4hedmPp", + "PrivKey": "CAESQFwS6MsrGYVNhoIdjwfZJqI7JhHYNfuJYkEsecxBuDGpe5y1DgaRL6n1bYdOck8BJ5anxi4C/00awYGl7g4b8gs=" + }, + "Internal": {}, + "Ipns": { + "RecordLifetime": "", + "RepublishPeriod": "", + "ResolveCacheSize": 128 + }, + "Migration": { + "DownloadSources": [], + "Keep": "" + }, + "Mounts": { + "FuseAllowOther": false, + "IPFS": "/ipfs", + "IPNS": "/ipns" + }, + "Peering": { + "Peers": null + }, + "Pinning": { + "RemoteServices": {} + }, + "Plugins": { + "Plugins": null + }, + "Provider": { + "Strategy": "" + }, + "Pubsub": { + "DisableSigning": false, + "Router": "" + }, + "Reprovider": { + "Interval": "12h", + "Strategy": "all" + }, + "Routing": { + "Type": "dht" + }, + "Swarm": { + "AddrFilters": null, + "ConnMgr": { + "GracePeriod": "20s", + "HighWater": 900, + "LowWater": 600, + "Type": "basic" + }, + "DisableBandwidthMetrics": false, + "DisableNatPortMap": false, + "RelayClient": {}, + "RelayService": {}, + "Transports": { + "Multiplexers": {}, + "Network": {}, + "Security": {} + } + } +} diff --git a/packages/client-node/config/ipfs3/datastore_spec b/packages/client-node/config/ipfs3/datastore_spec new file mode 100644 index 00000000..7bf9626c --- /dev/null +++ b/packages/client-node/config/ipfs3/datastore_spec @@ -0,0 +1 @@ +{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"} \ No newline at end of file diff --git a/packages/client-node/config/ipfs3/swarm.key b/packages/client-node/config/ipfs3/swarm.key new file mode 100644 index 00000000..2e3e6891 --- /dev/null +++ b/packages/client-node/config/ipfs3/swarm.key @@ -0,0 +1,3 @@ +/key/swarm/psk/1.0.0/ +/base16/ +ed4e9d8858ee6cd48cd9f0796eab2bc38bba102b288f263d4ed8bca7a184b4be diff --git a/packages/client-node/config/ipfs3/version b/packages/client-node/config/ipfs3/version new file mode 100644 index 00000000..3cacc0b9 --- /dev/null +++ b/packages/client-node/config/ipfs3/version @@ -0,0 +1 @@ +12 \ No newline at end of file diff --git a/packages/client-node/integration/Loc.ts b/packages/client-node/integration/Loc.ts index f97b7a1c..ac50c185 100644 --- a/packages/client-node/integration/Loc.ts +++ b/packages/client-node/integration/Loc.ts @@ -248,13 +248,13 @@ export async function openTransactionLocWithAutoPublish(state: State, linkTarget draftRequest = await draftRequest.addFile({ fileName: "test.txt", nature: "Some file nature", - file: HashOrContent.fromContent(new NodeFile("test0.txt")), + file: HashOrContent.fromContent(new NodeFile("integration/test0.txt")), }) as DraftRequest; const hash0 = draftRequest.data().files[0].hash; draftRequest = await draftRequest.addFile({ fileName: "test.txt", nature: "Some file nature", - file: HashOrContent.fromContent(new NodeFile("test123.txt")), + file: HashOrContent.fromContent(new NodeFile("integration/test123.txt")), }) as DraftRequest; const hash1 = draftRequest.data().files[1].hash; diff --git a/packages/client/src/LocClient.ts b/packages/client/src/LocClient.ts index c6929c1a..2b64aac2 100644 --- a/packages/client/src/LocClient.ts +++ b/packages/client/src/LocClient.ts @@ -2051,6 +2051,8 @@ export class AuthenticatedLocClient extends LocClient { private openCollectionLocSubmittable(parameters: { valueFee: bigint } & OpenPolkadotLocParams & EstimateFeesOpenCollectionLocParams): SubmittableExtrinsic { const { locId, legalOfficerAddress, metadata, files, links } = parameters + const collectionItemFee = 0; // TODO pass user-supplied value + const tokensRecordFee = 0; // TODO pass user-supplied value return this.nodeApi.polkadot.tx.logionLoc.createCollectionLoc( this.nodeApi.adapters.toLocId(locId), legalOfficerAddress, @@ -2059,6 +2061,8 @@ export class AuthenticatedLocClient extends LocClient { parameters.collectionCanUpload, parameters.valueFee, parameters.legalFee === undefined ? null : parameters.legalFee, + collectionItemFee, + tokensRecordFee, this.nodeApi.adapters.toPalletLogionLocItemsParams({ metadata: metadata.map(item => this.toMetadataItemParams(item)), files: files.map(item => this.toFileParams(item)), diff --git a/packages/node-api/integration/CollectionLoc.ts b/packages/node-api/integration/CollectionLoc.ts index 2291f32b..71c4c5aa 100644 --- a/packages/node-api/integration/CollectionLoc.ts +++ b/packages/node-api/integration/CollectionLoc.ts @@ -11,6 +11,8 @@ export async function createCollectionLocLimitedInSizeTest() { false, 0, null, + 0, + 0, api.adapters.emptyPalletLogionLocItemsParams(), ); await signAndSend(requester, createExtrinsic); @@ -36,7 +38,7 @@ export async function closeCollectionLocTest() { export async function addCollectionItemTest() { const { api, requester } = await setup(); - + const item1Id = Hash.fromHex("0x5b2ef8140cfcf72237f2182b9f5eb05eb643a26f9a823e5e804d5543976a4fb9"); const addItem1Extrinsic = api.polkadot.tx.logionLoc.addCollectionItem( api.adapters.toLocId(COLLECTION_LOC_ID), diff --git a/packages/node-api/integration/VerifiedIssuers.ts b/packages/node-api/integration/VerifiedIssuers.ts index ce7d671b..89374c79 100644 --- a/packages/node-api/integration/VerifiedIssuers.ts +++ b/packages/node-api/integration/VerifiedIssuers.ts @@ -34,6 +34,8 @@ export async function verifiedIssuers() { true, 0, null, + 0, + 0, api.adapters.emptyPalletLogionLocItemsParams(), ), ); diff --git a/packages/node-api/src/interfaces/augment-api-events.ts b/packages/node-api/src/interfaces/augment-api-events.ts index b52e06cb..93f8b329 100644 --- a/packages/node-api/src/interfaces/augment-api-events.ts +++ b/packages/node-api/src/interfaces/augment-api-events.ts @@ -252,6 +252,10 @@ declare module '@polkadot/api-base/types/events' { * Issued when Certificate Fee is withdrawn. [payerAccountId, fee] **/ CertificateFeeWithdrawn: AugmentedEvent; + /** + * Issued when Collection Item Fee is withdrawn. [payerAccountId, fee, beneficiary, amountReceived] + **/ + CollectionItemFeeWithdrawn: AugmentedEvent; /** * Issued when an item was added to a collection. [locId, collectionItemId] **/ @@ -284,6 +288,10 @@ declare module '@polkadot/api-base/types/events' { * Issued when File Storage Fee is withdrawn. [payerAccountId, storageFee] **/ StorageFeeWithdrawn: AugmentedEvent; + /** + * Issued when Token Record Fee is withdrawn. [payerAccountId, fee, beneficiary, amountReceived] + **/ + TokensRecordFeeWithdrawn: AugmentedEvent; /** * Issued when Value Fee is withdrawn. [payerAccountId, storageFee] **/ diff --git a/packages/node-api/src/interfaces/augment-api-tx.ts b/packages/node-api/src/interfaces/augment-api-tx.ts index eef0fdd7..813664a9 100644 --- a/packages/node-api/src/interfaces/augment-api-tx.ts +++ b/packages/node-api/src/interfaces/augment-api-tx.ts @@ -270,7 +270,7 @@ declare module '@polkadot/api-base/types/submittable' { /** * See [`Pallet::create_collection_loc`]. **/ - createCollectionLoc: AugmentedSubmittable<(locId: Compact | AnyNumber | Uint8Array, legalOfficer: AccountId32 | string | Uint8Array, collectionLastBlockSubmission: Option | null | Uint8Array | u32 | AnyNumber, collectionMaxSize: Option | null | Uint8Array | u32 | AnyNumber, collectionCanUpload: bool | boolean | Uint8Array, valueFee: u128 | AnyNumber | Uint8Array, legalFee: Option | null | Uint8Array | u128 | AnyNumber, items: PalletLogionLocItemsParams | { metadata?: any; files?: any; links?: any } | string | Uint8Array) => SubmittableExtrinsic, [Compact, AccountId32, Option, Option, bool, u128, Option, PalletLogionLocItemsParams]>; + createCollectionLoc: AugmentedSubmittable<(locId: Compact | AnyNumber | Uint8Array, legalOfficer: AccountId32 | string | Uint8Array, collectionLastBlockSubmission: Option | null | Uint8Array | u32 | AnyNumber, collectionMaxSize: Option | null | Uint8Array | u32 | AnyNumber, collectionCanUpload: bool | boolean | Uint8Array, valueFee: u128 | AnyNumber | Uint8Array, legalFee: Option | null | Uint8Array | u128 | AnyNumber, collectionItemFee: u128 | AnyNumber | Uint8Array, tokensRecordFee: u128 | AnyNumber | Uint8Array, items: PalletLogionLocItemsParams | { metadata?: any; files?: any; links?: any } | string | Uint8Array) => SubmittableExtrinsic, [Compact, AccountId32, Option, Option, bool, u128, Option, u128, u128, PalletLogionLocItemsParams]>; /** * See [`Pallet::create_logion_identity_loc`]. **/ diff --git a/packages/node-api/src/interfaces/default/definitions.ts b/packages/node-api/src/interfaces/default/definitions.ts index 1e0aba0c..e2435d28 100644 --- a/packages/node-api/src/interfaces/default/definitions.ts +++ b/packages/node-api/src/interfaces/default/definitions.ts @@ -49,6 +49,8 @@ export default { sponsorship_id: "Option", value_fee: "Balance", legal_fee: "Option", + collection_item_fee: "Balance", + tokens_record_fee: "Balance", }, MetadataItemParams: { name: "Hash", diff --git a/packages/node-api/src/interfaces/default/types.ts b/packages/node-api/src/interfaces/default/types.ts index fbaedc58..11b2ad30 100644 --- a/packages/node-api/src/interfaces/default/types.ts +++ b/packages/node-api/src/interfaces/default/types.ts @@ -132,6 +132,8 @@ export interface LegalOfficerCaseOf extends Struct { readonly sponsorship_id: Option; readonly value_fee: Balance; readonly legal_fee: Option; + readonly collection_item_fee: Balance; + readonly tokens_record_fee: Balance; } /** @name LegalOfficerCaseSummary */ @@ -274,7 +276,8 @@ export interface StorageVersion extends Enum { readonly isV19AcknowledgeItemsByIssuer: boolean; readonly isV20AddCustomLegalFee: boolean; readonly isV21EnableRequesterLinks: boolean; - readonly type: 'V1' | 'V2MakeLocVoid' | 'V3RequesterEnum' | 'V4ItemSubmitter' | 'V5Collection' | 'V6ItemUpload' | 'V7ItemToken' | 'V8AddSeal' | 'V9TermsAndConditions' | 'V10AddLocFileSize' | 'V11EnableEthereumSubmitter' | 'V12Sponsorship' | 'V13AcknowledgeItems' | 'V14HashLocPublicData' | 'V15AddTokenIssuance' | 'V16MoveTokenIssuance' | 'V17HashItemRecordPublicData' | 'V18AddValueFee' | 'V19AcknowledgeItemsByIssuer' | 'V20AddCustomLegalFee' | 'V21EnableRequesterLinks'; + readonly isV22AddRecurrentFees: boolean; + readonly type: 'V1' | 'V2MakeLocVoid' | 'V3RequesterEnum' | 'V4ItemSubmitter' | 'V5Collection' | 'V6ItemUpload' | 'V7ItemToken' | 'V8AddSeal' | 'V9TermsAndConditions' | 'V10AddLocFileSize' | 'V11EnableEthereumSubmitter' | 'V12Sponsorship' | 'V13AcknowledgeItems' | 'V14HashLocPublicData' | 'V15AddTokenIssuance' | 'V16MoveTokenIssuance' | 'V17HashItemRecordPublicData' | 'V18AddValueFee' | 'V19AcknowledgeItemsByIssuer' | 'V20AddCustomLegalFee' | 'V21EnableRequesterLinks' | 'V22AddRecurrentFees'; } /** @name SupportedAccountId */ diff --git a/packages/node-api/src/interfaces/lookup.ts b/packages/node-api/src/interfaces/lookup.ts index 6aba12d1..9a6be8ac 100644 --- a/packages/node-api/src/interfaces/lookup.ts +++ b/packages/node-api/src/interfaces/lookup.ts @@ -575,7 +575,9 @@ export default { SponsorshipWithdrawn: '(u128,AccountId32,PalletLogionLocSupportedAccountId)', LegalFeeWithdrawn: '(AccountId32,LogionSharedBeneficiary,u128)', CertificateFeeWithdrawn: '(AccountId32,u128)', - ValueFeeWithdrawn: '(AccountId32,u128)' + ValueFeeWithdrawn: '(AccountId32,u128)', + CollectionItemFeeWithdrawn: '(AccountId32,u128,LogionSharedBeneficiary,u128)', + TokensRecordFeeWithdrawn: '(AccountId32,u128,LogionSharedBeneficiary,u128)' } }, /** @@ -601,7 +603,7 @@ export default { **/ LogionSharedBeneficiary: { _enum: { - Treasury: 'Null', + Other: 'Null', LegalOfficer: 'AccountId32' } }, @@ -1412,6 +1414,8 @@ export default { collectionCanUpload: 'bool', valueFee: 'u128', legalFee: 'Option', + collectionItemFee: 'u128', + tokensRecordFee: 'u128', items: 'PalletLogionLocItemsParams', }, add_metadata: { @@ -1797,7 +1801,9 @@ export default { seal: 'Option', sponsorshipId: 'Option', valueFee: 'u128', - legalFee: 'Option' + legalFee: 'Option', + collectionItemFee: 'u128', + tokensRecordFee: 'u128' }, /** * Lookup208: pallet_logion_loc::Requester @@ -1894,7 +1900,7 @@ export default { * Lookup227: pallet_logion_loc::pallet::StorageVersion **/ PalletLogionLocStorageVersion: { - _enum: ['V1', 'V2MakeLocVoid', 'V3RequesterEnum', 'V4ItemSubmitter', 'V5Collection', 'V6ItemUpload', 'V7ItemToken', 'V8AddSeal', 'V9TermsAndConditions', 'V10AddLocFileSize', 'V11EnableEthereumSubmitter', 'V12Sponsorship', 'V13AcknowledgeItems', 'V14HashLocPublicData', 'V15AddTokenIssuance', 'V16MoveTokenIssuance', 'V17HashItemRecordPublicData', 'V18AddValueFee', 'V19AcknowledgeItemsByIssuer', 'V20AddCustomLegalFee', 'V21EnableRequesterLinks'] + _enum: ['V1', 'V2MakeLocVoid', 'V3RequesterEnum', 'V4ItemSubmitter', 'V5Collection', 'V6ItemUpload', 'V7ItemToken', 'V8AddSeal', 'V9TermsAndConditions', 'V10AddLocFileSize', 'V11EnableEthereumSubmitter', 'V12Sponsorship', 'V13AcknowledgeItems', 'V14HashLocPublicData', 'V15AddTokenIssuance', 'V16MoveTokenIssuance', 'V17HashItemRecordPublicData', 'V18AddValueFee', 'V19AcknowledgeItemsByIssuer', 'V20AddCustomLegalFee', 'V21EnableRequesterLinks', 'V22AddRecurrentFees'] }, /** * Lookup228: pallet_logion_loc::pallet::Error diff --git a/packages/node-api/src/interfaces/types-lookup.ts b/packages/node-api/src/interfaces/types-lookup.ts index b78a0718..7df96b78 100644 --- a/packages/node-api/src/interfaces/types-lookup.ts +++ b/packages/node-api/src/interfaces/types-lookup.ts @@ -649,7 +649,11 @@ declare module '@polkadot/types/lookup' { readonly asCertificateFeeWithdrawn: ITuple<[AccountId32, u128]>; readonly isValueFeeWithdrawn: boolean; readonly asValueFeeWithdrawn: ITuple<[AccountId32, u128]>; - readonly type: 'LocCreated' | 'LocClosed' | 'LocVoid' | 'ItemAdded' | 'StorageFeeWithdrawn' | 'SponsorshipCreated' | 'SponsorshipWithdrawn' | 'LegalFeeWithdrawn' | 'CertificateFeeWithdrawn' | 'ValueFeeWithdrawn'; + readonly isCollectionItemFeeWithdrawn: boolean; + readonly asCollectionItemFeeWithdrawn: ITuple<[AccountId32, u128, LogionSharedBeneficiary, u128]>; + readonly isTokensRecordFeeWithdrawn: boolean; + readonly asTokensRecordFeeWithdrawn: ITuple<[AccountId32, u128, LogionSharedBeneficiary, u128]>; + readonly type: 'LocCreated' | 'LocClosed' | 'LocVoid' | 'ItemAdded' | 'StorageFeeWithdrawn' | 'SponsorshipCreated' | 'SponsorshipWithdrawn' | 'LegalFeeWithdrawn' | 'CertificateFeeWithdrawn' | 'ValueFeeWithdrawn' | 'CollectionItemFeeWithdrawn' | 'TokensRecordFeeWithdrawn'; } /** @name PalletLogionLocSupportedAccountId (56) */ @@ -671,10 +675,10 @@ declare module '@polkadot/types/lookup' { /** @name LogionSharedBeneficiary (60) */ interface LogionSharedBeneficiary extends Enum { - readonly isTreasury: boolean; + readonly isOther: boolean; readonly isLegalOfficer: boolean; readonly asLegalOfficer: AccountId32; - readonly type: 'Treasury' | 'LegalOfficer'; + readonly type: 'Other' | 'LegalOfficer'; } /** @name PalletVerifiedRecoveryEvent (61) */ @@ -1545,6 +1549,8 @@ declare module '@polkadot/types/lookup' { readonly collectionCanUpload: bool; readonly valueFee: u128; readonly legalFee: Option; + readonly collectionItemFee: u128; + readonly tokensRecordFee: u128; readonly items: PalletLogionLocItemsParams; } & Struct; readonly isAddMetadata: boolean; @@ -1985,6 +1991,8 @@ declare module '@polkadot/types/lookup' { readonly sponsorshipId: Option; readonly valueFee: u128; readonly legalFee: Option; + readonly collectionItemFee: u128; + readonly tokensRecordFee: u128; } /** @name PalletLogionLocRequester (208) */ @@ -2092,7 +2100,8 @@ declare module '@polkadot/types/lookup' { readonly isV19AcknowledgeItemsByIssuer: boolean; readonly isV20AddCustomLegalFee: boolean; readonly isV21EnableRequesterLinks: boolean; - readonly type: 'V1' | 'V2MakeLocVoid' | 'V3RequesterEnum' | 'V4ItemSubmitter' | 'V5Collection' | 'V6ItemUpload' | 'V7ItemToken' | 'V8AddSeal' | 'V9TermsAndConditions' | 'V10AddLocFileSize' | 'V11EnableEthereumSubmitter' | 'V12Sponsorship' | 'V13AcknowledgeItems' | 'V14HashLocPublicData' | 'V15AddTokenIssuance' | 'V16MoveTokenIssuance' | 'V17HashItemRecordPublicData' | 'V18AddValueFee' | 'V19AcknowledgeItemsByIssuer' | 'V20AddCustomLegalFee' | 'V21EnableRequesterLinks'; + readonly isV22AddRecurrentFees: boolean; + readonly type: 'V1' | 'V2MakeLocVoid' | 'V3RequesterEnum' | 'V4ItemSubmitter' | 'V5Collection' | 'V6ItemUpload' | 'V7ItemToken' | 'V8AddSeal' | 'V9TermsAndConditions' | 'V10AddLocFileSize' | 'V11EnableEthereumSubmitter' | 'V12Sponsorship' | 'V13AcknowledgeItems' | 'V14HashLocPublicData' | 'V15AddTokenIssuance' | 'V16MoveTokenIssuance' | 'V17HashItemRecordPublicData' | 'V18AddValueFee' | 'V19AcknowledgeItemsByIssuer' | 'V20AddCustomLegalFee' | 'V21EnableRequesterLinks' | 'V22AddRecurrentFees'; } /** @name PalletLogionLocError (228) */