@gnolang/gnonative 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/android/libs/gnocore.aar +0 -0
- package/build/hooks/use-gno.d.ts.map +1 -1
- package/build/hooks/use-gno.js +14 -6
- package/build/hooks/use-gno.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/provider/gnokey-provider.d.ts +44 -0
- package/build/provider/gnokey-provider.d.ts.map +1 -0
- package/build/provider/gnokey-provider.js +284 -0
- package/build/provider/gnokey-provider.js.map +1 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64/GnoCore.framework/GnoCore +0 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64/GnoCore.framework/Versions/A/GnoCore +0 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64/GnoCore.framework/Versions/Current/GnoCore +0 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64_x86_64-simulator/GnoCore.framework/GnoCore +0 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64_x86_64-simulator/GnoCore.framework/Versions/A/GnoCore +0 -0
- package/ios/Frameworks/GnoCore.xcframework/ios-arm64_x86_64-simulator/GnoCore.framework/Versions/Current/GnoCore +0 -0
- package/package.json +1 -1
- package/src/hooks/use-gno.ts +14 -6
- package/src/index.ts +1 -0
- package/src/provider/gnokey-provider.tsx +485 -0
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Develop for Gno using your app's native language
|
|
|
7
7
|
We created a Javascript object helper (useGno) that wraps the RPC API. The
|
|
8
8
|
useGno object is defined in the GnoNative repo at `/expo/src/hooks/use-gno.ts`.
|
|
9
9
|
|
|
10
|
-
The RPC API documentation is
|
|
10
|
+
The RPC API documentation is available in the Buf registry:
|
|
11
11
|
|
|
12
12
|
- [Documentation](https://buf.build/gnolang/gnonative/docs/main:land.gno.gnonative.v1)
|
|
13
13
|
|
|
@@ -108,11 +108,11 @@ before continuing.
|
|
|
108
108
|
You can run one of the following command:
|
|
109
109
|
|
|
110
110
|
```shell
|
|
111
|
-
make pack
|
|
111
|
+
make npm.pack
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
or
|
|
115
115
|
|
|
116
116
|
```shell
|
|
117
|
-
make publish
|
|
117
|
+
make npm.publish
|
|
118
118
|
```
|
package/android/libs/gnocore.aar
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-gno.d.ts","sourceRoot":"","sources":["../../src/hooks/use-gno.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-gno.d.ts","sourceRoot":"","sources":["../../src/hooks/use-gno.ts"],"names":[],"mappings":"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"}
|
package/build/hooks/use-gno.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { AddressFromBech32Request, AddressToBech32Request, CallRequest, CreateAccountRequest, DeleteAccountRequest, GenerateRecoveryPhraseRequest, GetActiveAccountRequest, GetChainIDRequest, GetKeyInfoByAddressRequest, GetKeyInfoByNameOrAddressRequest, GetKeyInfoByNameRequest, GetRemoteRequest, HasKeyByAddressRequest, HasKeyByNameOrAddressRequest, HasKeyByNameRequest, HelloRequest, ListKeyInfoRequest, MsgCall, MsgSend, QEvalRequest, QueryAccountRequest, QueryRequest, RenderRequest, SelectAccountRequest, SendRequest, SetChainIDRequest, SetPasswordRequest, SetRemoteRequest, } from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
2
2
|
import { GoBridge } from '../GoBridge';
|
|
3
3
|
import * as Grpc from '../grpc/client';
|
|
4
|
+
var Status;
|
|
5
|
+
(function (Status) {
|
|
6
|
+
Status[Status["Stopped"] = 0] = "Stopped";
|
|
7
|
+
Status[Status["Starting"] = 1] = "Starting";
|
|
8
|
+
Status[Status["Started"] = 2] = "Started";
|
|
9
|
+
})(Status || (Status = {}));
|
|
4
10
|
let clientInstance = undefined;
|
|
5
|
-
let
|
|
11
|
+
let bridgeStatus = Status.Stopped;
|
|
6
12
|
export const useGno = () => {
|
|
7
13
|
const getClient = async () => {
|
|
8
|
-
if (
|
|
14
|
+
if (bridgeStatus === Status.Stopped) {
|
|
9
15
|
await initBridge();
|
|
10
16
|
}
|
|
11
17
|
if (clientInstance)
|
|
@@ -20,19 +26,21 @@ export const useGno = () => {
|
|
|
20
26
|
return clientInstance;
|
|
21
27
|
};
|
|
22
28
|
const closeBridge = async () => {
|
|
23
|
-
if (
|
|
29
|
+
if (bridgeStatus !== Status.Stopped) {
|
|
24
30
|
console.log('Closing bridge...');
|
|
25
31
|
await GoBridge.closeBridge();
|
|
26
32
|
console.log('Bridge closed.');
|
|
27
|
-
|
|
33
|
+
bridgeStatus = Status.Stopped;
|
|
34
|
+
clientInstance = undefined;
|
|
28
35
|
}
|
|
29
36
|
};
|
|
30
37
|
const initBridge = async () => {
|
|
31
|
-
if (
|
|
38
|
+
if (bridgeStatus === Status.Stopped) {
|
|
32
39
|
console.log('Initializing bridge...');
|
|
40
|
+
bridgeStatus = Status.Starting;
|
|
33
41
|
await GoBridge.initBridge();
|
|
34
42
|
console.log('Bridge initialized.');
|
|
35
|
-
|
|
43
|
+
bridgeStatus = Status.Started;
|
|
36
44
|
}
|
|
37
45
|
};
|
|
38
46
|
const setRemote = async (remote) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-gno.js","sourceRoot":"","sources":["../../src/hooks/use-gno.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AddressFromBech32Request,\n AddressToBech32Request,\n CallRequest,\n CallResponse,\n CreateAccountRequest,\n DeleteAccountRequest,\n DeleteAccountResponse,\n GenerateRecoveryPhraseRequest,\n GetActiveAccountRequest,\n GetActiveAccountResponse,\n GetChainIDRequest,\n GetKeyInfoByAddressRequest,\n GetKeyInfoByNameOrAddressRequest,\n GetKeyInfoByNameRequest,\n GetRemoteRequest,\n HasKeyByAddressRequest,\n HasKeyByNameOrAddressRequest,\n HasKeyByNameRequest,\n HelloRequest,\n HelloStreamResponse,\n ListKeyInfoRequest,\n MsgCall,\n MsgSend,\n QEvalRequest,\n QueryAccountRequest,\n QueryAccountResponse,\n QueryRequest,\n QueryResponse,\n RenderRequest,\n SelectAccountRequest,\n SelectAccountResponse,\n SendRequest,\n SendResponse,\n SetChainIDRequest,\n SetChainIDResponse,\n SetPasswordRequest,\n SetPasswordResponse,\n SetRemoteRequest,\n SetRemoteResponse,\n} from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';\nimport { GnoNativeService } from '@buf/gnolang_gnonative.connectrpc_es/rpc_connect';\nimport { PromiseClient } from '@connectrpc/connect';\n\nimport { GnoAccount } from './types';\nimport { GoBridge } from '../GoBridge';\nimport * as Grpc from '../grpc/client';\n\nexport interface GnoResponse {\n setRemote: (remote: string) => Promise<SetRemoteResponse>;\n getRemote: () => Promise<string>;\n setChainID: (chainId: string) => Promise<SetChainIDResponse>;\n getChainID: () => Promise<string>;\n createAccount: (\n nameOrBech32: string,\n mnemonic: string,\n password: string,\n ) => Promise<GnoAccount | undefined>;\n generateRecoveryPhrase: () => Promise<string>;\n listKeyInfo: () => Promise<GnoAccount[]>;\n hasKeyByName: (name: string) => Promise<boolean>;\n hasKeyByAddress: (address: Uint8Array) => Promise<boolean>;\n hasKeyByNameOrAddress: (nameOrBech32: string) => Promise<boolean>;\n getKeyInfoByName: (name: string) => Promise<GnoAccount | undefined>;\n getKeyInfoByAddress: (address: Uint8Array) => Promise<GnoAccount | undefined>;\n getKeyInfoByNameOrAddress: (nameOrBech32: string) => Promise<GnoAccount | undefined>;\n selectAccount: (nameOrBech32: string) => Promise<SelectAccountResponse>;\n setPassword: (password: string) => Promise<SetPasswordResponse>;\n getActiveAccount: () => Promise<GetActiveAccountResponse>;\n queryAccount: (address: Uint8Array) => Promise<QueryAccountResponse>;\n deleteAccount: (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => Promise<DeleteAccountResponse>;\n query: (path: string, data: Uint8Array) => Promise<QueryResponse>;\n render: (packagePath: string, args: string) => Promise<string>;\n qEval: (packagePath: string, expression: string) => Promise<string>;\n call: (\n packagePath: string,\n fnc: string,\n args: Array<string>,\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => Promise<AsyncIterable<CallResponse>>;\n send: (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => Promise<AsyncIterable<SendResponse>>;\n addressToBech32: (address: Uint8Array) => Promise<string>;\n addressFromBech32: (bech32Address: string) => Promise<Uint8Array>;\n closeBridge: () => Promise<void>;\n initBridge: () => Promise<void>;\n // debug\n hello: (name: string) => Promise<string>;\n helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;\n}\n\nlet clientInstance: PromiseClient<typeof GnoNativeService> | undefined = undefined;\nlet bridgeInstance: boolean = false;\n\nexport const useGno = (): GnoResponse => {\n const getClient = async () => {\n if (!bridgeInstance) {\n await initBridge();\n }\n\n if (clientInstance) return clientInstance;\n\n console.log('Creating GRPC client instance...');\n\n const port = await GoBridge.getTcpPort();\n clientInstance = Grpc.createClient(port);\n\n console.log('Creating GRPC client instance... done.');\n\n // Set the initial configuration where it's different from the default.\n await clientInstance.setRemote(new SetRemoteRequest({ remote: 'gno.land:26657' }));\n await clientInstance.setChainID(new SetChainIDRequest({ chainId: 'portal-loop' }));\n\n return clientInstance;\n };\n\n const closeBridge = async () => {\n if (bridgeInstance) {\n console.log('Closing bridge...');\n await GoBridge.closeBridge();\n console.log('Bridge closed.');\n bridgeInstance = false;\n }\n };\n\n const initBridge = async () => {\n if (!bridgeInstance) {\n console.log('Initializing bridge...');\n await GoBridge.initBridge();\n console.log('Bridge initialized.');\n bridgeInstance = true;\n }\n };\n\n const setRemote = async (remote: string) => {\n const client = await getClient();\n const response = await client.setRemote(new SetRemoteRequest({ remote }));\n return response;\n };\n\n const getRemote = async () => {\n const client = await getClient();\n const response = await client.getRemote(new GetRemoteRequest());\n return response.remote;\n };\n\n const setChainID = async (chainId: string) => {\n const client = await getClient();\n const response = await client.setChainID(new SetChainIDRequest({ chainId }));\n return response;\n };\n\n const getChainID = async () => {\n const client = await getClient();\n const response = await client.getChainID(new GetChainIDRequest());\n return response.chainId;\n };\n\n const createAccount = async (nameOrBech32: string, mnemonic: string, password: string) => {\n const client = await getClient();\n const reponse = await client.createAccount(\n new CreateAccountRequest({\n nameOrBech32,\n mnemonic,\n password,\n }),\n );\n return reponse.key;\n };\n\n const generateRecoveryPhrase = async () => {\n const client = await getClient();\n const response = await client.generateRecoveryPhrase(new GenerateRecoveryPhraseRequest());\n return response.phrase;\n };\n\n const hasKeyByName = async (name: string) => {\n const client = await getClient();\n const response = await client.hasKeyByName(new HasKeyByNameRequest({ name }));\n return response.has;\n };\n\n const hasKeyByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.hasKeyByAddress(new HasKeyByAddressRequest({ address }));\n return response.has;\n };\n\n const hasKeyByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.hasKeyByNameOrAddress(\n new HasKeyByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.has;\n };\n\n const getKeyInfoByName = async (name: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByName(new GetKeyInfoByNameRequest({ name }));\n return response.key;\n };\n\n const getKeyInfoByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.getKeyInfoByAddress(new GetKeyInfoByAddressRequest({ address }));\n return response.key;\n };\n\n const getKeyInfoByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByNameOrAddress(\n new GetKeyInfoByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.key;\n };\n\n const listKeyInfo = async () => {\n const client = await getClient();\n const response = await client.listKeyInfo(new ListKeyInfoRequest());\n return response.keys;\n };\n\n const selectAccount = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.selectAccount(\n new SelectAccountRequest({\n nameOrBech32,\n }),\n );\n return response;\n };\n\n const setPassword = async (password: string) => {\n const client = await getClient();\n const response = await client.setPassword(new SetPasswordRequest({ password }));\n return response;\n };\n\n const getActiveAccount = async () => {\n const client = await getClient();\n const response = await client.getActiveAccount(new GetActiveAccountRequest());\n return response;\n };\n\n const queryAccount = async (address: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.queryAccount(new QueryAccountRequest({ address }));\n return reponse;\n };\n\n const deleteAccount = async (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => {\n const client = await getClient();\n const response = await client.deleteAccount(\n new DeleteAccountRequest({\n nameOrBech32,\n password,\n skipPassword,\n }),\n );\n return response;\n };\n\n const query = async (path: string, data: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.query(\n new QueryRequest({\n path,\n data,\n }),\n );\n return reponse;\n };\n\n const render = async (packagePath: string, args: string) => {\n const client = await getClient();\n const reponse = await client.render(\n new RenderRequest({\n packagePath,\n args,\n }),\n );\n return reponse.result;\n };\n\n const qEval = async (packagePath: string, expression: string) => {\n const client = await getClient();\n const reponse = await client.qEval(\n new QEvalRequest({\n packagePath,\n expression,\n }),\n );\n return reponse.result;\n };\n\n const call = async (\n packagePath: string,\n fnc: string,\n args: Array<string>,\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.call(\n new CallRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgCall({\n packagePath,\n fnc,\n args,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const send = async (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.send(\n new SendRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgSend({\n toAddress,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const addressToBech32 = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.addressToBech32(new AddressToBech32Request({ address }));\n return response.bech32Address;\n };\n\n const addressFromBech32 = async (bech32Address: string) => {\n const client = await getClient();\n const response = await client.addressFromBech32(\n new AddressFromBech32Request({ bech32Address }),\n );\n return response.address;\n };\n\n // debug\n const hello = async (name: string) => {\n const client = await getClient();\n const response = await client.hello(new HelloRequest({ name }));\n return response.greeting;\n };\n\n // debug\n const helloStream = async (name: string) => {\n const client = await getClient();\n return client.helloStream(new HelloRequest({ name }));\n };\n\n return {\n initBridge,\n closeBridge,\n setRemote,\n getRemote,\n setChainID,\n getChainID,\n createAccount,\n generateRecoveryPhrase,\n listKeyInfo,\n hasKeyByName,\n hasKeyByAddress,\n hasKeyByNameOrAddress,\n getKeyInfoByName,\n getKeyInfoByAddress,\n getKeyInfoByNameOrAddress,\n selectAccount,\n setPassword,\n getActiveAccount,\n queryAccount,\n deleteAccount,\n query,\n render,\n qEval,\n call,\n send,\n addressToBech32,\n addressFromBech32,\n // debug\n hello,\n helloStream,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"use-gno.js","sourceRoot":"","sources":["../../src/hooks/use-gno.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AddressFromBech32Request,\n AddressToBech32Request,\n CallRequest,\n CallResponse,\n CreateAccountRequest,\n DeleteAccountRequest,\n DeleteAccountResponse,\n GenerateRecoveryPhraseRequest,\n GetActiveAccountRequest,\n GetActiveAccountResponse,\n GetChainIDRequest,\n GetKeyInfoByAddressRequest,\n GetKeyInfoByNameOrAddressRequest,\n GetKeyInfoByNameRequest,\n GetRemoteRequest,\n HasKeyByAddressRequest,\n HasKeyByNameOrAddressRequest,\n HasKeyByNameRequest,\n HelloRequest,\n HelloStreamResponse,\n ListKeyInfoRequest,\n MsgCall,\n MsgSend,\n QEvalRequest,\n QueryAccountRequest,\n QueryAccountResponse,\n QueryRequest,\n QueryResponse,\n RenderRequest,\n SelectAccountRequest,\n SelectAccountResponse,\n SendRequest,\n SendResponse,\n SetChainIDRequest,\n SetChainIDResponse,\n SetPasswordRequest,\n SetPasswordResponse,\n SetRemoteRequest,\n SetRemoteResponse,\n} from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';\nimport { GnoNativeService } from '@buf/gnolang_gnonative.connectrpc_es/rpc_connect';\nimport { PromiseClient } from '@connectrpc/connect';\n\nimport { GnoAccount } from './types';\nimport { GoBridge } from '../GoBridge';\nimport * as Grpc from '../grpc/client';\n\nexport interface GnoResponse {\n setRemote: (remote: string) => Promise<SetRemoteResponse>;\n getRemote: () => Promise<string>;\n setChainID: (chainId: string) => Promise<SetChainIDResponse>;\n getChainID: () => Promise<string>;\n createAccount: (\n nameOrBech32: string,\n mnemonic: string,\n password: string,\n ) => Promise<GnoAccount | undefined>;\n generateRecoveryPhrase: () => Promise<string>;\n listKeyInfo: () => Promise<GnoAccount[]>;\n hasKeyByName: (name: string) => Promise<boolean>;\n hasKeyByAddress: (address: Uint8Array) => Promise<boolean>;\n hasKeyByNameOrAddress: (nameOrBech32: string) => Promise<boolean>;\n getKeyInfoByName: (name: string) => Promise<GnoAccount | undefined>;\n getKeyInfoByAddress: (address: Uint8Array) => Promise<GnoAccount | undefined>;\n getKeyInfoByNameOrAddress: (nameOrBech32: string) => Promise<GnoAccount | undefined>;\n selectAccount: (nameOrBech32: string) => Promise<SelectAccountResponse>;\n setPassword: (password: string) => Promise<SetPasswordResponse>;\n getActiveAccount: () => Promise<GetActiveAccountResponse>;\n queryAccount: (address: Uint8Array) => Promise<QueryAccountResponse>;\n deleteAccount: (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => Promise<DeleteAccountResponse>;\n query: (path: string, data: Uint8Array) => Promise<QueryResponse>;\n render: (packagePath: string, args: string) => Promise<string>;\n qEval: (packagePath: string, expression: string) => Promise<string>;\n call: (\n packagePath: string,\n fnc: string,\n args: Array<string>,\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => Promise<AsyncIterable<CallResponse>>;\n send: (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => Promise<AsyncIterable<SendResponse>>;\n addressToBech32: (address: Uint8Array) => Promise<string>;\n addressFromBech32: (bech32Address: string) => Promise<Uint8Array>;\n closeBridge: () => Promise<void>;\n initBridge: () => Promise<void>;\n // debug\n hello: (name: string) => Promise<string>;\n helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;\n}\n\nenum Status {\n Stopped,\n Starting,\n Started,\n}\n\nlet clientInstance: PromiseClient<typeof GnoNativeService> | undefined = undefined;\nlet bridgeStatus: Status = Status.Stopped;\n\nexport const useGno = (): GnoResponse => {\n const getClient = async () => {\n if (bridgeStatus === Status.Stopped) {\n await initBridge();\n }\n\n if (clientInstance) return clientInstance;\n\n console.log('Creating GRPC client instance...');\n\n const port = await GoBridge.getTcpPort();\n clientInstance = Grpc.createClient(port);\n\n console.log('Creating GRPC client instance... done.');\n\n // Set the initial configuration where it's different from the default.\n await clientInstance.setRemote(new SetRemoteRequest({ remote: 'gno.land:26657' }));\n await clientInstance.setChainID(new SetChainIDRequest({ chainId: 'portal-loop' }));\n\n return clientInstance;\n };\n\n const closeBridge = async () => {\n if (bridgeStatus !== Status.Stopped) {\n console.log('Closing bridge...');\n await GoBridge.closeBridge();\n console.log('Bridge closed.');\n bridgeStatus = Status.Stopped;\n clientInstance = undefined;\n }\n };\n\n const initBridge = async () => {\n if (bridgeStatus === Status.Stopped) {\n console.log('Initializing bridge...');\n bridgeStatus = Status.Starting;\n await GoBridge.initBridge();\n console.log('Bridge initialized.');\n bridgeStatus = Status.Started;\n }\n };\n\n const setRemote = async (remote: string) => {\n const client = await getClient();\n const response = await client.setRemote(new SetRemoteRequest({ remote }));\n return response;\n };\n\n const getRemote = async () => {\n const client = await getClient();\n const response = await client.getRemote(new GetRemoteRequest());\n return response.remote;\n };\n\n const setChainID = async (chainId: string) => {\n const client = await getClient();\n const response = await client.setChainID(new SetChainIDRequest({ chainId }));\n return response;\n };\n\n const getChainID = async () => {\n const client = await getClient();\n const response = await client.getChainID(new GetChainIDRequest());\n return response.chainId;\n };\n\n const createAccount = async (nameOrBech32: string, mnemonic: string, password: string) => {\n const client = await getClient();\n const reponse = await client.createAccount(\n new CreateAccountRequest({\n nameOrBech32,\n mnemonic,\n password,\n }),\n );\n return reponse.key;\n };\n\n const generateRecoveryPhrase = async () => {\n const client = await getClient();\n const response = await client.generateRecoveryPhrase(new GenerateRecoveryPhraseRequest());\n return response.phrase;\n };\n\n const hasKeyByName = async (name: string) => {\n const client = await getClient();\n const response = await client.hasKeyByName(new HasKeyByNameRequest({ name }));\n return response.has;\n };\n\n const hasKeyByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.hasKeyByAddress(new HasKeyByAddressRequest({ address }));\n return response.has;\n };\n\n const hasKeyByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.hasKeyByNameOrAddress(\n new HasKeyByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.has;\n };\n\n const getKeyInfoByName = async (name: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByName(new GetKeyInfoByNameRequest({ name }));\n return response.key;\n };\n\n const getKeyInfoByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.getKeyInfoByAddress(new GetKeyInfoByAddressRequest({ address }));\n return response.key;\n };\n\n const getKeyInfoByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByNameOrAddress(\n new GetKeyInfoByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.key;\n };\n\n const listKeyInfo = async () => {\n const client = await getClient();\n const response = await client.listKeyInfo(new ListKeyInfoRequest());\n return response.keys;\n };\n\n const selectAccount = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.selectAccount(\n new SelectAccountRequest({\n nameOrBech32,\n }),\n );\n return response;\n };\n\n const setPassword = async (password: string) => {\n const client = await getClient();\n const response = await client.setPassword(new SetPasswordRequest({ password }));\n return response;\n };\n\n const getActiveAccount = async () => {\n const client = await getClient();\n const response = await client.getActiveAccount(new GetActiveAccountRequest());\n return response;\n };\n\n const queryAccount = async (address: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.queryAccount(new QueryAccountRequest({ address }));\n return reponse;\n };\n\n const deleteAccount = async (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => {\n const client = await getClient();\n const response = await client.deleteAccount(\n new DeleteAccountRequest({\n nameOrBech32,\n password,\n skipPassword,\n }),\n );\n return response;\n };\n\n const query = async (path: string, data: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.query(\n new QueryRequest({\n path,\n data,\n }),\n );\n return reponse;\n };\n\n const render = async (packagePath: string, args: string) => {\n const client = await getClient();\n const reponse = await client.render(\n new RenderRequest({\n packagePath,\n args,\n }),\n );\n return reponse.result;\n };\n\n const qEval = async (packagePath: string, expression: string) => {\n const client = await getClient();\n const reponse = await client.qEval(\n new QEvalRequest({\n packagePath,\n expression,\n }),\n );\n return reponse.result;\n };\n\n const call = async (\n packagePath: string,\n fnc: string,\n args: Array<string>,\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.call(\n new CallRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgCall({\n packagePath,\n fnc,\n args,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const send = async (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.send(\n new SendRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgSend({\n toAddress,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const addressToBech32 = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.addressToBech32(new AddressToBech32Request({ address }));\n return response.bech32Address;\n };\n\n const addressFromBech32 = async (bech32Address: string) => {\n const client = await getClient();\n const response = await client.addressFromBech32(\n new AddressFromBech32Request({ bech32Address }),\n );\n return response.address;\n };\n\n // debug\n const hello = async (name: string) => {\n const client = await getClient();\n const response = await client.hello(new HelloRequest({ name }));\n return response.greeting;\n };\n\n // debug\n const helloStream = async (name: string) => {\n const client = await getClient();\n return client.helloStream(new HelloRequest({ name }));\n };\n\n return {\n initBridge,\n closeBridge,\n setRemote,\n getRemote,\n setChainID,\n getChainID,\n createAccount,\n generateRecoveryPhrase,\n listKeyInfo,\n hasKeyByName,\n hasKeyByAddress,\n hasKeyByNameOrAddress,\n getKeyInfoByName,\n getKeyInfoByAddress,\n getKeyInfoByNameOrAddress,\n selectAccount,\n setPassword,\n getActiveAccount,\n queryAccount,\n deleteAccount,\n query,\n render,\n qEval,\n call,\n send,\n addressToBech32,\n addressFromBech32,\n // debug\n hello,\n helloStream,\n };\n};\n"]}
|
package/build/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ import 'fast-text-encoding';
|
|
|
5
5
|
export declare function addChangeListener(listener: (event: ChangeEventPayload) => void): Subscription;
|
|
6
6
|
export { ChangeEventPayload, GnonativeView, GnonativeViewProps };
|
|
7
7
|
export { useGno } from './hooks/use-gno';
|
|
8
|
+
export * from './provider/gnokey-provider';
|
|
8
9
|
export * from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAInF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oBAAoB,CAAC;AAM5B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,YAAY,CAE7F;AAED,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,sDAAsD,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAInF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oBAAoB,CAAC;AAM5B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,YAAY,CAE7F;AAED,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sDAAsD,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -9,5 +9,6 @@ export function addChangeListener(listener) {
|
|
|
9
9
|
}
|
|
10
10
|
export { GnonativeView };
|
|
11
11
|
export { useGno } from './hooks/use-gno';
|
|
12
|
+
export * from './provider/gnokey-provider';
|
|
12
13
|
export * from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AAKnF,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oBAAoB,CAAC;AAE3B,MAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAE3F,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,eAAe,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAElF,MAAM,UAAU,iBAAiB,CAAC,QAA6C;IAC7E,OAAO,OAAO,CAAC,WAAW,CAAqB,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,OAAO,EAAsB,aAAa,EAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,sDAAsD,CAAC","sourcesContent":["import { EventEmitter, NativeModulesProxy, Subscription } from 'expo-modules-core';\n\n// Import the native module. On web, it will be resolved to Gnonative.web.ts\n// and on native platforms to Gnonative.ts\nimport { ChangeEventPayload, GnonativeViewProps } from './Gnonative.types';\nimport GnonativeModule from './GnonativeModule';\nimport GnonativeView from './GnonativeView';\nimport 'fast-text-encoding';\n\n(Symbol as any).asyncIterator = Symbol.asyncIterator || Symbol.for('Symbol.asyncIterator');\n\nconst emitter = new EventEmitter(GnonativeModule ?? NativeModulesProxy.Gnonative);\n\nexport function addChangeListener(listener: (event: ChangeEventPayload) => void): Subscription {\n return emitter.addListener<ChangeEventPayload>('onChange', listener);\n}\n\nexport { ChangeEventPayload, GnonativeView, GnonativeViewProps };\nexport { useGno } from './hooks/use-gno';\nexport * from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AAKnF,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,oBAAoB,CAAC;AAE3B,MAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAE3F,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,eAAe,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAElF,MAAM,UAAU,iBAAiB,CAAC,QAA6C;IAC7E,OAAO,OAAO,CAAC,WAAW,CAAqB,UAAU,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,OAAO,EAAsB,aAAa,EAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sDAAsD,CAAC","sourcesContent":["import { EventEmitter, NativeModulesProxy, Subscription } from 'expo-modules-core';\n\n// Import the native module. On web, it will be resolved to Gnonative.web.ts\n// and on native platforms to Gnonative.ts\nimport { ChangeEventPayload, GnonativeViewProps } from './Gnonative.types';\nimport GnonativeModule from './GnonativeModule';\nimport GnonativeView from './GnonativeView';\nimport 'fast-text-encoding';\n\n(Symbol as any).asyncIterator = Symbol.asyncIterator || Symbol.for('Symbol.asyncIterator');\n\nconst emitter = new EventEmitter(GnonativeModule ?? NativeModulesProxy.Gnonative);\n\nexport function addChangeListener(listener: (event: ChangeEventPayload) => void): Subscription {\n return emitter.addListener<ChangeEventPayload>('onChange', listener);\n}\n\nexport { ChangeEventPayload, GnonativeView, GnonativeViewProps };\nexport { useGno } from './hooks/use-gno';\nexport * from './provider/gnokey-provider';\nexport * from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CallResponse, DeleteAccountResponse, GetActiveAccountResponse, HelloStreamResponse, QueryAccountResponse, QueryResponse, SelectAccountResponse, SendResponse, SetChainIDResponse, SetPasswordResponse, SetRemoteResponse } from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
2
|
+
import { GnoAccount } from '../hooks/types';
|
|
3
|
+
export interface GnokeyContextProps {
|
|
4
|
+
initGnokey: (config: ConfigProps) => Promise<boolean>;
|
|
5
|
+
setRemote: (remote: string) => Promise<SetRemoteResponse>;
|
|
6
|
+
getRemote: () => Promise<string>;
|
|
7
|
+
setChainID: (chainId: string) => Promise<SetChainIDResponse>;
|
|
8
|
+
getChainID: () => Promise<string>;
|
|
9
|
+
createAccount: (nameOrBech32: string, mnemonic: string, password: string) => Promise<GnoAccount | undefined>;
|
|
10
|
+
generateRecoveryPhrase: () => Promise<string>;
|
|
11
|
+
listKeyInfo: () => Promise<GnoAccount[]>;
|
|
12
|
+
hasKeyByName: (name: string) => Promise<boolean>;
|
|
13
|
+
hasKeyByAddress: (address: Uint8Array) => Promise<boolean>;
|
|
14
|
+
hasKeyByNameOrAddress: (nameOrBech32: string) => Promise<boolean>;
|
|
15
|
+
getKeyInfoByName: (name: string) => Promise<GnoAccount | undefined>;
|
|
16
|
+
getKeyInfoByAddress: (address: Uint8Array) => Promise<GnoAccount | undefined>;
|
|
17
|
+
getKeyInfoByNameOrAddress: (nameOrBech32: string) => Promise<GnoAccount | undefined>;
|
|
18
|
+
selectAccount: (nameOrBech32: string) => Promise<SelectAccountResponse>;
|
|
19
|
+
setPassword: (password: string) => Promise<SetPasswordResponse>;
|
|
20
|
+
getActiveAccount: () => Promise<GetActiveAccountResponse>;
|
|
21
|
+
queryAccount: (address: Uint8Array) => Promise<QueryAccountResponse>;
|
|
22
|
+
deleteAccount: (nameOrBech32: string, password: string | undefined, skipPassword: boolean) => Promise<DeleteAccountResponse>;
|
|
23
|
+
query: (path: string, data: Uint8Array) => Promise<QueryResponse>;
|
|
24
|
+
render: (packagePath: string, args: string) => Promise<string>;
|
|
25
|
+
qEval: (packagePath: string, expression: string) => Promise<string>;
|
|
26
|
+
call: (packagePath: string, fnc: string, args: string[], gasFee: string, gasWanted: number, send?: string, memo?: string) => Promise<AsyncIterable<CallResponse>>;
|
|
27
|
+
send: (toAddress: Uint8Array, send: string, gasFee: string, gasWanted: number, memo?: string) => Promise<AsyncIterable<SendResponse>>;
|
|
28
|
+
addressToBech32: (address: Uint8Array) => Promise<string>;
|
|
29
|
+
addressFromBech32: (bech32Address: string) => Promise<Uint8Array>;
|
|
30
|
+
hello: (name: string) => Promise<string>;
|
|
31
|
+
helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;
|
|
32
|
+
}
|
|
33
|
+
interface ConfigProps {
|
|
34
|
+
remote: string;
|
|
35
|
+
chain_id: string;
|
|
36
|
+
}
|
|
37
|
+
interface GnokeyProviderProps {
|
|
38
|
+
config: ConfigProps;
|
|
39
|
+
children: React.ReactNode;
|
|
40
|
+
}
|
|
41
|
+
declare const GnokeyProvider: React.FC<GnokeyProviderProps>;
|
|
42
|
+
declare function useGnokeyContext(): GnokeyContextProps;
|
|
43
|
+
export { useGnokeyContext, GnokeyProvider };
|
|
44
|
+
//# sourceMappingURL=gnokey-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gnokey-provider.d.ts","sourceRoot":"","sources":["../../src/provider/gnokey-provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { AddressFromBech32Request, AddressToBech32Request, CallRequest, CreateAccountRequest, DeleteAccountRequest, GenerateRecoveryPhraseRequest, GetActiveAccountRequest, GetChainIDRequest, GetKeyInfoByAddressRequest, GetKeyInfoByNameOrAddressRequest, GetKeyInfoByNameRequest, GetRemoteRequest, HasKeyByAddressRequest, HasKeyByNameOrAddressRequest, HasKeyByNameRequest, HelloRequest, ListKeyInfoRequest, MsgCall, MsgSend, QEvalRequest, QueryAccountRequest, QueryRequest, RenderRequest, SelectAccountRequest, SendRequest, SetChainIDRequest, SetPasswordRequest, SetRemoteRequest, } from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
2
|
+
import { createContext, useContext, useEffect, useState } from 'react';
|
|
3
|
+
import { GoBridge } from '../GoBridge';
|
|
4
|
+
import * as Grpc from '../grpc/client';
|
|
5
|
+
var BridgeStatus;
|
|
6
|
+
(function (BridgeStatus) {
|
|
7
|
+
BridgeStatus[BridgeStatus["Stopped"] = 0] = "Stopped";
|
|
8
|
+
BridgeStatus[BridgeStatus["Starting"] = 1] = "Starting";
|
|
9
|
+
BridgeStatus[BridgeStatus["Started"] = 2] = "Started";
|
|
10
|
+
})(BridgeStatus || (BridgeStatus = {}));
|
|
11
|
+
const GnokeyContext = createContext(null);
|
|
12
|
+
const GnokeyProvider = ({ children, config }) => {
|
|
13
|
+
const [initialized, setInitialized] = useState(false);
|
|
14
|
+
const [clientInstance, setClientInstance] = useState(undefined);
|
|
15
|
+
const [bridgeStatus, setBridgeStatus] = useState(BridgeStatus.Stopped);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
(async () => {
|
|
18
|
+
await initGnokey(config);
|
|
19
|
+
setInitialized(true);
|
|
20
|
+
})();
|
|
21
|
+
}, []);
|
|
22
|
+
async function initGnokey(config) {
|
|
23
|
+
console.log('🍄 Initializing Gnokey on remote: %s chain_id: %s', config.remote, config.chain_id);
|
|
24
|
+
if (bridgeStatus === BridgeStatus.Stopped) {
|
|
25
|
+
console.log('Bridge stopped. Initializing...');
|
|
26
|
+
await initBridge();
|
|
27
|
+
}
|
|
28
|
+
if (clientInstance) {
|
|
29
|
+
console.error('GoBridge already initialized.');
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
const port = await GoBridge.getTcpPort();
|
|
33
|
+
console.log('GoBridge GRPC client instance port: %s', port);
|
|
34
|
+
const client = await Grpc.createClient(port);
|
|
35
|
+
setClientInstance(client);
|
|
36
|
+
console.log('GoBridge GRPC client instance. Done.');
|
|
37
|
+
try {
|
|
38
|
+
await client.setRemote(new SetRemoteRequest({ remote: 'gno.land:26657' }));
|
|
39
|
+
await client.setChainID(new SetChainIDRequest({ chainId: 'portal-loop' }));
|
|
40
|
+
console.log('✅ Gnokey bridge initialized.');
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error(error);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
const initBridge = async () => {
|
|
49
|
+
if (bridgeStatus === BridgeStatus.Stopped) {
|
|
50
|
+
console.log('Initializing bridge...');
|
|
51
|
+
setBridgeStatus(BridgeStatus.Starting);
|
|
52
|
+
await GoBridge.initBridge();
|
|
53
|
+
console.log('Bridge initialized.');
|
|
54
|
+
setBridgeStatus(BridgeStatus.Started);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const setRemote = async (remote) => {
|
|
58
|
+
const client = await getClient();
|
|
59
|
+
const response = await client.setRemote(new SetRemoteRequest({ remote }));
|
|
60
|
+
return response;
|
|
61
|
+
};
|
|
62
|
+
const getRemote = async () => {
|
|
63
|
+
const client = await getClient();
|
|
64
|
+
const response = await client.getRemote(new GetRemoteRequest());
|
|
65
|
+
return response.remote;
|
|
66
|
+
};
|
|
67
|
+
const setChainID = async (chainId) => {
|
|
68
|
+
const client = await getClient();
|
|
69
|
+
const response = await client.setChainID(new SetChainIDRequest({ chainId }));
|
|
70
|
+
return response;
|
|
71
|
+
};
|
|
72
|
+
const getChainID = async () => {
|
|
73
|
+
const client = await getClient();
|
|
74
|
+
const response = await client.getChainID(new GetChainIDRequest());
|
|
75
|
+
return response.chainId;
|
|
76
|
+
};
|
|
77
|
+
const createAccount = async (nameOrBech32, mnemonic, password) => {
|
|
78
|
+
const client = await getClient();
|
|
79
|
+
const reponse = await client.createAccount(new CreateAccountRequest({
|
|
80
|
+
nameOrBech32,
|
|
81
|
+
mnemonic,
|
|
82
|
+
password,
|
|
83
|
+
}));
|
|
84
|
+
return reponse.key;
|
|
85
|
+
};
|
|
86
|
+
const generateRecoveryPhrase = async () => {
|
|
87
|
+
const client = await getClient();
|
|
88
|
+
const response = await client.generateRecoveryPhrase(new GenerateRecoveryPhraseRequest());
|
|
89
|
+
return response.phrase;
|
|
90
|
+
};
|
|
91
|
+
const hasKeyByName = async (name) => {
|
|
92
|
+
const client = await getClient();
|
|
93
|
+
const response = await client.hasKeyByName(new HasKeyByNameRequest({ name }));
|
|
94
|
+
return response.has;
|
|
95
|
+
};
|
|
96
|
+
const hasKeyByAddress = async (address) => {
|
|
97
|
+
const client = await getClient();
|
|
98
|
+
const response = await client.hasKeyByAddress(new HasKeyByAddressRequest({ address }));
|
|
99
|
+
return response.has;
|
|
100
|
+
};
|
|
101
|
+
const hasKeyByNameOrAddress = async (nameOrBech32) => {
|
|
102
|
+
const client = await getClient();
|
|
103
|
+
const response = await client.hasKeyByNameOrAddress(new HasKeyByNameOrAddressRequest({ nameOrBech32 }));
|
|
104
|
+
return response.has;
|
|
105
|
+
};
|
|
106
|
+
const getKeyInfoByName = async (name) => {
|
|
107
|
+
const client = await getClient();
|
|
108
|
+
const response = await client.getKeyInfoByName(new GetKeyInfoByNameRequest({ name }));
|
|
109
|
+
return response.key;
|
|
110
|
+
};
|
|
111
|
+
const getKeyInfoByAddress = async (address) => {
|
|
112
|
+
const client = await getClient();
|
|
113
|
+
const response = await client.getKeyInfoByAddress(new GetKeyInfoByAddressRequest({ address }));
|
|
114
|
+
return response.key;
|
|
115
|
+
};
|
|
116
|
+
const getKeyInfoByNameOrAddress = async (nameOrBech32) => {
|
|
117
|
+
const client = await getClient();
|
|
118
|
+
const response = await client.getKeyInfoByNameOrAddress(new GetKeyInfoByNameOrAddressRequest({ nameOrBech32 }));
|
|
119
|
+
return response.key;
|
|
120
|
+
};
|
|
121
|
+
const listKeyInfo = async () => {
|
|
122
|
+
const client = await getClient();
|
|
123
|
+
const response = await client.listKeyInfo(new ListKeyInfoRequest());
|
|
124
|
+
return response.keys;
|
|
125
|
+
};
|
|
126
|
+
const selectAccount = async (nameOrBech32) => {
|
|
127
|
+
const client = await getClient();
|
|
128
|
+
const response = await client.selectAccount(new SelectAccountRequest({
|
|
129
|
+
nameOrBech32,
|
|
130
|
+
}));
|
|
131
|
+
return response;
|
|
132
|
+
};
|
|
133
|
+
const getClient = async () => {
|
|
134
|
+
if (!clientInstance) {
|
|
135
|
+
throw new Error('GoBridge client instance not initialized.');
|
|
136
|
+
}
|
|
137
|
+
return clientInstance;
|
|
138
|
+
};
|
|
139
|
+
const setPassword = async (password) => {
|
|
140
|
+
const client = await getClient();
|
|
141
|
+
const response = await client.setPassword(new SetPasswordRequest({ password }));
|
|
142
|
+
return response;
|
|
143
|
+
};
|
|
144
|
+
const getActiveAccount = async () => {
|
|
145
|
+
const client = await getClient();
|
|
146
|
+
const response = await client.getActiveAccount(new GetActiveAccountRequest());
|
|
147
|
+
return response;
|
|
148
|
+
};
|
|
149
|
+
const queryAccount = async (address) => {
|
|
150
|
+
const client = await getClient();
|
|
151
|
+
const reponse = await client.queryAccount(new QueryAccountRequest({ address }));
|
|
152
|
+
return reponse;
|
|
153
|
+
};
|
|
154
|
+
const deleteAccount = async (nameOrBech32, password, skipPassword) => {
|
|
155
|
+
const client = await getClient();
|
|
156
|
+
const response = await client.deleteAccount(new DeleteAccountRequest({
|
|
157
|
+
nameOrBech32,
|
|
158
|
+
password,
|
|
159
|
+
skipPassword,
|
|
160
|
+
}));
|
|
161
|
+
return response;
|
|
162
|
+
};
|
|
163
|
+
const query = async (path, data) => {
|
|
164
|
+
const client = await getClient();
|
|
165
|
+
const reponse = await client.query(new QueryRequest({
|
|
166
|
+
path,
|
|
167
|
+
data,
|
|
168
|
+
}));
|
|
169
|
+
return reponse;
|
|
170
|
+
};
|
|
171
|
+
const render = async (packagePath, args) => {
|
|
172
|
+
const client = await getClient();
|
|
173
|
+
const reponse = await client.render(new RenderRequest({
|
|
174
|
+
packagePath,
|
|
175
|
+
args,
|
|
176
|
+
}));
|
|
177
|
+
return reponse.result;
|
|
178
|
+
};
|
|
179
|
+
const qEval = async (packagePath, expression) => {
|
|
180
|
+
const client = await getClient();
|
|
181
|
+
const reponse = await client.qEval(new QEvalRequest({
|
|
182
|
+
packagePath,
|
|
183
|
+
expression,
|
|
184
|
+
}));
|
|
185
|
+
return reponse.result;
|
|
186
|
+
};
|
|
187
|
+
const call = async (packagePath, fnc, args, gasFee, gasWanted, send, memo) => {
|
|
188
|
+
const client = await getClient();
|
|
189
|
+
const reponse = client.call(new CallRequest({
|
|
190
|
+
gasFee,
|
|
191
|
+
gasWanted: BigInt(gasWanted),
|
|
192
|
+
memo,
|
|
193
|
+
msgs: [
|
|
194
|
+
new MsgCall({
|
|
195
|
+
packagePath,
|
|
196
|
+
fnc,
|
|
197
|
+
args,
|
|
198
|
+
send,
|
|
199
|
+
}),
|
|
200
|
+
],
|
|
201
|
+
}));
|
|
202
|
+
return reponse;
|
|
203
|
+
};
|
|
204
|
+
const send = async (toAddress, send, gasFee, gasWanted, memo) => {
|
|
205
|
+
const client = await getClient();
|
|
206
|
+
const reponse = client.send(new SendRequest({
|
|
207
|
+
gasFee,
|
|
208
|
+
gasWanted: BigInt(gasWanted),
|
|
209
|
+
memo,
|
|
210
|
+
msgs: [
|
|
211
|
+
new MsgSend({
|
|
212
|
+
toAddress,
|
|
213
|
+
send,
|
|
214
|
+
}),
|
|
215
|
+
],
|
|
216
|
+
}));
|
|
217
|
+
return reponse;
|
|
218
|
+
};
|
|
219
|
+
const addressToBech32 = async (address) => {
|
|
220
|
+
const client = await getClient();
|
|
221
|
+
const response = await client.addressToBech32(new AddressToBech32Request({ address }));
|
|
222
|
+
return response.bech32Address;
|
|
223
|
+
};
|
|
224
|
+
const addressFromBech32 = async (bech32Address) => {
|
|
225
|
+
const client = await getClient();
|
|
226
|
+
const response = await client.addressFromBech32(new AddressFromBech32Request({ bech32Address }));
|
|
227
|
+
return response.address;
|
|
228
|
+
};
|
|
229
|
+
// debug
|
|
230
|
+
const hello = async (name) => {
|
|
231
|
+
const client = await getClient();
|
|
232
|
+
const response = await client.hello(new HelloRequest({ name }));
|
|
233
|
+
return response.greeting;
|
|
234
|
+
};
|
|
235
|
+
// debug
|
|
236
|
+
const helloStream = async (name) => {
|
|
237
|
+
const client = await getClient();
|
|
238
|
+
return client.helloStream(new HelloRequest({ name }));
|
|
239
|
+
};
|
|
240
|
+
const value = {
|
|
241
|
+
initGnokey,
|
|
242
|
+
setRemote,
|
|
243
|
+
getRemote,
|
|
244
|
+
setChainID,
|
|
245
|
+
getChainID,
|
|
246
|
+
createAccount,
|
|
247
|
+
generateRecoveryPhrase,
|
|
248
|
+
listKeyInfo,
|
|
249
|
+
hasKeyByName,
|
|
250
|
+
hasKeyByAddress,
|
|
251
|
+
hasKeyByNameOrAddress,
|
|
252
|
+
getKeyInfoByName,
|
|
253
|
+
getKeyInfoByAddress,
|
|
254
|
+
getKeyInfoByNameOrAddress,
|
|
255
|
+
selectAccount,
|
|
256
|
+
setPassword,
|
|
257
|
+
getActiveAccount,
|
|
258
|
+
queryAccount,
|
|
259
|
+
deleteAccount,
|
|
260
|
+
query,
|
|
261
|
+
render,
|
|
262
|
+
qEval,
|
|
263
|
+
call,
|
|
264
|
+
send,
|
|
265
|
+
addressToBech32,
|
|
266
|
+
addressFromBech32,
|
|
267
|
+
// debug
|
|
268
|
+
hello,
|
|
269
|
+
helloStream,
|
|
270
|
+
};
|
|
271
|
+
if (!initialized) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
return <GnokeyContext.Provider value={value}>{children}</GnokeyContext.Provider>;
|
|
275
|
+
};
|
|
276
|
+
function useGnokeyContext() {
|
|
277
|
+
const context = useContext(GnokeyContext);
|
|
278
|
+
if (context === undefined) {
|
|
279
|
+
throw new Error('useGnokeyContext must be used within a GnokeyProvider');
|
|
280
|
+
}
|
|
281
|
+
return context;
|
|
282
|
+
}
|
|
283
|
+
export { useGnokeyContext, GnokeyProvider };
|
|
284
|
+
//# sourceMappingURL=gnokey-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gnokey-provider.js","sourceRoot":"","sources":["../../src/provider/gnokey-provider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AddressFromBech32Request,\n AddressToBech32Request,\n CallRequest,\n CallResponse,\n CreateAccountRequest,\n DeleteAccountRequest,\n DeleteAccountResponse,\n GenerateRecoveryPhraseRequest,\n GetActiveAccountRequest,\n GetActiveAccountResponse,\n GetChainIDRequest,\n GetKeyInfoByAddressRequest,\n GetKeyInfoByNameOrAddressRequest,\n GetKeyInfoByNameRequest,\n GetRemoteRequest,\n HasKeyByAddressRequest,\n HasKeyByNameOrAddressRequest,\n HasKeyByNameRequest,\n HelloRequest,\n HelloStreamResponse,\n ListKeyInfoRequest,\n MsgCall,\n MsgSend,\n QEvalRequest,\n QueryAccountRequest,\n QueryAccountResponse,\n QueryRequest,\n QueryResponse,\n RenderRequest,\n SelectAccountRequest,\n SelectAccountResponse,\n SendRequest,\n SendResponse,\n SetChainIDRequest,\n SetChainIDResponse,\n SetPasswordRequest,\n SetPasswordResponse,\n SetRemoteRequest,\n SetRemoteResponse,\n} from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';\nimport { GnoNativeService } from '@buf/gnolang_gnonative.connectrpc_es/rpc_connect';\nimport { PromiseClient } from '@connectrpc/connect';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { GoBridge } from '../GoBridge';\nimport * as Grpc from '../grpc/client';\nimport { GnoAccount } from '../hooks/types';\n\nexport interface GnokeyContextProps {\n initGnokey: (config: ConfigProps) => Promise<boolean>;\n\n setRemote: (remote: string) => Promise<SetRemoteResponse>;\n getRemote: () => Promise<string>;\n setChainID: (chainId: string) => Promise<SetChainIDResponse>;\n getChainID: () => Promise<string>;\n createAccount: (\n nameOrBech32: string,\n mnemonic: string,\n password: string,\n ) => Promise<GnoAccount | undefined>;\n generateRecoveryPhrase: () => Promise<string>;\n listKeyInfo: () => Promise<GnoAccount[]>;\n hasKeyByName: (name: string) => Promise<boolean>;\n hasKeyByAddress: (address: Uint8Array) => Promise<boolean>;\n hasKeyByNameOrAddress: (nameOrBech32: string) => Promise<boolean>;\n getKeyInfoByName: (name: string) => Promise<GnoAccount | undefined>;\n getKeyInfoByAddress: (address: Uint8Array) => Promise<GnoAccount | undefined>;\n getKeyInfoByNameOrAddress: (nameOrBech32: string) => Promise<GnoAccount | undefined>;\n selectAccount: (nameOrBech32: string) => Promise<SelectAccountResponse>;\n setPassword: (password: string) => Promise<SetPasswordResponse>;\n getActiveAccount: () => Promise<GetActiveAccountResponse>;\n queryAccount: (address: Uint8Array) => Promise<QueryAccountResponse>;\n deleteAccount: (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => Promise<DeleteAccountResponse>;\n query: (path: string, data: Uint8Array) => Promise<QueryResponse>;\n render: (packagePath: string, args: string) => Promise<string>;\n qEval: (packagePath: string, expression: string) => Promise<string>;\n call: (\n packagePath: string,\n fnc: string,\n args: string[],\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => Promise<AsyncIterable<CallResponse>>;\n send: (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => Promise<AsyncIterable<SendResponse>>;\n addressToBech32: (address: Uint8Array) => Promise<string>;\n addressFromBech32: (bech32Address: string) => Promise<Uint8Array>;\n // closeBridge: () => Promise<void>;\n // initBridge: () => Promise<void>;\n // debug\n hello: (name: string) => Promise<string>;\n helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;\n}\n\ninterface ConfigProps {\n remote: string;\n chain_id: string;\n}\n\ninterface GnokeyProviderProps {\n config: ConfigProps;\n children: React.ReactNode;\n}\n\nenum BridgeStatus {\n Stopped,\n Starting,\n Started,\n}\n\nconst GnokeyContext = createContext<GnokeyContextProps | null>(null);\n\nconst GnokeyProvider: React.FC<GnokeyProviderProps> = ({ children, config }) => {\n const [initialized, setInitialized] = useState(false);\n const [clientInstance, setClientInstance] = useState<\n PromiseClient<typeof GnoNativeService> | undefined\n >(undefined);\n const [bridgeStatus, setBridgeStatus] = useState(BridgeStatus.Stopped);\n\n useEffect(() => {\n (async () => {\n await initGnokey(config);\n setInitialized(true);\n })();\n }, []);\n\n async function initGnokey(config): Promise<boolean> {\n console.log(\n '🍄 Initializing Gnokey on remote: %s chain_id: %s',\n config.remote,\n config.chain_id,\n );\n\n if (bridgeStatus === BridgeStatus.Stopped) {\n console.log('Bridge stopped. Initializing...');\n await initBridge();\n }\n\n if (clientInstance) {\n console.error('GoBridge already initialized.');\n return true;\n }\n\n const port = await GoBridge.getTcpPort();\n console.log('GoBridge GRPC client instance port: %s', port);\n const client = await Grpc.createClient(port);\n setClientInstance(client);\n console.log('GoBridge GRPC client instance. Done.');\n\n try {\n await client.setRemote(new SetRemoteRequest({ remote: 'gno.land:26657' }));\n await client.setChainID(new SetChainIDRequest({ chainId: 'portal-loop' }));\n\n console.log('✅ Gnokey bridge initialized.');\n } catch (error) {\n console.error(error);\n return false;\n }\n\n return true;\n }\n\n const initBridge = async () => {\n if (bridgeStatus === BridgeStatus.Stopped) {\n console.log('Initializing bridge...');\n setBridgeStatus(BridgeStatus.Starting);\n await GoBridge.initBridge();\n console.log('Bridge initialized.');\n setBridgeStatus(BridgeStatus.Started);\n }\n };\n\n const setRemote = async (remote: string) => {\n const client = await getClient();\n const response = await client.setRemote(new SetRemoteRequest({ remote }));\n return response;\n };\n\n const getRemote = async () => {\n const client = await getClient();\n const response = await client.getRemote(new GetRemoteRequest());\n return response.remote;\n };\n\n const setChainID = async (chainId: string) => {\n const client = await getClient();\n const response = await client.setChainID(new SetChainIDRequest({ chainId }));\n return response;\n };\n\n const getChainID = async () => {\n const client = await getClient();\n const response = await client.getChainID(new GetChainIDRequest());\n return response.chainId;\n };\n\n const createAccount = async (nameOrBech32: string, mnemonic: string, password: string) => {\n const client = await getClient();\n const reponse = await client.createAccount(\n new CreateAccountRequest({\n nameOrBech32,\n mnemonic,\n password,\n }),\n );\n return reponse.key;\n };\n\n const generateRecoveryPhrase = async () => {\n const client = await getClient();\n const response = await client.generateRecoveryPhrase(new GenerateRecoveryPhraseRequest());\n return response.phrase;\n };\n\n const hasKeyByName = async (name: string) => {\n const client = await getClient();\n const response = await client.hasKeyByName(new HasKeyByNameRequest({ name }));\n return response.has;\n };\n\n const hasKeyByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.hasKeyByAddress(new HasKeyByAddressRequest({ address }));\n return response.has;\n };\n\n const hasKeyByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.hasKeyByNameOrAddress(\n new HasKeyByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.has;\n };\n\n const getKeyInfoByName = async (name: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByName(new GetKeyInfoByNameRequest({ name }));\n return response.key;\n };\n\n const getKeyInfoByAddress = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.getKeyInfoByAddress(new GetKeyInfoByAddressRequest({ address }));\n return response.key;\n };\n\n const getKeyInfoByNameOrAddress = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.getKeyInfoByNameOrAddress(\n new GetKeyInfoByNameOrAddressRequest({ nameOrBech32 }),\n );\n return response.key;\n };\n\n const listKeyInfo = async () => {\n const client = await getClient();\n const response = await client.listKeyInfo(new ListKeyInfoRequest());\n return response.keys;\n };\n\n const selectAccount = async (nameOrBech32: string) => {\n const client = await getClient();\n const response = await client.selectAccount(\n new SelectAccountRequest({\n nameOrBech32,\n }),\n );\n return response;\n };\n\n const getClient = async () => {\n if (!clientInstance) {\n throw new Error('GoBridge client instance not initialized.');\n }\n\n return clientInstance;\n };\n\n const setPassword = async (password: string) => {\n const client = await getClient();\n const response = await client.setPassword(new SetPasswordRequest({ password }));\n return response;\n };\n\n const getActiveAccount = async () => {\n const client = await getClient();\n const response = await client.getActiveAccount(new GetActiveAccountRequest());\n return response;\n };\n\n const queryAccount = async (address: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.queryAccount(new QueryAccountRequest({ address }));\n return reponse;\n };\n\n const deleteAccount = async (\n nameOrBech32: string,\n password: string | undefined,\n skipPassword: boolean,\n ) => {\n const client = await getClient();\n const response = await client.deleteAccount(\n new DeleteAccountRequest({\n nameOrBech32,\n password,\n skipPassword,\n }),\n );\n return response;\n };\n\n const query = async (path: string, data: Uint8Array) => {\n const client = await getClient();\n const reponse = await client.query(\n new QueryRequest({\n path,\n data,\n }),\n );\n return reponse;\n };\n\n const render = async (packagePath: string, args: string) => {\n const client = await getClient();\n const reponse = await client.render(\n new RenderRequest({\n packagePath,\n args,\n }),\n );\n return reponse.result;\n };\n\n const qEval = async (packagePath: string, expression: string) => {\n const client = await getClient();\n const reponse = await client.qEval(\n new QEvalRequest({\n packagePath,\n expression,\n }),\n );\n return reponse.result;\n };\n\n const call = async (\n packagePath: string,\n fnc: string,\n args: string[],\n gasFee: string,\n gasWanted: number,\n send?: string,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.call(\n new CallRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgCall({\n packagePath,\n fnc,\n args,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const send = async (\n toAddress: Uint8Array,\n send: string,\n gasFee: string,\n gasWanted: number,\n memo?: string,\n ) => {\n const client = await getClient();\n const reponse = client.send(\n new SendRequest({\n gasFee,\n gasWanted: BigInt(gasWanted),\n memo,\n msgs: [\n new MsgSend({\n toAddress,\n send,\n }),\n ],\n }),\n );\n return reponse;\n };\n\n const addressToBech32 = async (address: Uint8Array) => {\n const client = await getClient();\n const response = await client.addressToBech32(new AddressToBech32Request({ address }));\n return response.bech32Address;\n };\n\n const addressFromBech32 = async (bech32Address: string) => {\n const client = await getClient();\n const response = await client.addressFromBech32(\n new AddressFromBech32Request({ bech32Address }),\n );\n return response.address;\n };\n\n // debug\n const hello = async (name: string) => {\n const client = await getClient();\n const response = await client.hello(new HelloRequest({ name }));\n return response.greeting;\n };\n\n // debug\n const helloStream = async (name: string) => {\n const client = await getClient();\n return client.helloStream(new HelloRequest({ name }));\n };\n\n const value = {\n initGnokey,\n setRemote,\n getRemote,\n setChainID,\n getChainID,\n createAccount,\n generateRecoveryPhrase,\n listKeyInfo,\n hasKeyByName,\n hasKeyByAddress,\n hasKeyByNameOrAddress,\n getKeyInfoByName,\n getKeyInfoByAddress,\n getKeyInfoByNameOrAddress,\n selectAccount,\n setPassword,\n getActiveAccount,\n queryAccount,\n deleteAccount,\n query,\n render,\n qEval,\n call,\n send,\n addressToBech32,\n addressFromBech32,\n // debug\n hello,\n helloStream,\n };\n\n if (!initialized) {\n return null;\n }\n\n return <GnokeyContext.Provider value={value}>{children}</GnokeyContext.Provider>;\n};\n\nfunction useGnokeyContext() {\n const context = useContext(GnokeyContext) as GnokeyContextProps;\n\n if (context === undefined) {\n throw new Error('useGnokeyContext must be used within a GnokeyProvider');\n }\n return context;\n}\n\nexport { useGnokeyContext, GnokeyProvider };\n"]}
|
|
Binary file
|
|
Binary file
|
package/ios/Frameworks/GnoCore.xcframework/ios-arm64/GnoCore.framework/Versions/Current/GnoCore
CHANGED
|
Binary file
|
package/ios/Frameworks/GnoCore.xcframework/ios-arm64_x86_64-simulator/GnoCore.framework/GnoCore
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/src/hooks/use-gno.ts
CHANGED
|
@@ -101,12 +101,18 @@ export interface GnoResponse {
|
|
|
101
101
|
helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
enum Status {
|
|
105
|
+
Stopped,
|
|
106
|
+
Starting,
|
|
107
|
+
Started,
|
|
108
|
+
}
|
|
109
|
+
|
|
104
110
|
let clientInstance: PromiseClient<typeof GnoNativeService> | undefined = undefined;
|
|
105
|
-
let
|
|
111
|
+
let bridgeStatus: Status = Status.Stopped;
|
|
106
112
|
|
|
107
113
|
export const useGno = (): GnoResponse => {
|
|
108
114
|
const getClient = async () => {
|
|
109
|
-
if (
|
|
115
|
+
if (bridgeStatus === Status.Stopped) {
|
|
110
116
|
await initBridge();
|
|
111
117
|
}
|
|
112
118
|
|
|
@@ -127,20 +133,22 @@ export const useGno = (): GnoResponse => {
|
|
|
127
133
|
};
|
|
128
134
|
|
|
129
135
|
const closeBridge = async () => {
|
|
130
|
-
if (
|
|
136
|
+
if (bridgeStatus !== Status.Stopped) {
|
|
131
137
|
console.log('Closing bridge...');
|
|
132
138
|
await GoBridge.closeBridge();
|
|
133
139
|
console.log('Bridge closed.');
|
|
134
|
-
|
|
140
|
+
bridgeStatus = Status.Stopped;
|
|
141
|
+
clientInstance = undefined;
|
|
135
142
|
}
|
|
136
143
|
};
|
|
137
144
|
|
|
138
145
|
const initBridge = async () => {
|
|
139
|
-
if (
|
|
146
|
+
if (bridgeStatus === Status.Stopped) {
|
|
140
147
|
console.log('Initializing bridge...');
|
|
148
|
+
bridgeStatus = Status.Starting;
|
|
141
149
|
await GoBridge.initBridge();
|
|
142
150
|
console.log('Bridge initialized.');
|
|
143
|
-
|
|
151
|
+
bridgeStatus = Status.Started;
|
|
144
152
|
}
|
|
145
153
|
};
|
|
146
154
|
|
package/src/index.ts
CHANGED
|
@@ -17,4 +17,5 @@ export function addChangeListener(listener: (event: ChangeEventPayload) => void)
|
|
|
17
17
|
|
|
18
18
|
export { ChangeEventPayload, GnonativeView, GnonativeViewProps };
|
|
19
19
|
export { useGno } from './hooks/use-gno';
|
|
20
|
+
export * from './provider/gnokey-provider';
|
|
20
21
|
export * from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AddressFromBech32Request,
|
|
3
|
+
AddressToBech32Request,
|
|
4
|
+
CallRequest,
|
|
5
|
+
CallResponse,
|
|
6
|
+
CreateAccountRequest,
|
|
7
|
+
DeleteAccountRequest,
|
|
8
|
+
DeleteAccountResponse,
|
|
9
|
+
GenerateRecoveryPhraseRequest,
|
|
10
|
+
GetActiveAccountRequest,
|
|
11
|
+
GetActiveAccountResponse,
|
|
12
|
+
GetChainIDRequest,
|
|
13
|
+
GetKeyInfoByAddressRequest,
|
|
14
|
+
GetKeyInfoByNameOrAddressRequest,
|
|
15
|
+
GetKeyInfoByNameRequest,
|
|
16
|
+
GetRemoteRequest,
|
|
17
|
+
HasKeyByAddressRequest,
|
|
18
|
+
HasKeyByNameOrAddressRequest,
|
|
19
|
+
HasKeyByNameRequest,
|
|
20
|
+
HelloRequest,
|
|
21
|
+
HelloStreamResponse,
|
|
22
|
+
ListKeyInfoRequest,
|
|
23
|
+
MsgCall,
|
|
24
|
+
MsgSend,
|
|
25
|
+
QEvalRequest,
|
|
26
|
+
QueryAccountRequest,
|
|
27
|
+
QueryAccountResponse,
|
|
28
|
+
QueryRequest,
|
|
29
|
+
QueryResponse,
|
|
30
|
+
RenderRequest,
|
|
31
|
+
SelectAccountRequest,
|
|
32
|
+
SelectAccountResponse,
|
|
33
|
+
SendRequest,
|
|
34
|
+
SendResponse,
|
|
35
|
+
SetChainIDRequest,
|
|
36
|
+
SetChainIDResponse,
|
|
37
|
+
SetPasswordRequest,
|
|
38
|
+
SetPasswordResponse,
|
|
39
|
+
SetRemoteRequest,
|
|
40
|
+
SetRemoteResponse,
|
|
41
|
+
} from '@buf/gnolang_gnonative.bufbuild_es/gnonativetypes_pb';
|
|
42
|
+
import { GnoNativeService } from '@buf/gnolang_gnonative.connectrpc_es/rpc_connect';
|
|
43
|
+
import { PromiseClient } from '@connectrpc/connect';
|
|
44
|
+
import { createContext, useContext, useEffect, useState } from 'react';
|
|
45
|
+
|
|
46
|
+
import { GoBridge } from '../GoBridge';
|
|
47
|
+
import * as Grpc from '../grpc/client';
|
|
48
|
+
import { GnoAccount } from '../hooks/types';
|
|
49
|
+
|
|
50
|
+
export interface GnokeyContextProps {
|
|
51
|
+
initGnokey: (config: ConfigProps) => Promise<boolean>;
|
|
52
|
+
|
|
53
|
+
setRemote: (remote: string) => Promise<SetRemoteResponse>;
|
|
54
|
+
getRemote: () => Promise<string>;
|
|
55
|
+
setChainID: (chainId: string) => Promise<SetChainIDResponse>;
|
|
56
|
+
getChainID: () => Promise<string>;
|
|
57
|
+
createAccount: (
|
|
58
|
+
nameOrBech32: string,
|
|
59
|
+
mnemonic: string,
|
|
60
|
+
password: string,
|
|
61
|
+
) => Promise<GnoAccount | undefined>;
|
|
62
|
+
generateRecoveryPhrase: () => Promise<string>;
|
|
63
|
+
listKeyInfo: () => Promise<GnoAccount[]>;
|
|
64
|
+
hasKeyByName: (name: string) => Promise<boolean>;
|
|
65
|
+
hasKeyByAddress: (address: Uint8Array) => Promise<boolean>;
|
|
66
|
+
hasKeyByNameOrAddress: (nameOrBech32: string) => Promise<boolean>;
|
|
67
|
+
getKeyInfoByName: (name: string) => Promise<GnoAccount | undefined>;
|
|
68
|
+
getKeyInfoByAddress: (address: Uint8Array) => Promise<GnoAccount | undefined>;
|
|
69
|
+
getKeyInfoByNameOrAddress: (nameOrBech32: string) => Promise<GnoAccount | undefined>;
|
|
70
|
+
selectAccount: (nameOrBech32: string) => Promise<SelectAccountResponse>;
|
|
71
|
+
setPassword: (password: string) => Promise<SetPasswordResponse>;
|
|
72
|
+
getActiveAccount: () => Promise<GetActiveAccountResponse>;
|
|
73
|
+
queryAccount: (address: Uint8Array) => Promise<QueryAccountResponse>;
|
|
74
|
+
deleteAccount: (
|
|
75
|
+
nameOrBech32: string,
|
|
76
|
+
password: string | undefined,
|
|
77
|
+
skipPassword: boolean,
|
|
78
|
+
) => Promise<DeleteAccountResponse>;
|
|
79
|
+
query: (path: string, data: Uint8Array) => Promise<QueryResponse>;
|
|
80
|
+
render: (packagePath: string, args: string) => Promise<string>;
|
|
81
|
+
qEval: (packagePath: string, expression: string) => Promise<string>;
|
|
82
|
+
call: (
|
|
83
|
+
packagePath: string,
|
|
84
|
+
fnc: string,
|
|
85
|
+
args: string[],
|
|
86
|
+
gasFee: string,
|
|
87
|
+
gasWanted: number,
|
|
88
|
+
send?: string,
|
|
89
|
+
memo?: string,
|
|
90
|
+
) => Promise<AsyncIterable<CallResponse>>;
|
|
91
|
+
send: (
|
|
92
|
+
toAddress: Uint8Array,
|
|
93
|
+
send: string,
|
|
94
|
+
gasFee: string,
|
|
95
|
+
gasWanted: number,
|
|
96
|
+
memo?: string,
|
|
97
|
+
) => Promise<AsyncIterable<SendResponse>>;
|
|
98
|
+
addressToBech32: (address: Uint8Array) => Promise<string>;
|
|
99
|
+
addressFromBech32: (bech32Address: string) => Promise<Uint8Array>;
|
|
100
|
+
// closeBridge: () => Promise<void>;
|
|
101
|
+
// initBridge: () => Promise<void>;
|
|
102
|
+
// debug
|
|
103
|
+
hello: (name: string) => Promise<string>;
|
|
104
|
+
helloStream: (name: string) => Promise<AsyncIterable<HelloStreamResponse>>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
interface ConfigProps {
|
|
108
|
+
remote: string;
|
|
109
|
+
chain_id: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface GnokeyProviderProps {
|
|
113
|
+
config: ConfigProps;
|
|
114
|
+
children: React.ReactNode;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
enum BridgeStatus {
|
|
118
|
+
Stopped,
|
|
119
|
+
Starting,
|
|
120
|
+
Started,
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const GnokeyContext = createContext<GnokeyContextProps | null>(null);
|
|
124
|
+
|
|
125
|
+
const GnokeyProvider: React.FC<GnokeyProviderProps> = ({ children, config }) => {
|
|
126
|
+
const [initialized, setInitialized] = useState(false);
|
|
127
|
+
const [clientInstance, setClientInstance] = useState<
|
|
128
|
+
PromiseClient<typeof GnoNativeService> | undefined
|
|
129
|
+
>(undefined);
|
|
130
|
+
const [bridgeStatus, setBridgeStatus] = useState(BridgeStatus.Stopped);
|
|
131
|
+
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
(async () => {
|
|
134
|
+
await initGnokey(config);
|
|
135
|
+
setInitialized(true);
|
|
136
|
+
})();
|
|
137
|
+
}, []);
|
|
138
|
+
|
|
139
|
+
async function initGnokey(config): Promise<boolean> {
|
|
140
|
+
console.log(
|
|
141
|
+
'🍄 Initializing Gnokey on remote: %s chain_id: %s',
|
|
142
|
+
config.remote,
|
|
143
|
+
config.chain_id,
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
if (bridgeStatus === BridgeStatus.Stopped) {
|
|
147
|
+
console.log('Bridge stopped. Initializing...');
|
|
148
|
+
await initBridge();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (clientInstance) {
|
|
152
|
+
console.error('GoBridge already initialized.');
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const port = await GoBridge.getTcpPort();
|
|
157
|
+
console.log('GoBridge GRPC client instance port: %s', port);
|
|
158
|
+
const client = await Grpc.createClient(port);
|
|
159
|
+
setClientInstance(client);
|
|
160
|
+
console.log('GoBridge GRPC client instance. Done.');
|
|
161
|
+
|
|
162
|
+
try {
|
|
163
|
+
await client.setRemote(new SetRemoteRequest({ remote: 'gno.land:26657' }));
|
|
164
|
+
await client.setChainID(new SetChainIDRequest({ chainId: 'portal-loop' }));
|
|
165
|
+
|
|
166
|
+
console.log('✅ Gnokey bridge initialized.');
|
|
167
|
+
} catch (error) {
|
|
168
|
+
console.error(error);
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const initBridge = async () => {
|
|
176
|
+
if (bridgeStatus === BridgeStatus.Stopped) {
|
|
177
|
+
console.log('Initializing bridge...');
|
|
178
|
+
setBridgeStatus(BridgeStatus.Starting);
|
|
179
|
+
await GoBridge.initBridge();
|
|
180
|
+
console.log('Bridge initialized.');
|
|
181
|
+
setBridgeStatus(BridgeStatus.Started);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const setRemote = async (remote: string) => {
|
|
186
|
+
const client = await getClient();
|
|
187
|
+
const response = await client.setRemote(new SetRemoteRequest({ remote }));
|
|
188
|
+
return response;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const getRemote = async () => {
|
|
192
|
+
const client = await getClient();
|
|
193
|
+
const response = await client.getRemote(new GetRemoteRequest());
|
|
194
|
+
return response.remote;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
const setChainID = async (chainId: string) => {
|
|
198
|
+
const client = await getClient();
|
|
199
|
+
const response = await client.setChainID(new SetChainIDRequest({ chainId }));
|
|
200
|
+
return response;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const getChainID = async () => {
|
|
204
|
+
const client = await getClient();
|
|
205
|
+
const response = await client.getChainID(new GetChainIDRequest());
|
|
206
|
+
return response.chainId;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const createAccount = async (nameOrBech32: string, mnemonic: string, password: string) => {
|
|
210
|
+
const client = await getClient();
|
|
211
|
+
const reponse = await client.createAccount(
|
|
212
|
+
new CreateAccountRequest({
|
|
213
|
+
nameOrBech32,
|
|
214
|
+
mnemonic,
|
|
215
|
+
password,
|
|
216
|
+
}),
|
|
217
|
+
);
|
|
218
|
+
return reponse.key;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
const generateRecoveryPhrase = async () => {
|
|
222
|
+
const client = await getClient();
|
|
223
|
+
const response = await client.generateRecoveryPhrase(new GenerateRecoveryPhraseRequest());
|
|
224
|
+
return response.phrase;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
const hasKeyByName = async (name: string) => {
|
|
228
|
+
const client = await getClient();
|
|
229
|
+
const response = await client.hasKeyByName(new HasKeyByNameRequest({ name }));
|
|
230
|
+
return response.has;
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
const hasKeyByAddress = async (address: Uint8Array) => {
|
|
234
|
+
const client = await getClient();
|
|
235
|
+
const response = await client.hasKeyByAddress(new HasKeyByAddressRequest({ address }));
|
|
236
|
+
return response.has;
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
const hasKeyByNameOrAddress = async (nameOrBech32: string) => {
|
|
240
|
+
const client = await getClient();
|
|
241
|
+
const response = await client.hasKeyByNameOrAddress(
|
|
242
|
+
new HasKeyByNameOrAddressRequest({ nameOrBech32 }),
|
|
243
|
+
);
|
|
244
|
+
return response.has;
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const getKeyInfoByName = async (name: string) => {
|
|
248
|
+
const client = await getClient();
|
|
249
|
+
const response = await client.getKeyInfoByName(new GetKeyInfoByNameRequest({ name }));
|
|
250
|
+
return response.key;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
const getKeyInfoByAddress = async (address: Uint8Array) => {
|
|
254
|
+
const client = await getClient();
|
|
255
|
+
const response = await client.getKeyInfoByAddress(new GetKeyInfoByAddressRequest({ address }));
|
|
256
|
+
return response.key;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
const getKeyInfoByNameOrAddress = async (nameOrBech32: string) => {
|
|
260
|
+
const client = await getClient();
|
|
261
|
+
const response = await client.getKeyInfoByNameOrAddress(
|
|
262
|
+
new GetKeyInfoByNameOrAddressRequest({ nameOrBech32 }),
|
|
263
|
+
);
|
|
264
|
+
return response.key;
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
const listKeyInfo = async () => {
|
|
268
|
+
const client = await getClient();
|
|
269
|
+
const response = await client.listKeyInfo(new ListKeyInfoRequest());
|
|
270
|
+
return response.keys;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const selectAccount = async (nameOrBech32: string) => {
|
|
274
|
+
const client = await getClient();
|
|
275
|
+
const response = await client.selectAccount(
|
|
276
|
+
new SelectAccountRequest({
|
|
277
|
+
nameOrBech32,
|
|
278
|
+
}),
|
|
279
|
+
);
|
|
280
|
+
return response;
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
const getClient = async () => {
|
|
284
|
+
if (!clientInstance) {
|
|
285
|
+
throw new Error('GoBridge client instance not initialized.');
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return clientInstance;
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
const setPassword = async (password: string) => {
|
|
292
|
+
const client = await getClient();
|
|
293
|
+
const response = await client.setPassword(new SetPasswordRequest({ password }));
|
|
294
|
+
return response;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
const getActiveAccount = async () => {
|
|
298
|
+
const client = await getClient();
|
|
299
|
+
const response = await client.getActiveAccount(new GetActiveAccountRequest());
|
|
300
|
+
return response;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
const queryAccount = async (address: Uint8Array) => {
|
|
304
|
+
const client = await getClient();
|
|
305
|
+
const reponse = await client.queryAccount(new QueryAccountRequest({ address }));
|
|
306
|
+
return reponse;
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
const deleteAccount = async (
|
|
310
|
+
nameOrBech32: string,
|
|
311
|
+
password: string | undefined,
|
|
312
|
+
skipPassword: boolean,
|
|
313
|
+
) => {
|
|
314
|
+
const client = await getClient();
|
|
315
|
+
const response = await client.deleteAccount(
|
|
316
|
+
new DeleteAccountRequest({
|
|
317
|
+
nameOrBech32,
|
|
318
|
+
password,
|
|
319
|
+
skipPassword,
|
|
320
|
+
}),
|
|
321
|
+
);
|
|
322
|
+
return response;
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
const query = async (path: string, data: Uint8Array) => {
|
|
326
|
+
const client = await getClient();
|
|
327
|
+
const reponse = await client.query(
|
|
328
|
+
new QueryRequest({
|
|
329
|
+
path,
|
|
330
|
+
data,
|
|
331
|
+
}),
|
|
332
|
+
);
|
|
333
|
+
return reponse;
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
const render = async (packagePath: string, args: string) => {
|
|
337
|
+
const client = await getClient();
|
|
338
|
+
const reponse = await client.render(
|
|
339
|
+
new RenderRequest({
|
|
340
|
+
packagePath,
|
|
341
|
+
args,
|
|
342
|
+
}),
|
|
343
|
+
);
|
|
344
|
+
return reponse.result;
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
const qEval = async (packagePath: string, expression: string) => {
|
|
348
|
+
const client = await getClient();
|
|
349
|
+
const reponse = await client.qEval(
|
|
350
|
+
new QEvalRequest({
|
|
351
|
+
packagePath,
|
|
352
|
+
expression,
|
|
353
|
+
}),
|
|
354
|
+
);
|
|
355
|
+
return reponse.result;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
const call = async (
|
|
359
|
+
packagePath: string,
|
|
360
|
+
fnc: string,
|
|
361
|
+
args: string[],
|
|
362
|
+
gasFee: string,
|
|
363
|
+
gasWanted: number,
|
|
364
|
+
send?: string,
|
|
365
|
+
memo?: string,
|
|
366
|
+
) => {
|
|
367
|
+
const client = await getClient();
|
|
368
|
+
const reponse = client.call(
|
|
369
|
+
new CallRequest({
|
|
370
|
+
gasFee,
|
|
371
|
+
gasWanted: BigInt(gasWanted),
|
|
372
|
+
memo,
|
|
373
|
+
msgs: [
|
|
374
|
+
new MsgCall({
|
|
375
|
+
packagePath,
|
|
376
|
+
fnc,
|
|
377
|
+
args,
|
|
378
|
+
send,
|
|
379
|
+
}),
|
|
380
|
+
],
|
|
381
|
+
}),
|
|
382
|
+
);
|
|
383
|
+
return reponse;
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
const send = async (
|
|
387
|
+
toAddress: Uint8Array,
|
|
388
|
+
send: string,
|
|
389
|
+
gasFee: string,
|
|
390
|
+
gasWanted: number,
|
|
391
|
+
memo?: string,
|
|
392
|
+
) => {
|
|
393
|
+
const client = await getClient();
|
|
394
|
+
const reponse = client.send(
|
|
395
|
+
new SendRequest({
|
|
396
|
+
gasFee,
|
|
397
|
+
gasWanted: BigInt(gasWanted),
|
|
398
|
+
memo,
|
|
399
|
+
msgs: [
|
|
400
|
+
new MsgSend({
|
|
401
|
+
toAddress,
|
|
402
|
+
send,
|
|
403
|
+
}),
|
|
404
|
+
],
|
|
405
|
+
}),
|
|
406
|
+
);
|
|
407
|
+
return reponse;
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
const addressToBech32 = async (address: Uint8Array) => {
|
|
411
|
+
const client = await getClient();
|
|
412
|
+
const response = await client.addressToBech32(new AddressToBech32Request({ address }));
|
|
413
|
+
return response.bech32Address;
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
const addressFromBech32 = async (bech32Address: string) => {
|
|
417
|
+
const client = await getClient();
|
|
418
|
+
const response = await client.addressFromBech32(
|
|
419
|
+
new AddressFromBech32Request({ bech32Address }),
|
|
420
|
+
);
|
|
421
|
+
return response.address;
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
// debug
|
|
425
|
+
const hello = async (name: string) => {
|
|
426
|
+
const client = await getClient();
|
|
427
|
+
const response = await client.hello(new HelloRequest({ name }));
|
|
428
|
+
return response.greeting;
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
// debug
|
|
432
|
+
const helloStream = async (name: string) => {
|
|
433
|
+
const client = await getClient();
|
|
434
|
+
return client.helloStream(new HelloRequest({ name }));
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
const value = {
|
|
438
|
+
initGnokey,
|
|
439
|
+
setRemote,
|
|
440
|
+
getRemote,
|
|
441
|
+
setChainID,
|
|
442
|
+
getChainID,
|
|
443
|
+
createAccount,
|
|
444
|
+
generateRecoveryPhrase,
|
|
445
|
+
listKeyInfo,
|
|
446
|
+
hasKeyByName,
|
|
447
|
+
hasKeyByAddress,
|
|
448
|
+
hasKeyByNameOrAddress,
|
|
449
|
+
getKeyInfoByName,
|
|
450
|
+
getKeyInfoByAddress,
|
|
451
|
+
getKeyInfoByNameOrAddress,
|
|
452
|
+
selectAccount,
|
|
453
|
+
setPassword,
|
|
454
|
+
getActiveAccount,
|
|
455
|
+
queryAccount,
|
|
456
|
+
deleteAccount,
|
|
457
|
+
query,
|
|
458
|
+
render,
|
|
459
|
+
qEval,
|
|
460
|
+
call,
|
|
461
|
+
send,
|
|
462
|
+
addressToBech32,
|
|
463
|
+
addressFromBech32,
|
|
464
|
+
// debug
|
|
465
|
+
hello,
|
|
466
|
+
helloStream,
|
|
467
|
+
};
|
|
468
|
+
|
|
469
|
+
if (!initialized) {
|
|
470
|
+
return null;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
return <GnokeyContext.Provider value={value}>{children}</GnokeyContext.Provider>;
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
function useGnokeyContext() {
|
|
477
|
+
const context = useContext(GnokeyContext) as GnokeyContextProps;
|
|
478
|
+
|
|
479
|
+
if (context === undefined) {
|
|
480
|
+
throw new Error('useGnokeyContext must be used within a GnokeyProvider');
|
|
481
|
+
}
|
|
482
|
+
return context;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
export { useGnokeyContext, GnokeyProvider };
|