From 8efe04878d77e3e6ab9117cdfe417bc11cae8d69 Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:41:07 +0200 Subject: [PATCH 1/7] fix: Update package name after it was updated upstream --- .../sdk-ts/src/client/chain/types/permissions.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/sdk-ts/src/client/chain/types/permissions.ts b/packages/sdk-ts/src/client/chain/types/permissions.ts index d68f6470a..98365bf72 100644 --- a/packages/sdk-ts/src/client/chain/types/permissions.ts +++ b/packages/sdk-ts/src/client/chain/types/permissions.ts @@ -1,5 +1,5 @@ import { - InjectivePermissionsV1Beta1Exchange, + InjectivePermissionsV1Beta1Permissions, InjectivePermissionsV1Beta1Params } from '@injectivelabs/core-proto-ts' @@ -46,10 +46,10 @@ import { Coin } from '@injectivelabs/ts-types' voucher?: Voucher } - export type GrpcPermissionsNamespace = InjectivePermissionsV1Beta1Exchange.Namespace - export type GrpcPermissionsAddressRoles = InjectivePermissionsV1Beta1Exchange.AddressRoles - export type GrpcPermissionsRole = InjectivePermissionsV1Beta1Exchange.Role - export type GrpcPermissionsRoleIDs = InjectivePermissionsV1Beta1Exchange.RoleIDs - export type GrpcPermissionsAddressVoucher = InjectivePermissionsV1Beta1Exchange.AddressVoucher - export type GrpcPermissionVoucher = InjectivePermissionsV1Beta1Exchange.Voucher + export type GrpcPermissionsNamespace = InjectivePermissionsV1Beta1Permissions.Namespace + export type GrpcPermissionsAddressRoles = InjectivePermissionsV1Beta1Permissions.AddressRoles + export type GrpcPermissionsRole = InjectivePermissionsV1Beta1Permissions.Role + export type GrpcPermissionsRoleIDs = InjectivePermissionsV1Beta1Permissions.RoleIDs + export type GrpcPermissionsAddressVoucher = InjectivePermissionsV1Beta1Permissions.AddressVoucher + export type GrpcPermissionVoucher = InjectivePermissionsV1Beta1Permissions.Voucher export type GrpcPermissionsParams = InjectivePermissionsV1Beta1Params.Params From c3e4d4742217637d21bafe8b89a0b922f0ca95d8 Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:50:50 +0200 Subject: [PATCH 2/7] docs: add query docs for permissions module --- .../querying-chain-permissions.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .gitbook/querying/querying-chain/querying-chain-permissions.md diff --git a/.gitbook/querying/querying-chain/querying-chain-permissions.md b/.gitbook/querying/querying-chain/querying-chain-permissions.md new file mode 100644 index 000000000..e945bdc13 --- /dev/null +++ b/.gitbook/querying/querying-chain/querying-chain-permissions.md @@ -0,0 +1,98 @@ +# Permissions + +Example code snippets to query data related to the permissions module on chain. + +### Using gRPC + +#### Fetch all namespaces + +```ts +import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' +import { getNetworkEndpoints, Network } from '@injectivelabs/networks' + +const endpoints = getNetworkEndpoints(Network.Testnet) +const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) + +const allNamespaces = await chainGrpcPermissionsApi.fetchAllNamespaces() + +console.log(allNamespaces) +``` + +#### Fetch a namespace based on the denom + +```ts +import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' +import { getNetworkEndpoints, Network } from '@injectivelabs/networks' + +const endpoints = getNetworkEndpoints(Network.Testnet) +const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) + +const subdenom = 'NINJA' +const includeRoles = true + +const namespace = await chainGrpcPermissionsApi.fetchNamespaceByDenom({ + subdenom, + includeRoles: includeRoles, +}) + +console.log(namespace) +``` + +#### Fetch all roles that are associated to an address based on the denom + +```ts +import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' +import { getNetworkEndpoints, Network } from '@injectivelabs/networks' + +const endpoints = getNetworkEndpoints(Network.Testnet) +const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) + +const injectiveAddress = 'inj...' +const subdenom = 'NINJA' + +const addressRoles = await chainGrpcPermissionsApi.fetchAddressRoles({ + injectiveAddress, + denom: subdenom, +}) + +console.log(addressRoles) +``` + +#### Fetch all addresses that are associated to a given role for a denom + +```ts +import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' +import { getNetworkEndpoints, Network } from '@injectivelabs/networks' + +const endpoints = getNetworkEndpoints(Network.Testnet) +const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) + +const subdenom = 'NINJA' +const role = 'role' + + +const addressesByRole = await chainGrpcPermissionsApi.fetchAddressesByRole({ + subdenom, + role: role, +}) + +console.log(addressesByRole) +``` + +#### Fetch vouchers for a given injective address + +```ts +import { ChainGrpcPermissionsApi } from '@injectivelabs/sdk-ts' +import { getNetworkEndpoints, Network } from '@injectivelabs/networks' + +const endpoints = getNetworkEndpoints(Network.Testnet) +const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) + +const injectiveAddress = 'inj...' + +const vouchers = await chainGrpcPermissionsApi.VouchersForAddress( + injectiveAddress, +) + +console.log(vouchers) +``` From de6335b85b344d8a9284f8083e738a0a8ccfae9f Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:51:11 +0200 Subject: [PATCH 3/7] docs: add permissions messages docs --- .gitbook/core-modules/permissions.md | 246 +++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 .gitbook/core-modules/permissions.md diff --git a/.gitbook/core-modules/permissions.md b/.gitbook/core-modules/permissions.md new file mode 100644 index 000000000..acccaebc4 --- /dev/null +++ b/.gitbook/core-modules/permissions.md @@ -0,0 +1,246 @@ +# Permissions Module + +The Permissions Module facilitates the management of namespaces, roles, and permissions within the Injective ecosystem. This documentation outlines the key message types and their usage for interacting with permissions-related data. + +### Messages + +Let's explore (and provide examples) the Messages that the Permissions module exports and we can use to interact with the Injective chain. + +### `MsgClaimVoucher` + +This message is used to claim a voucher tied to a specific address within a namespace. + +```ts +import { + MsgClaimVoucher, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..."; +const privateKey = "0x..."; +const denom = "inj"; + +const msg = MsgClaimVoucher.fromJSON({ + injectiveAddress, + denom, +}); + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` + +### `MsgCreateNamespace` + +This message is used to creates a new namespace with permissions and roles. + +```ts +import { + MsgCreateNamespace, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..."; +const secondAddress = "inj2....."; +const privateKey = "0x..."; +const denom = "inj"; +const wasmHook = "inj3...."; +const mintsPausedValue = false; +const sendsPausedValue = false; +const burnsPausedValue = false; +const role1 = "Everyone"; +const permissions1 = 1; + +const msg = MsgCreateNamespace.fromJSON({ + injectiveAddress, + namespace: { + denom, + wasmHook, + mintsPausedValue, + sendsPausedValue, + burnsPausedValue, + rolePermissions: { + role: role1, + permissions: permissions1, + }, + addressRoles: { + address: injectiveAddress, + roles: [role1], + }, + }, +}) + + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` + +### `MsgDeleteNamespace` + +This message is used to delete an existing namespace. + +```ts +import { + MsgDeleteNamespace, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..."; +const privateKey = "0x..."; +const denom = "inj"; + +const msg = MsgDeleteNamespace.fromJSON({ + injectiveAddress, + denom +}); + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` + +### `MsgRevokeNamespaceRoles` + +This message is used to revoke roles from specified addresses in a namespace. + +```ts +import { + MsgRevokeNamespaceRoles, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..."; +const privateKey = "0x..."; +const denom = "inj"; +const roles = ["role1","role2"]; + +const msg = MsgRevokeNamespaceRoles.fromJSON({ + injectiveAddress, + denom, + addressRolesToRevoke: { + injectiveAddress, + roles: roles, + }, +}); + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` + +### `MsgUpdateNamespace` + +This message is used to update namespace properties like mints, sends, and burns. + +```ts +import { + MsgUpdateNamespace, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..." +const privateKey = "0x..."; +const denom = "inj"; +const wasmHookValue = "inj2..."; +const mintsPausedValue = false; +const sendsPausedValue = false; +const burnsPausedValue = true; + +const msg = await new MsgUpdateNamespace.fromJSON({ + injectiveAddress, + denom, + wasmHook: { + newValue: wasmHookValue + }, + mintsPaused: { + newValue: mintsPausedValue; + }, + sendsPaused: { + newValue: sendsPausedValue; + }, + burnsPaused: { + newValue: burnsPausedValue; + }, +}); + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` + +### `MsgUpdateNamespaceRoles` + +This message is used to modify the roles and permissions for addresses in a namespace. + +```ts +import { + MsgUpdateNamespaceRoles, + MsgBroadcasterWithPk, +} from "@injectivelabs/sdk-ts"; +import { Network } from "@injectivelabs/networks"; + +const injectiveAddress = "inj1..."; +const privateKey = "0x..."; +const denom = "inj"; +const role = "role1"; +const permissions = 4; + +const msg = MsgUpdateNamespaceRoles.fromJSON({ + injectiveAddress, + denom, + rolePermissions: { + role, + permissions: permissions + }, + addressRoles: { + injectiveAddress, + roles: [role], + }, +}); + +const txHash = await new MsgBroadcasterWithPk({ + privateKey, + network: Network.Testnet +}).broadcast({ + msgs: msg +}); + +console.log(txHash); + +``` From 28968cb5aa73b3077a0edc14b1a16a50f9735216 Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:51:31 +0200 Subject: [PATCH 4/7] chore: include new files in gitbook summary --- .gitbook/SUMMARY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitbook/SUMMARY.md b/.gitbook/SUMMARY.md index 0e9265f64..034616226 100644 --- a/.gitbook/SUMMARY.md +++ b/.gitbook/SUMMARY.md @@ -50,6 +50,7 @@ * [Insurance Funds](querying/querying-chain/querying-chain-insurance-funds.md) * [Oracle](querying/querying-chain/querying-chain-oracle.md) * [Peggy](querying/querying-chain/querying-chain-peggy.md) + * [Permissions](querying/querying-chain/querying-chain-permissions.md) * [Staking](querying/querying-chain/querying-chain-staking.md) * [Tendermint](querying/querying-chain/querying-chain-tendermint.md) * [Wasm](querying/querying-chain/querying-chain-wasm.md) @@ -75,6 +76,7 @@ * [IBC](core-modules/ibc.md) * [Insurance](core-modules/insurance.md) * [Peggy](core-modules/peggy.md) + * [Permissions](core-modules/permissions.md) * [Staking](core-modules/staking.md) * [Tokenfactory](core-modules/token-factory.md) * [Wasm](core-modules/wasm.md) From 7a8db52c490b6abf3110e9124d51c7cb755abdee Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:51:53 +0200 Subject: [PATCH 5/7] chore: add and link permissions messages docs --- .gitbook/core-modules/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitbook/core-modules/README.md b/.gitbook/core-modules/README.md index 737d88611..eaa7defdc 100644 --- a/.gitbook/core-modules/README.md +++ b/.gitbook/core-modules/README.md @@ -16,6 +16,7 @@ Within this section, we are going to explore the core modules of the Injective c | [IBC](ibc.md) | Used for cross-Cosmos chain transfers | | [Insurance](insurance.md) | Used for on-chain insurance funds | | [Peggy](peggy.md) | Used for the Injective <> Ethereum Bridge | +| [Permissions](permissions.md) | Used fot on-chain permissions | [Staking](staking.md) | Used for on-chain staking | | [Tokenfactory](token-factory.md) | Used for creating and managing `tokenfactory` tokens | | [Wasm](wasm.md) | Used for interacting with the Cosmwasm Layer | From 71f9731f8073325a405278ac4b4b2aaf5b8df306 Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 17:52:36 +0200 Subject: [PATCH 6/7] chore: add and link permission queries to querying README --- .gitbook/querying/querying-chain/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitbook/querying/querying-chain/README.md b/.gitbook/querying/querying-chain/README.md index 37b04f896..717ca2fba 100644 --- a/.gitbook/querying/querying-chain/README.md +++ b/.gitbook/querying/querying-chain/README.md @@ -17,6 +17,7 @@ | [Mint](querying-chain-mint.md) | Query data from the mint module | | [Oracl](querying-chain-oracle.md) | Query data related to the oracle api | | [Peggy](querying-chain-peggy.md) | Query ethereum data using the peggy api | +| [Permissions](querying-chain-permissions.md) | Query data from the permissions module | | [Staking](querying-chain-staking.md) | Query data from the staking module | | [Wasm](querying-chain-wasm.md) | Query data from the wasm module | | [WasmX](querying-chain-wasmx.md) | Query data from the wasmX module | From add16efbf6e8aecb3d403cb1d55de37e43fb8d6b Mon Sep 17 00:00:00 2001 From: Juan-LukeKlopper Date: Fri, 6 Sep 2024 18:13:25 +0200 Subject: [PATCH 7/7] fix: add missing fetch in method name on docs --- .gitbook/querying/querying-chain/querying-chain-permissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitbook/querying/querying-chain/querying-chain-permissions.md b/.gitbook/querying/querying-chain/querying-chain-permissions.md index e945bdc13..ea5d9048f 100644 --- a/.gitbook/querying/querying-chain/querying-chain-permissions.md +++ b/.gitbook/querying/querying-chain/querying-chain-permissions.md @@ -90,7 +90,7 @@ const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc) const injectiveAddress = 'inj...' -const vouchers = await chainGrpcPermissionsApi.VouchersForAddress( +const vouchers = await chainGrpcPermissionsApi.fetchVouchersForAddress( injectiveAddress, )