Skip to content

Commit 9746bc3

Browse files
committed
add docs
fix tx implement
1 parent 2a80474 commit 9746bc3

File tree

43 files changed

+663
-1106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+663
-1106
lines changed

README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,95 @@ main().then(() => {
838838
})
839839
```
840840

841+
## Instant RPC methods
842+
843+
Using instantOps option to expose instant RPC methods.
844+
845+
For example, for this config:
846+
```
847+
instantOps: [
848+
{
849+
className: "OsmosisClaim",
850+
include: {
851+
patterns: ["osmosis.**.*claim*"],
852+
},
853+
},
854+
{
855+
className: "CosmosAuthAccount",
856+
include: {
857+
patterns: [
858+
"cosmos.auth.**.*account*",
859+
"cosmos.auth.**.*Account*",
860+
"cosmos.gov.v1beta1.**",
861+
],
862+
},
863+
nameMapping: {
864+
// name mapping rule for both Msg and Query methods.
865+
// moduleAccounts will be renamed to authModuleAccounts in generated class.
866+
All: {
867+
authModuleAccounts: "cosmos.auth.v1beta1.moduleAccounts",
868+
},
869+
// name mapping rule for Msg methods.
870+
Tx: {
871+
// deposit method under Msg will be renamed to txDeposit in generated class. While deposit method under Query will remain the same.
872+
txDeposit: "cosmos.gov.v1beta1.deposit",
873+
// Same for vote method.
874+
txVote: "cosmos.gov.v1beta1.vote",
875+
},
876+
},
877+
},
878+
],
879+
```
880+
881+
There'll be an extra file generated in the root folder called service-ops.ts:
882+
```
883+
export interface OsmosisClaim extends _OsmosisClaimV1beta1Queryrpc.OsmosisClaim {}
884+
export class OsmosisClaim {
885+
rpc: TxRpc;
886+
init(rpc: TxRpc) {
887+
this.rpc = rpc;
888+
this.claimRecord = _OsmosisClaimV1beta1Queryrpc.createClientImpl(rpc).claimRecord;
889+
this.claimableForAction = _OsmosisClaimV1beta1Queryrpc.createClientImpl(rpc).claimableForAction;
890+
}
891+
}
892+
export interface CosmosAuthAccount extends _CosmosAuthV1beta1Queryrpc.CosmosAuthAccount, _CosmosGovV1beta1Queryrpc.CosmosAuthAccount, _CosmosGovV1beta1Txrpc.CosmosAuthAccount {}
893+
export class CosmosAuthAccount {
894+
rpc: TxRpc;
895+
init(rpc: TxRpc) {
896+
this.rpc = rpc;
897+
this.accounts = _CosmosAuthV1beta1Queryrpc.createClientImpl(rpc).accounts;
898+
this.account = _CosmosAuthV1beta1Queryrpc.createClientImpl(rpc).account;
899+
900+
// moduleAccounts has been renamed to authModuleAccounts as the nameMapping in settings.
901+
this.authModuleAccounts = _CosmosAuthV1beta1Queryrpc.createClientImpl(rpc).moduleAccounts;
902+
903+
this.proposal = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).proposal;
904+
this.proposals = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).proposals;
905+
906+
// vote under Query remains the same.
907+
this.vote = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).vote;
908+
909+
this.votes = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).votes;
910+
this.params = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).params;
911+
912+
// deposit under Query remains the same.
913+
this.deposit = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).deposit;
914+
915+
this.deposits = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).deposits;
916+
this.tallyResult = _CosmosGovV1beta1Queryrpc.createClientImpl(rpc).tallyResult;
917+
this.submitProposal = _CosmosGovV1beta1Txrpc.createClientImpl(rpc).submitProposal;
918+
919+
//same as txDeposite for vote here.
920+
this.txVote = _CosmosGovV1beta1Txrpc.createClientImpl(rpc).vote;
921+
922+
this.voteWeighted = _CosmosGovV1beta1Txrpc.createClientImpl(rpc).voteWeighted;
923+
924+
// deposit method under Msg will be renamed to txDeposit in generated class. While deposit method under Query will remain the same.
925+
this.txDeposit = _CosmosGovV1beta1Txrpc.createClientImpl(rpc).deposit;
926+
}
927+
}
928+
```
929+
841930
## Manually registering types
842931

843932
This example is with `osmosis` module in `osmojs`, but it is the same pattern for any module.

__fixtures__/v-next/outputinstantrpc/akash/audit/v1beta1/audit.rpc.msg.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,34 @@
11
import { Attribute, AttributeSDKType } from "../../base/v1beta1/attribute";
2-
import { BroadcastTxReq, BroadcastTxRes, TxRpc } from "../../../types";
2+
import { BroadcastTxReq, DeliverTxResponse, TxRpc } from "../../../types";
33
import { BinaryReader } from "../../../binary";
44
import { MsgSignProviderAttributes, MsgSignProviderAttributesSDKType, MsgSignProviderAttributesResponse, MsgSignProviderAttributesResponseSDKType, MsgDeleteProviderAttributes, MsgDeleteProviderAttributesSDKType, MsgDeleteProviderAttributesResponse, MsgDeleteProviderAttributesResponseSDKType } from "./audit";
55
/** Msg defines the provider Msg service */
66
export interface Msg {
77
/** SignProviderAttributes defines a method that signs provider attributes */
8-
signProviderAttributes(request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<BroadcastTxRes<MsgSignProviderAttributesResponse>>;
8+
signProviderAttributes(request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<DeliverTxResponse>;
99
/** DeleteProviderAttributes defines a method that deletes provider attributes */
10-
deleteProviderAttributes(request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<BroadcastTxRes<MsgDeleteProviderAttributesResponse>>;
10+
deleteProviderAttributes(request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<DeliverTxResponse>;
1111
}
1212
export class MsgClientImpl implements Msg {
1313
private readonly rpc: TxRpc;
1414
constructor(rpc: TxRpc) {
1515
this.rpc = rpc;
1616
}
1717
/* SignProviderAttributes defines a method that signs provider attributes */
18-
signProviderAttributes = async (request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<BroadcastTxRes<MsgSignProviderAttributesResponse>> => {
18+
signProviderAttributes = async (request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<DeliverTxResponse> => {
1919
const data = [{
2020
typeUrl: MsgSignProviderAttributes.typeUrl,
2121
value: request.message
2222
}];
23-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
24-
return promise.then(data => ({
25-
txResponse: data,
26-
response: data && data.msgResponses?.length ? MsgSignProviderAttributesResponse.decode(data.msgResponses[0].value) : undefined
27-
}));
23+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
2824
};
2925
/* DeleteProviderAttributes defines a method that deletes provider attributes */
30-
deleteProviderAttributes = async (request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<BroadcastTxRes<MsgDeleteProviderAttributesResponse>> => {
26+
deleteProviderAttributes = async (request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<DeliverTxResponse> => {
3127
const data = [{
3228
typeUrl: MsgDeleteProviderAttributes.typeUrl,
3329
value: request.message
3430
}];
35-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
36-
return promise.then(data => ({
37-
txResponse: data,
38-
response: data && data.msgResponses?.length ? MsgDeleteProviderAttributesResponse.decode(data.msgResponses[0].value) : undefined
39-
}));
31+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
4032
};
4133
}
4234
export const createClientImpl = (rpc: TxRpc) => {

__fixtures__/v-next/outputinstantrpc/akash/audit/v1beta2/audit.rpc.msg.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,34 @@
11
import { Attribute, AttributeSDKType } from "../../base/v1beta2/attribute";
2-
import { BroadcastTxReq, BroadcastTxRes, TxRpc } from "../../../types";
2+
import { BroadcastTxReq, DeliverTxResponse, TxRpc } from "../../../types";
33
import { BinaryReader } from "../../../binary";
44
import { MsgSignProviderAttributes, MsgSignProviderAttributesSDKType, MsgSignProviderAttributesResponse, MsgSignProviderAttributesResponseSDKType, MsgDeleteProviderAttributes, MsgDeleteProviderAttributesSDKType, MsgDeleteProviderAttributesResponse, MsgDeleteProviderAttributesResponseSDKType } from "./audit";
55
/** Msg defines the provider Msg service */
66
export interface Msg {
77
/** SignProviderAttributes defines a method that signs provider attributes */
8-
signProviderAttributes(request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<BroadcastTxRes<MsgSignProviderAttributesResponse>>;
8+
signProviderAttributes(request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<DeliverTxResponse>;
99
/** DeleteProviderAttributes defines a method that deletes provider attributes */
10-
deleteProviderAttributes(request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<BroadcastTxRes<MsgDeleteProviderAttributesResponse>>;
10+
deleteProviderAttributes(request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<DeliverTxResponse>;
1111
}
1212
export class MsgClientImpl implements Msg {
1313
private readonly rpc: TxRpc;
1414
constructor(rpc: TxRpc) {
1515
this.rpc = rpc;
1616
}
1717
/* SignProviderAttributes defines a method that signs provider attributes */
18-
signProviderAttributes = async (request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<BroadcastTxRes<MsgSignProviderAttributesResponse>> => {
18+
signProviderAttributes = async (request: BroadcastTxReq<MsgSignProviderAttributes>): Promise<DeliverTxResponse> => {
1919
const data = [{
2020
typeUrl: MsgSignProviderAttributes.typeUrl,
2121
value: request.message
2222
}];
23-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
24-
return promise.then(data => ({
25-
txResponse: data,
26-
response: data && data.msgResponses?.length ? MsgSignProviderAttributesResponse.decode(data.msgResponses[0].value) : undefined
27-
}));
23+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
2824
};
2925
/* DeleteProviderAttributes defines a method that deletes provider attributes */
30-
deleteProviderAttributes = async (request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<BroadcastTxRes<MsgDeleteProviderAttributesResponse>> => {
26+
deleteProviderAttributes = async (request: BroadcastTxReq<MsgDeleteProviderAttributes>): Promise<DeliverTxResponse> => {
3127
const data = [{
3228
typeUrl: MsgDeleteProviderAttributes.typeUrl,
3329
value: request.message
3430
}];
35-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
36-
return promise.then(data => ({
37-
txResponse: data,
38-
response: data && data.msgResponses?.length ? MsgDeleteProviderAttributesResponse.decode(data.msgResponses[0].value) : undefined
39-
}));
31+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
4032
};
4133
}
4234
export const createClientImpl = (rpc: TxRpc) => {

__fixtures__/v-next/outputinstantrpc/akash/cert/v1beta2/cert.rpc.msg.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,33 @@
1-
import { BroadcastTxReq, BroadcastTxRes, TxRpc } from "../../../types";
1+
import { BroadcastTxReq, DeliverTxResponse, TxRpc } from "../../../types";
22
import { BinaryReader } from "../../../binary";
33
import { MsgCreateCertificate, MsgCreateCertificateSDKType, MsgCreateCertificateResponse, MsgCreateCertificateResponseSDKType, MsgRevokeCertificate, MsgRevokeCertificateSDKType, MsgRevokeCertificateResponse, MsgRevokeCertificateResponseSDKType } from "./cert";
44
/** Msg defines the provider Msg service */
55
export interface Msg {
66
/** CreateCertificate defines a method to create new certificate given proper inputs. */
7-
createCertificate(request: BroadcastTxReq<MsgCreateCertificate>): Promise<BroadcastTxRes<MsgCreateCertificateResponse>>;
7+
createCertificate(request: BroadcastTxReq<MsgCreateCertificate>): Promise<DeliverTxResponse>;
88
/** RevokeCertificate defines a method to revoke the certificate */
9-
revokeCertificate(request: BroadcastTxReq<MsgRevokeCertificate>): Promise<BroadcastTxRes<MsgRevokeCertificateResponse>>;
9+
revokeCertificate(request: BroadcastTxReq<MsgRevokeCertificate>): Promise<DeliverTxResponse>;
1010
}
1111
export class MsgClientImpl implements Msg {
1212
private readonly rpc: TxRpc;
1313
constructor(rpc: TxRpc) {
1414
this.rpc = rpc;
1515
}
1616
/* CreateCertificate defines a method to create new certificate given proper inputs. */
17-
createCertificate = async (request: BroadcastTxReq<MsgCreateCertificate>): Promise<BroadcastTxRes<MsgCreateCertificateResponse>> => {
17+
createCertificate = async (request: BroadcastTxReq<MsgCreateCertificate>): Promise<DeliverTxResponse> => {
1818
const data = [{
1919
typeUrl: MsgCreateCertificate.typeUrl,
2020
value: request.message
2121
}];
22-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
23-
return promise.then(data => ({
24-
txResponse: data,
25-
response: data && data.msgResponses?.length ? MsgCreateCertificateResponse.decode(data.msgResponses[0].value) : undefined
26-
}));
22+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
2723
};
2824
/* RevokeCertificate defines a method to revoke the certificate */
29-
revokeCertificate = async (request: BroadcastTxReq<MsgRevokeCertificate>): Promise<BroadcastTxRes<MsgRevokeCertificateResponse>> => {
25+
revokeCertificate = async (request: BroadcastTxReq<MsgRevokeCertificate>): Promise<DeliverTxResponse> => {
3026
const data = [{
3127
typeUrl: MsgRevokeCertificate.typeUrl,
3228
value: request.message
3329
}];
34-
const promise = this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
35-
return promise.then(data => ({
36-
txResponse: data,
37-
response: data && data.msgResponses?.length ? MsgRevokeCertificateResponse.decode(data.msgResponses[0].value) : undefined
38-
}));
30+
return this.rpc.signAndBroadcast!(request.signerAddress, data, request.fee, request.memo);
3931
};
4032
}
4133
export const createClientImpl = (rpc: TxRpc) => {

0 commit comments

Comments
 (0)