GnosisIam.GnosisIam
description
Intended for use in Volta Gnosis web interface(https://volta.gnosis-safe.io/).
Dapp should provide this class with SafeAppSdk injected by Gnosis interface. This class intoduces
notion of controlled domain as that which is owned by gnosis wallet controlled by Iam signer.
The domain ownership functionality has been redefined accordingly.
-
↳
GnosisIam
- acceptAssetOffer
- cancelAssetOffer
- changeAppOwnership
- changeOrgOwnership
- changeRoleOwnership
- checkExistenceOfDomain
- closeConnection
- connectToCacheServer
- connectToDIDRegistry
- createApplication
- createClaimRequest
- createDelegateProof
- createIdentityProof
- createOrganization
- createProofClaim
- createPublicClaim
- createRole
- createSelfSignedClaim
- decodeJWTToken
- deleteApplication
- deleteClaim
- deleteOrganization
- deleteRole
- getAppsByOrgNamespace
- getAssetById
- getAssetHistory
- getClaimsByIssuer
- getClaimsByRequester
- getClaimsBySubject
- getClaimsBySubjects
- getDefinition
- getDid
- getDidDocument
- getENSTypesByOwner
- getENSTypesBySearchPhrase
- getOfferedAssets
- getOrgHierarchy
- getOwnedAssets
- getPreviouslyOwnedAssets
- getProviderType
- getRoleDIDs
- getRolesByNamespace
- getRolesDefinition
- getSigner
- getSubOrgsByOrgNamespace
- getSubdomains
- getUserClaims
- initializeConnection
- isConnected
- isOwner
- isSessionActive
- issueClaim
- issueClaimRequest
- issuePublicClaim
- namespacesWithRelations
- offerAsset
- on
- publishPublicClaim
- registerAsset
- registrationTypesOfRoles
- rejectAssetOffer
- rejectClaimRequest
- revokeDidDocument
- setRoleDefinition
- subscribeTo
- unsubscribeFrom
- updateDidDocument
- validateOwnership
- verifyPublicClaim
- isMetamaskExtensionPresent
• new GnosisIam(safeAppSdk
, iamOpts
)
IAM Constructor
Name | Type |
---|---|
safeAppSdk |
SafeAppsSDK |
iamOpts |
ConnectionOptions |
• get
address(): undefined
| string
undefined
| string
• get
safeAddress(): string
string
▸ acceptAssetOffer(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.assetDID |
string |
Promise
<void
>
▸ cancelAssetOffer(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.assetDID |
string |
Promise
<void
>
▸ changeAppOwnership(__namedParameters
): Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
changeAppOwnership
description
change owner ship of app subdomain and all app owned subdomains
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.newOwner |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
return array of steps needed to change ownership
▸ changeOrgOwnership(__namedParameters
): Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
changeOrgOwnership
description
change owner ship of org subdomain and all org owned roles subdomains
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.newOwner |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
return array of steps needed to change ownership
▸ changeRoleOwnership(__namedParameters
): Promise
<void
>
changeRoleOwnership
description
change ownership of role subdomain
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.newOwner |
string |
Promise
<void
>
▸ checkExistenceOfDomain(__namedParameters
): Promise
<boolean
>
checkExistenceOfDomain
description
check existence of domain in ENS registry
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.domain |
string |
Promise
<boolean
>
true or false whatever the domain is present
▸ closeConnection(): Promise
<void
>
description
Closes the connection between application and the signer's wallet
Promise
<void
>
▸ connectToCacheServer(): Promise
<void
>
description
Establishes connection to the cache serverand sets public key and identity token
Promise
<void
>
▸ connectToDIDRegistry(): Promise
<void
>
description
Creates the signer's DID document if it does not exist
Promise
<void
>
▸ createApplication(__namedParameters
): Promise
<{ info
: string
= "Set subdomain for application"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
createApp
description
creates role (create subdomain, sets the domain name and sets the role definition to metadata record in ENS Domain)
description
creates roles subdomain for the app namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.appName |
string |
__namedParameters.data |
IAppDefinition |
__namedParameters.namespace |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
= "Set subdomain for application"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
▸ createClaimRequest(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.claim |
Object |
__namedParameters.claim.claimType |
string |
__namedParameters.claim.claimTypeVersion |
number |
__namedParameters.claim.fields |
{ key : string ; value : string | number }[] |
__namedParameters.registrationTypes? |
RegistrationTypes [] |
__namedParameters.subject? |
string |
Promise
<void
>
▸ createDelegateProof(delegateKey
, rpcUrl
, identity
): Promise
<string
>
description
create a proof of identity delegate
Name | Type | Description |
---|---|---|
delegateKey |
string |
private key of the delegate |
rpcUrl |
string |
the url of the blockchain provider |
identity |
string |
Did of the delegate |
Promise
<string
>
token of delegate
▸ createIdentityProof(): Promise
<string
>
description
create a public claim to prove identity
Promise
<string
>
JWT token of created identity
▸ createOrganization(__namedParameters
): Promise
<{ info
: string
= "Create organization subdomain"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
createOrganization
description
creates organization (create subdomain, sets the domain name and sets the role definition to metadata record in ENS Domain)
description
and sets subdomain for roles and app for org namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.data |
IOrganizationDefinition |
__namedParameters.namespace |
string |
__namedParameters.orgName |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
= "Create organization subdomain"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
▸ createProofClaim(__namedParameters
): Promise
<string
>
createProofClaim
description
creates a proof of a claim
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.claimUrl |
string |
__namedParameters.saltedFields |
ISaltedFields |
Promise
<string
>
proof token
▸ createPublicClaim(__namedParameters
): Promise
<string
>
createPublicClaim
description
create a public claim based on data provided
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.data |
ClaimData |
__namedParameters.subject? |
string |
Promise
<string
>
JWT token of created claim
▸ createRole(__namedParameters
): Promise
<{ info
: string
= "Create subdomain for role"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
createRole
description
creates role (create subdomain, sets the domain name and sets the role definition to metadata record in ENS Domain)
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.data |
IRoleDefinition |
__namedParameters.namespace |
string |
__namedParameters.returnSteps? |
boolean |
__namedParameters.roleName |
string |
Promise
<{ info
: string
= "Create subdomain for role"; next
: () => Promise
<void
> ; tx
: EncodedCall
}[]>
information (true/false) if the role was created
▸ createSelfSignedClaim(__namedParameters
): Promise
<string
>
createSelfSignedClaim
description
creates self signed claim and upload the data to ipfs
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.data |
ClaimData |
__namedParameters.subject? |
string |
Promise
<string
>
▸ decodeJWTToken(__namedParameters
): Promise
<string
| { [key: string]: string
| object
; }>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.token |
string |
Promise
<string
| { [key: string]: string
| object
; }>
▸ deleteApplication(__namedParameters
): Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
deleteApplication
description
delete application and roles
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
▸ deleteClaim(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
Promise
<void
>
▸ deleteOrganization(__namedParameters
): Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
deleteOrganization
description
delete organization and roles
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.returnSteps? |
boolean |
Promise
<{ info
: string
; next
: (__namedParameters
: { retryCheck?
: boolean
}) => Promise
<void
> ; tx
: EncodedCall
}[]>
▸ deleteRole(__namedParameters
): Promise
<void
>
deleteRole
description
delete role
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
Promise
<void
>
▸ getAppsByOrgNamespace(__namedParameters
): Promise
<IApp
[]>
getENSTypesByOwner
description
get all applications for organization namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
Promise
<IApp
[]>
array of subdomains or empty array when there is no subdomains
▸ getAssetById(__namedParameters
): Promise
<Asset
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
Promise
<Asset
>
▸ getAssetHistory(__namedParameters
): Promise
<AssetHistory
[]>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
__namedParameters.order? |
Order |
__namedParameters.skip? |
number |
__namedParameters.take? |
number |
__namedParameters.type? |
AssetHistoryEventType |
Promise
<AssetHistory
[]>
▸ getClaimsByIssuer(__namedParameters
): Promise
<Claim
[]>
description
- Returns claims for given issuer. Allows filtering by status and parent namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.did |
string |
__namedParameters.isAccepted? |
boolean |
__namedParameters.parentNamespace? |
string |
Promise
<Claim
[]>
▸ getClaimsByRequester(__namedParameters
): Promise
<Claim
[]>
description
- Returns claims for given requester. Allows filtering by status and parent namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.did |
string |
__namedParameters.isAccepted? |
boolean |
__namedParameters.parentNamespace? |
string |
Promise
<Claim
[]>
▸ getClaimsBySubject(__namedParameters
): Promise
<Claim
[]>
description
- Returns claims for given subject. Allows filtering by status and parent namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.did |
string |
__namedParameters.isAccepted? |
boolean |
__namedParameters.parentNamespace? |
string |
Promise
<Claim
[]>
▸ getClaimsBySubjects(subjects
): Promise
<Claim
[]>
Name | Type |
---|---|
subjects |
string [] |
Promise
<Claim
[]>
▸ getDefinition(__namedParameters
): Promise
<IRoleDefinition
| IAppDefinition
| IOrganizationDefinition
>
getDefinition
description
get role definition form ens domain metadata record
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.type |
ENSNamespaceTypes |
Promise
<IRoleDefinition
| IAppDefinition
| IOrganizationDefinition
>
metadata string or empty string when there is no metadata
▸ getDid(): undefined
| string
Get DID
undefined
| string
did string if connected to wallet, if not returns undefined
▸ getDidDocument(__namedParameters?
): Promise
<Object
>
getDidDocument
Name | Type |
---|---|
__namedParameters |
undefined | { did? : string ; includeClaims? : boolean } |
Promise
<Object
>
whole did document if connected, if not returns null
▸ getENSTypesByOwner(__namedParameters
): Promise
<IOrganization
[]> | Promise
<IApp
[]> | Promise
<IRole
[]>
getENSTypesByOwner
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.owner |
string |
__namedParameters.type |
ENSNamespaceTypes |
Promise
<IOrganization
[]> | Promise
<IApp
[]> | Promise
<IRole
[]>
▸ getENSTypesBySearchPhrase(__namedParameters
): Promise
<(IOrganization
| IApp
| IRole
)[]>
getENSTypesBySearchPhrase
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.search |
string |
__namedParameters.types? |
("App" | "Org" | "Role" )[] |
Promise
<(IOrganization
| IApp
| IRole
)[]>
▸ getOfferedAssets(__namedParameters?
): Promise
<Asset
[]>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.did? |
string |
Promise
<Asset
[]>
▸ getOrgHierarchy(__namedParameters
): Promise
<IOrganization
>
getOrgHierarchy
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
Promise
<IOrganization
>
▸ getOwnedAssets(__namedParameters?
): Promise
<Asset
[]>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.did? |
string |
Promise
<Asset
[]>
▸ getPreviouslyOwnedAssets(__namedParameters
): Promise
<Asset
[]>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.owner |
string |
Promise
<Asset
[]>
▸ getProviderType(): WalletProvider
Get the current initialized provider type
provider type if the session is active if not undefined
▸ getRoleDIDs(__namedParameters
): Promise
<string
[]>
getRoleDIDs
description
get all users did which have certain role
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
Promise
<string
[]>
array of did's
▸ getRolesByNamespace(__namedParameters
): Promise
<IRole
[]>
getRolesByNamespace
description
get all subdomains for certain domain
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.parentType |
Application | Organization |
Promise
<IRole
[]>
array of subdomains or empty array when there is no subdomains
▸ getRolesDefinition(__namedParameters
): Promise
<Record
<string
, IRoleDefinition
>>
getRolesDefinition
description
get roles definition form ens domain metadata record
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespaces |
string [] |
Promise
<Record
<string
, IRoleDefinition
>>
array of metadata strings
▸ getSigner(): undefined
| JsonRpcSigner
| Signer
Get signer
undefined
| JsonRpcSigner
| Signer
JsonRpcSigner if connected to wallet, if not returns undefined
▸ getSubOrgsByOrgNamespace(__namedParameters
): Promise
<IOrganization
[]>
getSubOrgsByOrgNamespace
description
get all sub organizations for organization namespace
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
Promise
<IOrganization
[]>
array of subdomains or empty array when there is no subdomains
▸ getSubdomains(__namedParameters
): Promise
<string
[]>
getSubdomains
description
get all subdomains for certain domain
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.domain |
string |
__namedParameters.mode? |
"ALL" | "FIRSTLEVEL" |
Promise
<string
[]>
array of subdomains or empty array when there is no subdomains
▸ getUserClaims(__namedParameters?
): Promise
<IServiceEndpoint
& ClaimData
[]>
getUserClaims
description
get user claims
Name | Type |
---|---|
__namedParameters |
undefined | { did? : string } |
Promise
<IServiceEndpoint
& ClaimData
[]>
▸ initializeConnection(__namedParameters?
): Promise
<InitializeData
>
Initialize connection to wallet
description
creates web3 provider and establishes secure connection to selected wallet
summary
if not connected to wallet will show connection modal, but if already connected (data stored in localStorage) will only return initial data without showing modal
requires
needs to be called before any of other methods
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.createDocument? |
boolean |
__namedParameters.initCacheServer? |
boolean |
__namedParameters.reinitializeMetamask? |
boolean |
__namedParameters.walletProvider? |
WalletProvider |
Promise
<InitializeData
>
did string, status of connection and info if the user closed the wallet selection modal
▸ isConnected(): boolean
isConnected
boolean
info if the connection to wallet/signer is already established
▸ isOwner(__namedParameters
): Promise
<boolean
>
description
Checks whether the domain
is owned by user
or by
gnosis wallet controlled by user
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.domain |
string |
__namedParameters.user? |
string |
Promise
<boolean
>
▸ isSessionActive(): boolean
description
Checks if the session is active
boolean
boolean that indicates the session state
▸ issueClaim(__namedParameters
): Promise
<string
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.claim |
Object |
__namedParameters.claim.claimType |
string |
__namedParameters.claim.claimTypeVersion |
number |
__namedParameters.claim.fields |
{ key : string ; value : string | number }[] |
__namedParameters.subject |
string |
Promise
<string
>
▸ issueClaimRequest(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.claimParams? |
Record <string , string > |
__namedParameters.id |
string |
__namedParameters.registrationTypes |
RegistrationTypes [] |
__namedParameters.requester |
string |
__namedParameters.subjectAgreement |
string |
__namedParameters.token |
string |
Promise
<void
>
▸ issuePublicClaim(__namedParameters
): Promise
<string
>
issuePublicClaim
description
issue a public claim
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.publicClaim? |
IPublicClaim |
__namedParameters.token? |
string |
Promise
<string
>
return issued token
▸ namespacesWithRelations(namespaces
): Promise
<{ namespace
: string
; owner
: string
}[]>
description
Collects all namespaces related data. Currently its includes only owner
Name | Type |
---|---|
namespaces |
string [] |
Promise
<{ namespace
: string
; owner
: string
}[]>
▸ offerAsset(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.assetDID |
string |
__namedParameters.offerTo |
string |
Promise
<void
>
▸ on(event
, eventHandler
): void
description
Defines event handlers for change of account, change of network, disconnection
requires
to be called after the connection to wallet was initialized
Name | Type |
---|---|
event |
"accountChanged" | "networkChanged" | "disconnected" |
eventHandler |
() => void |
void
▸ publishPublicClaim(__namedParameters
): Promise
<string
>
publishPublicClaim
description
store claim data in ipfs and save url to DID document services
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.token |
string |
Promise
<string
>
ulr to ipfs
▸ registerAsset(): Promise
<string
>
Promise
<string
>
▸ registrationTypesOfRoles(roles
): Promise
<Record
<string
, Set
<RegistrationTypes
>>>
Name | Type |
---|---|
roles |
string [] |
Promise
<Record
<string
, Set
<RegistrationTypes
>>>
▸ rejectAssetOffer(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.assetDID |
string |
Promise
<void
>
▸ rejectClaimRequest(__namedParameters
): Promise
<void
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.id |
string |
__namedParameters.requesterDID |
string |
Promise
<void
>
▸ revokeDidDocument(): Promise
<boolean
>
revokeDidDocument
description
revokes did document
Promise
<boolean
>
information (true/false) if the DID document was revoked
▸ setRoleDefinition(__namedParameters
): Promise
<void
>
setRoleDefinition
description
sets role definition in ENS domain
description
please use it only when you want to update role definitions for already created role (domain)
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.data |
IRoleDefinition | IAppDefinition | IOrganizationDefinition |
__namedParameters.domain |
string |
Promise
<void
>
▸ subscribeTo(__namedParameters
): Promise
<undefined
| number
>
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.subject? |
string |
__namedParameters.messageHandler |
(data : IMessage ) => void |
Promise
<undefined
| number
>
▸ unsubscribeFrom(subscriptionId
): Promise
<void
>
Name | Type |
---|---|
subscriptionId |
number |
Promise
<void
>
▸ updateDidDocument(options
): Promise
<boolean
>
description
updates did document based on data provided
Name | Type | Description |
---|---|---|
options |
Object |
Options to connect with blockchain |
options.data |
IUpdateData |
New attribute value |
options.did? |
string |
Asset did to be updated |
options.didAttribute |
DIDAttribute |
Type of document to be updated |
options.validity? |
number |
Time (s) for the attribute to expire |
Promise
<boolean
>
true if document is updated successfuly
▸ validateOwnership(__namedParameters
): Promise
<string
[]>
validateOwnership
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.namespace |
string |
__namedParameters.type |
ENSNamespaceTypes |
Promise
<string
[]>
▸ verifyPublicClaim(__namedParameters
): Promise
<IPublicClaim
>
verifyPublicClaim
description
verifies issued token of claim
throws
if the proof failed
Name | Type |
---|---|
__namedParameters |
Object |
__namedParameters.claimUrl |
string |
Promise
<IPublicClaim
>
public claim data
▸ Static
isMetamaskExtensionPresent(): Promise
<Object
>
Promise
<Object
>