mirror of
https://github.com/farcasterxyz/hub-monorepo.git
synced 2026-01-09 13:18:04 -05:00
fix: update generated files and fix validations (#2595)
## Why is this change needed? Fixes the previous release. ## Merge Checklist _Choose all relevant options below by adding an `x` now or at any time before submitting for review_ - [x] PR title adheres to the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) standard - [ ] PR has a [changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets) - [x] PR has been tagged with a change label(s) (i.e. documentation, feature, bugfix, or chore) - [x] PR includes [documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs) if necessary. <!-- start pr-codex --> --- ## PR-Codex overview This PR introduces new user data types, expands username validation, and adds tier-related functionalities across multiple files. It enhances the handling of usernames, addresses, and event types while improving validations and error handling. ### Detailed summary - Added `USERNAME_TYPE_BASENAME` to `UserNameType` enums. - Introduced `BANNER`, `USER_DATA_PRIMARY_ADDRESS_ETHEREUM`, and `USER_DATA_PRIMARY_ADDRESS_SOLANA` to `UserDataType` enums. - Updated `CastType` enum to include `TEN_K_CAST`. - Modified username validation to support `USERNAME_TYPE_BASENAME`. - Enhanced user data validation for Ethereum and Solana addresses. - Updated maximum username length from 20 to 25 characters. - Changed embed limit from 2 to 4 in validations. - Added `TierType` enum with `None` and `Pro` values. - Introduced `TierPurchaseBody` interface for tier purchases. - Added handling for `EVENT_TYPE_TIER_PURCHASE` in `OnChainEventType`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` <!-- end pr-codex --> --------- Co-authored-by: Sanjay Raveendran <sanjayprabhu@gmail.com>
This commit is contained in:
7
.changeset/thick-radios-end.md
Normal file
7
.changeset/thick-radios-end.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@farcaster/hub-nodejs": minor
|
||||
"@farcaster/hub-web": minor
|
||||
"@farcaster/core": minor
|
||||
---
|
||||
|
||||
feat: Support snapchain 0.3 protocol features: pro, basenames and primary address
|
||||
@@ -122,8 +122,8 @@ describe("validateENSname", () => {
|
||||
expect(validations.validateEnsName(ensName)).toEqual(ok(ensName));
|
||||
});
|
||||
|
||||
test("fails when greater than 20 characters", () => {
|
||||
const ensName = faker.random.alpha(17).concat(".eth");
|
||||
test("fails when greater than 25 characters", () => {
|
||||
const ensName = faker.random.alpha(22).concat(".eth");
|
||||
expect(validations.validateEnsName(ensName)).toEqual(
|
||||
err(new HubError("bad_request.validation_failure", `ensName "${ensName}" > 20 characters`)),
|
||||
);
|
||||
@@ -327,7 +327,7 @@ describe("validateCastAddBody", () => {
|
||||
test("fails with unrecognized type", () => {
|
||||
const body = Factories.CastAddBody.build({
|
||||
text: "Hello",
|
||||
type: 2,
|
||||
type: 3,
|
||||
});
|
||||
expect(validations.validateCastAddBody(body)).toEqual(
|
||||
err(new HubError("bad_request.validation_failure", "invalid cast type")),
|
||||
@@ -435,11 +435,17 @@ describe("validateCastAddBody", () => {
|
||||
hubErrorMessage = "text > 320 bytes";
|
||||
});
|
||||
|
||||
test("with more than 2 embeds", () => {
|
||||
test("with more than 4 embeds", () => {
|
||||
body = Factories.CastAddBody.build({
|
||||
embeds: [Factories.Embed.build(), Factories.Embed.build(), Factories.Embed.build()],
|
||||
embeds: [
|
||||
Factories.Embed.build(),
|
||||
Factories.Embed.build(),
|
||||
Factories.Embed.build(),
|
||||
Factories.Embed.build(),
|
||||
Factories.Embed.build(),
|
||||
],
|
||||
});
|
||||
hubErrorMessage = "embeds > 2";
|
||||
hubErrorMessage = "embeds > 4";
|
||||
});
|
||||
|
||||
test("with an empty embed url string", () => {
|
||||
@@ -1042,6 +1048,50 @@ describe("validateUserDataAddBody", () => {
|
||||
expect(validations.validateUserDataAddBody(body)).toEqual(ok(body));
|
||||
});
|
||||
|
||||
test("succeeds for base names", async () => {
|
||||
const body = Factories.UserDataBody.build({
|
||||
type: UserDataType.USERNAME,
|
||||
value: "averylongname.base.eth",
|
||||
});
|
||||
expect(validations.validateUserDataAddBody(body)).toEqual(ok(body));
|
||||
});
|
||||
|
||||
test("succeeds for primary address", async () => {
|
||||
const eth = Factories.UserDataBody.build({
|
||||
type: UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM,
|
||||
value: "0xdadB0d80178819F2319190D340ce9A924f783711",
|
||||
});
|
||||
expect(validations.validateUserDataAddBody(eth)).toEqual(ok(eth));
|
||||
const sol = Factories.UserDataBody.build({
|
||||
type: UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA,
|
||||
value: "8TPWakvWw4xQbk7uAYdNjZiDKKHgv9GE5GebzsbtUaHr",
|
||||
});
|
||||
expect(validations.validateUserDataAddBody(sol)).toEqual(ok(sol));
|
||||
const empty = Factories.UserDataBody.build({
|
||||
type: UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM,
|
||||
value: "",
|
||||
});
|
||||
expect(validations.validateUserDataAddBody(empty)).toEqual(ok(empty));
|
||||
|
||||
const invalidEth = Factories.UserDataBody.build({
|
||||
type: UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM,
|
||||
value: "0xdadB0d80178819F2319190D340ce9A924f783711123",
|
||||
});
|
||||
let result = validations.validateUserDataAddBody(invalidEth);
|
||||
expect(result._unsafeUnwrapErr()).toEqual(
|
||||
new HubError("bad_request.validation_failure", "invalid length for eth address"),
|
||||
);
|
||||
|
||||
const invalidSol = Factories.UserDataBody.build({
|
||||
type: UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA,
|
||||
value: "8TPWakvWw4xQbk7uAYdNjZiDKKHgv9GE5GebzsbtUaHrasd",
|
||||
});
|
||||
result = validations.validateUserDataAddBody(invalidSol);
|
||||
expect(result._unsafeUnwrapErr()).toEqual(
|
||||
new HubError("bad_request.validation_failure", "invalid length for sol address"),
|
||||
);
|
||||
});
|
||||
|
||||
test("succeeds for empty location", async () => {
|
||||
const body = Factories.UserDataBody.build({
|
||||
type: UserDataType.LOCATION,
|
||||
@@ -1303,6 +1353,32 @@ describe("validateUsernameProof", () => {
|
||||
const result = await validations.validateUsernameProofBody(proof.data.usernameProofBody, proof.data);
|
||||
expect(result.isOk()).toBeTruthy();
|
||||
});
|
||||
test("succeeds for basenames", async () => {
|
||||
const proof = await Factories.UsernameProofMessage.create({
|
||||
data: {
|
||||
usernameProofBody: {
|
||||
name: utf8StringToBytes("alongname.base.eth")._unsafeUnwrap(),
|
||||
type: UserNameType.USERNAME_TYPE_BASENAME,
|
||||
},
|
||||
},
|
||||
});
|
||||
const result = validations.validateUsernameProofBody(proof.data.usernameProofBody, proof.data);
|
||||
expect(result.isOk()).toBeTruthy();
|
||||
});
|
||||
test("fails for non base name", async () => {
|
||||
const proof = await Factories.UsernameProofMessage.create({
|
||||
data: {
|
||||
usernameProofBody: {
|
||||
name: utf8StringToBytes("alongname.esab.eth")._unsafeUnwrap(),
|
||||
type: UserNameType.USERNAME_TYPE_BASENAME,
|
||||
},
|
||||
},
|
||||
});
|
||||
const result = validations.validateUsernameProofBody(proof.data.usernameProofBody, proof.data);
|
||||
expect(result._unsafeUnwrapErr()).toEqual(
|
||||
new HubError("bad_request.validation_failure", 'ensName "alongname.esab.eth" unsupported subdomain'),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("validateMessage", () => {
|
||||
|
||||
@@ -22,7 +22,7 @@ export const HEX_REGEX = /^(0x)?[0-9A-Fa-f]+$/;
|
||||
export const TWITTER_REGEX = /^[a-z0-9_]{0,15}$/;
|
||||
export const GITHUB_REGEX = /^[a-z\d](?:[a-z\d]|-(?!-)){0,38}$/i;
|
||||
|
||||
export const USERNAME_MAX_LENGTH = 20;
|
||||
export const USERNAME_MAX_LENGTH = 25;
|
||||
|
||||
export const EMBEDS_V1_CUTOFF = 73612800; // 5/3/23 00:00 UTC
|
||||
|
||||
@@ -599,12 +599,20 @@ export const validateCastAddBody = (
|
||||
return err(new HubError("bad_request.validation_failure", "text too short for long cast"));
|
||||
}
|
||||
|
||||
if (body.type !== CastType.CAST && body.type !== CastType.LONG_CAST) {
|
||||
if (body.type === CastType.TEN_K_CAST && textBytes.length > 10_000) {
|
||||
return err(new HubError("bad_request.validation_failure", "text > 10,000 bytes for 10k cast"));
|
||||
}
|
||||
|
||||
if (body.type === CastType.TEN_K_CAST && textBytes.length <= 1024) {
|
||||
return err(new HubError("bad_request.validation_failure", "text too short for 10k cast"));
|
||||
}
|
||||
|
||||
if (body.type !== CastType.CAST && body.type !== CastType.LONG_CAST && body.type !== CastType.TEN_K_CAST) {
|
||||
return err(new HubError("bad_request.validation_failure", "invalid cast type"));
|
||||
}
|
||||
|
||||
if (body.embeds.length > 2) {
|
||||
return err(new HubError("bad_request.validation_failure", "embeds > 2"));
|
||||
if (body.embeds.length > 4) {
|
||||
return err(new HubError("bad_request.validation_failure", "embeds > 4"));
|
||||
}
|
||||
|
||||
if (allowEmbedsDeprecated && body.embedsDeprecated.length > 2) {
|
||||
@@ -892,7 +900,7 @@ export const validateUsernameProofBody = (
|
||||
data: protobufs.MessageData,
|
||||
): HubResult<protobufs.UserNameProof> => {
|
||||
// Gossiped username proofs must only have an ENS type
|
||||
if (body.type !== UserNameType.USERNAME_TYPE_ENS_L1) {
|
||||
if (!(body.type === UserNameType.USERNAME_TYPE_ENS_L1 || body.type === UserNameType.USERNAME_TYPE_BASENAME)) {
|
||||
return err(new HubError("bad_request.validation_failure", `invalid username type: ${body.type}`));
|
||||
}
|
||||
const validateName = validateEnsName(body.name);
|
||||
@@ -1045,6 +1053,26 @@ export const validateUserDataAddBody = (body: protobufs.UserDataBody): HubResult
|
||||
}
|
||||
break;
|
||||
}
|
||||
case protobufs.UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM: {
|
||||
// Users can remove their primary address
|
||||
if (valueBytes.length > 42) {
|
||||
return err(new HubError("bad_request.validation_failure", "invalid length for eth address"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case protobufs.UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA: {
|
||||
// Users can remove their primary address
|
||||
if (valueBytes.length > 44) {
|
||||
return err(new HubError("bad_request.validation_failure", "invalid length for sol address"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case protobufs.UserDataType.BANNER: {
|
||||
if (valueBytes.length > 256) {
|
||||
return err(new HubError("bad_request.validation_failure", "banner value > 256"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return err(new HubError("bad_request.validation_failure", "invalid user data type"));
|
||||
}
|
||||
@@ -1116,7 +1144,11 @@ export const validateEnsName = <T extends string | Uint8Array>(ensNameP?: T | nu
|
||||
}
|
||||
|
||||
const nameParts = ensName.split(".");
|
||||
if (nameParts[0] === undefined || nameParts.length !== 2) {
|
||||
if (nameParts[0] === undefined || !(nameParts.length === 2 || nameParts.length === 3)) {
|
||||
return err(new HubError("bad_request.validation_failure", `ensName "${ensName}" unsupported subdomain`));
|
||||
}
|
||||
|
||||
if (nameParts.length === 3 && nameParts[1] !== "base") {
|
||||
return err(new HubError("bad_request.validation_failure", `ensName "${ensName}" unsupported subdomain`));
|
||||
}
|
||||
|
||||
|
||||
@@ -248,6 +248,12 @@ export enum UserDataType {
|
||||
TWITTER = 8,
|
||||
/** GITHUB - Username of user on github */
|
||||
GITHUB = 9,
|
||||
/** BANNER - Banner image for the user */
|
||||
BANNER = 10,
|
||||
/** USER_DATA_PRIMARY_ADDRESS_ETHEREUM - Primary address for the user on Ethereum */
|
||||
USER_DATA_PRIMARY_ADDRESS_ETHEREUM = 11,
|
||||
/** USER_DATA_PRIMARY_ADDRESS_SOLANA - Primary address for the user on Solana */
|
||||
USER_DATA_PRIMARY_ADDRESS_SOLANA = 12,
|
||||
}
|
||||
|
||||
export function userDataTypeFromJSON(object: any): UserDataType {
|
||||
@@ -279,6 +285,15 @@ export function userDataTypeFromJSON(object: any): UserDataType {
|
||||
case 9:
|
||||
case "USER_DATA_TYPE_GITHUB":
|
||||
return UserDataType.GITHUB;
|
||||
case 10:
|
||||
case "USER_DATA_TYPE_BANNER":
|
||||
return UserDataType.BANNER;
|
||||
case 11:
|
||||
case "USER_DATA_PRIMARY_ADDRESS_ETHEREUM":
|
||||
return UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM;
|
||||
case 12:
|
||||
case "USER_DATA_PRIMARY_ADDRESS_SOLANA":
|
||||
return UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserDataType");
|
||||
}
|
||||
@@ -304,6 +319,12 @@ export function userDataTypeToJSON(object: UserDataType): string {
|
||||
return "USER_DATA_TYPE_TWITTER";
|
||||
case UserDataType.GITHUB:
|
||||
return "USER_DATA_TYPE_GITHUB";
|
||||
case UserDataType.BANNER:
|
||||
return "USER_DATA_TYPE_BANNER";
|
||||
case UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM:
|
||||
return "USER_DATA_PRIMARY_ADDRESS_ETHEREUM";
|
||||
case UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA:
|
||||
return "USER_DATA_PRIMARY_ADDRESS_SOLANA";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserDataType");
|
||||
}
|
||||
@@ -313,6 +334,7 @@ export function userDataTypeToJSON(object: UserDataType): string {
|
||||
export enum CastType {
|
||||
CAST = 0,
|
||||
LONG_CAST = 1,
|
||||
TEN_K_CAST = 2,
|
||||
}
|
||||
|
||||
export function castTypeFromJSON(object: any): CastType {
|
||||
@@ -323,6 +345,9 @@ export function castTypeFromJSON(object: any): CastType {
|
||||
case 1:
|
||||
case "LONG_CAST":
|
||||
return CastType.LONG_CAST;
|
||||
case 2:
|
||||
case "TEN_K_CAST":
|
||||
return CastType.TEN_K_CAST;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum CastType");
|
||||
}
|
||||
@@ -334,6 +359,8 @@ export function castTypeToJSON(object: CastType): string {
|
||||
return "CAST";
|
||||
case CastType.LONG_CAST:
|
||||
return "LONG_CAST";
|
||||
case CastType.TEN_K_CAST:
|
||||
return "TEN_K_CAST";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum CastType");
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ export enum OnChainEventType {
|
||||
EVENT_TYPE_SIGNER_MIGRATED = 2,
|
||||
EVENT_TYPE_ID_REGISTER = 3,
|
||||
EVENT_TYPE_STORAGE_RENT = 4,
|
||||
EVENT_TYPE_TIER_PURCHASE = 5,
|
||||
}
|
||||
|
||||
export function onChainEventTypeFromJSON(object: any): OnChainEventType {
|
||||
@@ -27,6 +28,9 @@ export function onChainEventTypeFromJSON(object: any): OnChainEventType {
|
||||
case 4:
|
||||
case "EVENT_TYPE_STORAGE_RENT":
|
||||
return OnChainEventType.EVENT_TYPE_STORAGE_RENT;
|
||||
case 5:
|
||||
case "EVENT_TYPE_TIER_PURCHASE":
|
||||
return OnChainEventType.EVENT_TYPE_TIER_PURCHASE;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum OnChainEventType");
|
||||
}
|
||||
@@ -44,11 +48,42 @@ export function onChainEventTypeToJSON(object: OnChainEventType): string {
|
||||
return "EVENT_TYPE_ID_REGISTER";
|
||||
case OnChainEventType.EVENT_TYPE_STORAGE_RENT:
|
||||
return "EVENT_TYPE_STORAGE_RENT";
|
||||
case OnChainEventType.EVENT_TYPE_TIER_PURCHASE:
|
||||
return "EVENT_TYPE_TIER_PURCHASE";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum OnChainEventType");
|
||||
}
|
||||
}
|
||||
|
||||
export enum TierType {
|
||||
None = 0,
|
||||
Pro = 1,
|
||||
}
|
||||
|
||||
export function tierTypeFromJSON(object: any): TierType {
|
||||
switch (object) {
|
||||
case 0:
|
||||
case "None":
|
||||
return TierType.None;
|
||||
case 1:
|
||||
case "Pro":
|
||||
return TierType.Pro;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum TierType");
|
||||
}
|
||||
}
|
||||
|
||||
export function tierTypeToJSON(object: TierType): string {
|
||||
switch (object) {
|
||||
case TierType.None:
|
||||
return "None";
|
||||
case TierType.Pro:
|
||||
return "Pro";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum TierType");
|
||||
}
|
||||
}
|
||||
|
||||
export enum SignerEventType {
|
||||
NONE = 0,
|
||||
ADD = 1,
|
||||
@@ -144,10 +179,17 @@ export interface OnChainEvent {
|
||||
signerMigratedEventBody?: SignerMigratedEventBody | undefined;
|
||||
idRegisterEventBody?: IdRegisterEventBody | undefined;
|
||||
storageRentEventBody?: StorageRentEventBody | undefined;
|
||||
tierPurchaseEventBody?: TierPurchaseBody | undefined;
|
||||
txIndex: number;
|
||||
version: number;
|
||||
}
|
||||
|
||||
export interface TierPurchaseBody {
|
||||
tierType: TierType;
|
||||
forDays: number;
|
||||
payer: Uint8Array;
|
||||
}
|
||||
|
||||
export interface SignerEventBody {
|
||||
key: Uint8Array;
|
||||
keyType: number;
|
||||
@@ -187,6 +229,7 @@ function createBaseOnChainEvent(): OnChainEvent {
|
||||
signerMigratedEventBody: undefined,
|
||||
idRegisterEventBody: undefined,
|
||||
storageRentEventBody: undefined,
|
||||
tierPurchaseEventBody: undefined,
|
||||
txIndex: 0,
|
||||
version: 0,
|
||||
};
|
||||
@@ -230,6 +273,9 @@ export const OnChainEvent = {
|
||||
if (message.storageRentEventBody !== undefined) {
|
||||
StorageRentEventBody.encode(message.storageRentEventBody, writer.uint32(98).fork()).ldelim();
|
||||
}
|
||||
if (message.tierPurchaseEventBody !== undefined) {
|
||||
TierPurchaseBody.encode(message.tierPurchaseEventBody, writer.uint32(122).fork()).ldelim();
|
||||
}
|
||||
if (message.txIndex !== 0) {
|
||||
writer.uint32(104).uint32(message.txIndex);
|
||||
}
|
||||
@@ -330,6 +376,13 @@ export const OnChainEvent = {
|
||||
|
||||
message.storageRentEventBody = StorageRentEventBody.decode(reader, reader.uint32());
|
||||
continue;
|
||||
case 15:
|
||||
if (tag != 122) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierPurchaseEventBody = TierPurchaseBody.decode(reader, reader.uint32());
|
||||
continue;
|
||||
case 13:
|
||||
if (tag != 104) {
|
||||
break;
|
||||
@@ -373,6 +426,9 @@ export const OnChainEvent = {
|
||||
storageRentEventBody: isSet(object.storageRentEventBody)
|
||||
? StorageRentEventBody.fromJSON(object.storageRentEventBody)
|
||||
: undefined,
|
||||
tierPurchaseEventBody: isSet(object.tierPurchaseEventBody)
|
||||
? TierPurchaseBody.fromJSON(object.tierPurchaseEventBody)
|
||||
: undefined,
|
||||
txIndex: isSet(object.txIndex) ? Number(object.txIndex) : 0,
|
||||
version: isSet(object.version) ? Number(object.version) : 0,
|
||||
};
|
||||
@@ -403,6 +459,9 @@ export const OnChainEvent = {
|
||||
message.storageRentEventBody !== undefined && (obj.storageRentEventBody = message.storageRentEventBody
|
||||
? StorageRentEventBody.toJSON(message.storageRentEventBody)
|
||||
: undefined);
|
||||
message.tierPurchaseEventBody !== undefined && (obj.tierPurchaseEventBody = message.tierPurchaseEventBody
|
||||
? TierPurchaseBody.toJSON(message.tierPurchaseEventBody)
|
||||
: undefined);
|
||||
message.txIndex !== undefined && (obj.txIndex = Math.round(message.txIndex));
|
||||
message.version !== undefined && (obj.version = Math.round(message.version));
|
||||
return obj;
|
||||
@@ -435,12 +494,101 @@ export const OnChainEvent = {
|
||||
message.storageRentEventBody = (object.storageRentEventBody !== undefined && object.storageRentEventBody !== null)
|
||||
? StorageRentEventBody.fromPartial(object.storageRentEventBody)
|
||||
: undefined;
|
||||
message.tierPurchaseEventBody =
|
||||
(object.tierPurchaseEventBody !== undefined && object.tierPurchaseEventBody !== null)
|
||||
? TierPurchaseBody.fromPartial(object.tierPurchaseEventBody)
|
||||
: undefined;
|
||||
message.txIndex = object.txIndex ?? 0;
|
||||
message.version = object.version ?? 0;
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseTierPurchaseBody(): TierPurchaseBody {
|
||||
return { tierType: 0, forDays: 0, payer: new Uint8Array() };
|
||||
}
|
||||
|
||||
export const TierPurchaseBody = {
|
||||
encode(message: TierPurchaseBody, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
|
||||
if (message.tierType !== 0) {
|
||||
writer.uint32(8).int32(message.tierType);
|
||||
}
|
||||
if (message.forDays !== 0) {
|
||||
writer.uint32(16).uint64(message.forDays);
|
||||
}
|
||||
if (message.payer.length !== 0) {
|
||||
writer.uint32(26).bytes(message.payer);
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: _m0.Reader | Uint8Array, length?: number): TierPurchaseBody {
|
||||
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
||||
let end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseTierPurchaseBody();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
case 1:
|
||||
if (tag != 8) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierType = reader.int32() as any;
|
||||
continue;
|
||||
case 2:
|
||||
if (tag != 16) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.forDays = longToNumber(reader.uint64() as Long);
|
||||
continue;
|
||||
case 3:
|
||||
if (tag != 26) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.payer = reader.bytes();
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
}
|
||||
reader.skipType(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(object: any): TierPurchaseBody {
|
||||
return {
|
||||
tierType: isSet(object.tierType) ? tierTypeFromJSON(object.tierType) : 0,
|
||||
forDays: isSet(object.forDays) ? Number(object.forDays) : 0,
|
||||
payer: isSet(object.payer) ? bytesFromBase64(object.payer) : new Uint8Array(),
|
||||
};
|
||||
},
|
||||
|
||||
toJSON(message: TierPurchaseBody): unknown {
|
||||
const obj: any = {};
|
||||
message.tierType !== undefined && (obj.tierType = tierTypeToJSON(message.tierType));
|
||||
message.forDays !== undefined && (obj.forDays = Math.round(message.forDays));
|
||||
message.payer !== undefined &&
|
||||
(obj.payer = base64FromBytes(message.payer !== undefined ? message.payer : new Uint8Array()));
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<TierPurchaseBody>, I>>(base?: I): TierPurchaseBody {
|
||||
return TierPurchaseBody.fromPartial(base ?? {});
|
||||
},
|
||||
|
||||
fromPartial<I extends Exact<DeepPartial<TierPurchaseBody>, I>>(object: I): TierPurchaseBody {
|
||||
const message = createBaseTierPurchaseBody();
|
||||
message.tierType = object.tierType ?? 0;
|
||||
message.forDays = object.forDays ?? 0;
|
||||
message.payer = object.payer ?? new Uint8Array();
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseSignerEventBody(): SignerEventBody {
|
||||
return { key: new Uint8Array(), keyType: 0, eventType: 0, metadata: new Uint8Array(), metadataType: 0 };
|
||||
}
|
||||
|
||||
@@ -13,7 +13,15 @@ import {
|
||||
userDataTypeFromJSON,
|
||||
userDataTypeToJSON,
|
||||
} from "./message";
|
||||
import { OnChainEvent, OnChainEventType, onChainEventTypeFromJSON, onChainEventTypeToJSON } from "./onchain_event";
|
||||
import {
|
||||
OnChainEvent,
|
||||
OnChainEventType,
|
||||
onChainEventTypeFromJSON,
|
||||
onChainEventTypeToJSON,
|
||||
TierType,
|
||||
tierTypeFromJSON,
|
||||
tierTypeToJSON,
|
||||
} from "./onchain_event";
|
||||
import { UserNameProof } from "./username_proof";
|
||||
|
||||
export enum StoreType {
|
||||
@@ -274,10 +282,16 @@ export interface OnChainEventResponse {
|
||||
nextPageToken?: Uint8Array | undefined;
|
||||
}
|
||||
|
||||
export interface TierDetails {
|
||||
tierType: TierType;
|
||||
expiresAt: number;
|
||||
}
|
||||
|
||||
export interface StorageLimitsResponse {
|
||||
limits: StorageLimit[];
|
||||
units: number;
|
||||
unitDetails: StorageUnitDetails[];
|
||||
tierSubscriptions: TierDetails[];
|
||||
}
|
||||
|
||||
export interface StorageUnitDetails {
|
||||
@@ -2881,8 +2895,79 @@ export const OnChainEventResponse = {
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseTierDetails(): TierDetails {
|
||||
return { tierType: 0, expiresAt: 0 };
|
||||
}
|
||||
|
||||
export const TierDetails = {
|
||||
encode(message: TierDetails, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
|
||||
if (message.tierType !== 0) {
|
||||
writer.uint32(8).int32(message.tierType);
|
||||
}
|
||||
if (message.expiresAt !== 0) {
|
||||
writer.uint32(16).uint64(message.expiresAt);
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: _m0.Reader | Uint8Array, length?: number): TierDetails {
|
||||
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
||||
let end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseTierDetails();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
case 1:
|
||||
if (tag != 8) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierType = reader.int32() as any;
|
||||
continue;
|
||||
case 2:
|
||||
if (tag != 16) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.expiresAt = longToNumber(reader.uint64() as Long);
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
}
|
||||
reader.skipType(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(object: any): TierDetails {
|
||||
return {
|
||||
tierType: isSet(object.tierType) ? tierTypeFromJSON(object.tierType) : 0,
|
||||
expiresAt: isSet(object.expiresAt) ? Number(object.expiresAt) : 0,
|
||||
};
|
||||
},
|
||||
|
||||
toJSON(message: TierDetails): unknown {
|
||||
const obj: any = {};
|
||||
message.tierType !== undefined && (obj.tierType = tierTypeToJSON(message.tierType));
|
||||
message.expiresAt !== undefined && (obj.expiresAt = Math.round(message.expiresAt));
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<TierDetails>, I>>(base?: I): TierDetails {
|
||||
return TierDetails.fromPartial(base ?? {});
|
||||
},
|
||||
|
||||
fromPartial<I extends Exact<DeepPartial<TierDetails>, I>>(object: I): TierDetails {
|
||||
const message = createBaseTierDetails();
|
||||
message.tierType = object.tierType ?? 0;
|
||||
message.expiresAt = object.expiresAt ?? 0;
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseStorageLimitsResponse(): StorageLimitsResponse {
|
||||
return { limits: [], units: 0, unitDetails: [] };
|
||||
return { limits: [], units: 0, unitDetails: [], tierSubscriptions: [] };
|
||||
}
|
||||
|
||||
export const StorageLimitsResponse = {
|
||||
@@ -2896,6 +2981,9 @@ export const StorageLimitsResponse = {
|
||||
for (const v of message.unitDetails) {
|
||||
StorageUnitDetails.encode(v!, writer.uint32(26).fork()).ldelim();
|
||||
}
|
||||
for (const v of message.tierSubscriptions) {
|
||||
TierDetails.encode(v!, writer.uint32(34).fork()).ldelim();
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
@@ -2927,6 +3015,13 @@ export const StorageLimitsResponse = {
|
||||
|
||||
message.unitDetails.push(StorageUnitDetails.decode(reader, reader.uint32()));
|
||||
continue;
|
||||
case 4:
|
||||
if (tag != 34) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierSubscriptions.push(TierDetails.decode(reader, reader.uint32()));
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
@@ -2943,6 +3038,9 @@ export const StorageLimitsResponse = {
|
||||
unitDetails: Array.isArray(object?.unitDetails)
|
||||
? object.unitDetails.map((e: any) => StorageUnitDetails.fromJSON(e))
|
||||
: [],
|
||||
tierSubscriptions: Array.isArray(object?.tierSubscriptions)
|
||||
? object.tierSubscriptions.map((e: any) => TierDetails.fromJSON(e))
|
||||
: [],
|
||||
};
|
||||
},
|
||||
|
||||
@@ -2959,6 +3057,11 @@ export const StorageLimitsResponse = {
|
||||
} else {
|
||||
obj.unitDetails = [];
|
||||
}
|
||||
if (message.tierSubscriptions) {
|
||||
obj.tierSubscriptions = message.tierSubscriptions.map((e) => e ? TierDetails.toJSON(e) : undefined);
|
||||
} else {
|
||||
obj.tierSubscriptions = [];
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
@@ -2971,6 +3074,7 @@ export const StorageLimitsResponse = {
|
||||
message.limits = object.limits?.map((e) => StorageLimit.fromPartial(e)) || [];
|
||||
message.units = object.units ?? 0;
|
||||
message.unitDetails = object.unitDetails?.map((e) => StorageUnitDetails.fromPartial(e)) || [];
|
||||
message.tierSubscriptions = object.tierSubscriptions?.map((e) => TierDetails.fromPartial(e)) || [];
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
@@ -6,6 +6,7 @@ export enum UserNameType {
|
||||
USERNAME_TYPE_NONE = 0,
|
||||
USERNAME_TYPE_FNAME = 1,
|
||||
USERNAME_TYPE_ENS_L1 = 2,
|
||||
USERNAME_TYPE_BASENAME = 3,
|
||||
}
|
||||
|
||||
export function userNameTypeFromJSON(object: any): UserNameType {
|
||||
@@ -19,6 +20,9 @@ export function userNameTypeFromJSON(object: any): UserNameType {
|
||||
case 2:
|
||||
case "USERNAME_TYPE_ENS_L1":
|
||||
return UserNameType.USERNAME_TYPE_ENS_L1;
|
||||
case 3:
|
||||
case "USERNAME_TYPE_BASENAME":
|
||||
return UserNameType.USERNAME_TYPE_BASENAME;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserNameType");
|
||||
}
|
||||
@@ -32,6 +36,8 @@ export function userNameTypeToJSON(object: UserNameType): string {
|
||||
return "USERNAME_TYPE_FNAME";
|
||||
case UserNameType.USERNAME_TYPE_ENS_L1:
|
||||
return "USERNAME_TYPE_ENS_L1";
|
||||
case UserNameType.USERNAME_TYPE_BASENAME:
|
||||
return "USERNAME_TYPE_BASENAME";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserNameType");
|
||||
}
|
||||
|
||||
@@ -248,6 +248,12 @@ export enum UserDataType {
|
||||
TWITTER = 8,
|
||||
/** GITHUB - Username of user on github */
|
||||
GITHUB = 9,
|
||||
/** BANNER - Banner image for the user */
|
||||
BANNER = 10,
|
||||
/** USER_DATA_PRIMARY_ADDRESS_ETHEREUM - Primary address for the user on Ethereum */
|
||||
USER_DATA_PRIMARY_ADDRESS_ETHEREUM = 11,
|
||||
/** USER_DATA_PRIMARY_ADDRESS_SOLANA - Primary address for the user on Solana */
|
||||
USER_DATA_PRIMARY_ADDRESS_SOLANA = 12,
|
||||
}
|
||||
|
||||
export function userDataTypeFromJSON(object: any): UserDataType {
|
||||
@@ -279,6 +285,15 @@ export function userDataTypeFromJSON(object: any): UserDataType {
|
||||
case 9:
|
||||
case "USER_DATA_TYPE_GITHUB":
|
||||
return UserDataType.GITHUB;
|
||||
case 10:
|
||||
case "USER_DATA_TYPE_BANNER":
|
||||
return UserDataType.BANNER;
|
||||
case 11:
|
||||
case "USER_DATA_PRIMARY_ADDRESS_ETHEREUM":
|
||||
return UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM;
|
||||
case 12:
|
||||
case "USER_DATA_PRIMARY_ADDRESS_SOLANA":
|
||||
return UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserDataType");
|
||||
}
|
||||
@@ -304,6 +319,12 @@ export function userDataTypeToJSON(object: UserDataType): string {
|
||||
return "USER_DATA_TYPE_TWITTER";
|
||||
case UserDataType.GITHUB:
|
||||
return "USER_DATA_TYPE_GITHUB";
|
||||
case UserDataType.BANNER:
|
||||
return "USER_DATA_TYPE_BANNER";
|
||||
case UserDataType.USER_DATA_PRIMARY_ADDRESS_ETHEREUM:
|
||||
return "USER_DATA_PRIMARY_ADDRESS_ETHEREUM";
|
||||
case UserDataType.USER_DATA_PRIMARY_ADDRESS_SOLANA:
|
||||
return "USER_DATA_PRIMARY_ADDRESS_SOLANA";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserDataType");
|
||||
}
|
||||
@@ -313,6 +334,7 @@ export function userDataTypeToJSON(object: UserDataType): string {
|
||||
export enum CastType {
|
||||
CAST = 0,
|
||||
LONG_CAST = 1,
|
||||
TEN_K_CAST = 2,
|
||||
}
|
||||
|
||||
export function castTypeFromJSON(object: any): CastType {
|
||||
@@ -323,6 +345,9 @@ export function castTypeFromJSON(object: any): CastType {
|
||||
case 1:
|
||||
case "LONG_CAST":
|
||||
return CastType.LONG_CAST;
|
||||
case 2:
|
||||
case "TEN_K_CAST":
|
||||
return CastType.TEN_K_CAST;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum CastType");
|
||||
}
|
||||
@@ -334,6 +359,8 @@ export function castTypeToJSON(object: CastType): string {
|
||||
return "CAST";
|
||||
case CastType.LONG_CAST:
|
||||
return "LONG_CAST";
|
||||
case CastType.TEN_K_CAST:
|
||||
return "TEN_K_CAST";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum CastType");
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ export enum OnChainEventType {
|
||||
EVENT_TYPE_SIGNER_MIGRATED = 2,
|
||||
EVENT_TYPE_ID_REGISTER = 3,
|
||||
EVENT_TYPE_STORAGE_RENT = 4,
|
||||
EVENT_TYPE_TIER_PURCHASE = 5,
|
||||
}
|
||||
|
||||
export function onChainEventTypeFromJSON(object: any): OnChainEventType {
|
||||
@@ -27,6 +28,9 @@ export function onChainEventTypeFromJSON(object: any): OnChainEventType {
|
||||
case 4:
|
||||
case "EVENT_TYPE_STORAGE_RENT":
|
||||
return OnChainEventType.EVENT_TYPE_STORAGE_RENT;
|
||||
case 5:
|
||||
case "EVENT_TYPE_TIER_PURCHASE":
|
||||
return OnChainEventType.EVENT_TYPE_TIER_PURCHASE;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum OnChainEventType");
|
||||
}
|
||||
@@ -44,11 +48,42 @@ export function onChainEventTypeToJSON(object: OnChainEventType): string {
|
||||
return "EVENT_TYPE_ID_REGISTER";
|
||||
case OnChainEventType.EVENT_TYPE_STORAGE_RENT:
|
||||
return "EVENT_TYPE_STORAGE_RENT";
|
||||
case OnChainEventType.EVENT_TYPE_TIER_PURCHASE:
|
||||
return "EVENT_TYPE_TIER_PURCHASE";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum OnChainEventType");
|
||||
}
|
||||
}
|
||||
|
||||
export enum TierType {
|
||||
None = 0,
|
||||
Pro = 1,
|
||||
}
|
||||
|
||||
export function tierTypeFromJSON(object: any): TierType {
|
||||
switch (object) {
|
||||
case 0:
|
||||
case "None":
|
||||
return TierType.None;
|
||||
case 1:
|
||||
case "Pro":
|
||||
return TierType.Pro;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum TierType");
|
||||
}
|
||||
}
|
||||
|
||||
export function tierTypeToJSON(object: TierType): string {
|
||||
switch (object) {
|
||||
case TierType.None:
|
||||
return "None";
|
||||
case TierType.Pro:
|
||||
return "Pro";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum TierType");
|
||||
}
|
||||
}
|
||||
|
||||
export enum SignerEventType {
|
||||
NONE = 0,
|
||||
ADD = 1,
|
||||
@@ -144,10 +179,17 @@ export interface OnChainEvent {
|
||||
signerMigratedEventBody?: SignerMigratedEventBody | undefined;
|
||||
idRegisterEventBody?: IdRegisterEventBody | undefined;
|
||||
storageRentEventBody?: StorageRentEventBody | undefined;
|
||||
tierPurchaseEventBody?: TierPurchaseBody | undefined;
|
||||
txIndex: number;
|
||||
version: number;
|
||||
}
|
||||
|
||||
export interface TierPurchaseBody {
|
||||
tierType: TierType;
|
||||
forDays: number;
|
||||
payer: Uint8Array;
|
||||
}
|
||||
|
||||
export interface SignerEventBody {
|
||||
key: Uint8Array;
|
||||
keyType: number;
|
||||
@@ -187,6 +229,7 @@ function createBaseOnChainEvent(): OnChainEvent {
|
||||
signerMigratedEventBody: undefined,
|
||||
idRegisterEventBody: undefined,
|
||||
storageRentEventBody: undefined,
|
||||
tierPurchaseEventBody: undefined,
|
||||
txIndex: 0,
|
||||
version: 0,
|
||||
};
|
||||
@@ -230,6 +273,9 @@ export const OnChainEvent = {
|
||||
if (message.storageRentEventBody !== undefined) {
|
||||
StorageRentEventBody.encode(message.storageRentEventBody, writer.uint32(98).fork()).ldelim();
|
||||
}
|
||||
if (message.tierPurchaseEventBody !== undefined) {
|
||||
TierPurchaseBody.encode(message.tierPurchaseEventBody, writer.uint32(122).fork()).ldelim();
|
||||
}
|
||||
if (message.txIndex !== 0) {
|
||||
writer.uint32(104).uint32(message.txIndex);
|
||||
}
|
||||
@@ -330,6 +376,13 @@ export const OnChainEvent = {
|
||||
|
||||
message.storageRentEventBody = StorageRentEventBody.decode(reader, reader.uint32());
|
||||
continue;
|
||||
case 15:
|
||||
if (tag != 122) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierPurchaseEventBody = TierPurchaseBody.decode(reader, reader.uint32());
|
||||
continue;
|
||||
case 13:
|
||||
if (tag != 104) {
|
||||
break;
|
||||
@@ -373,6 +426,9 @@ export const OnChainEvent = {
|
||||
storageRentEventBody: isSet(object.storageRentEventBody)
|
||||
? StorageRentEventBody.fromJSON(object.storageRentEventBody)
|
||||
: undefined,
|
||||
tierPurchaseEventBody: isSet(object.tierPurchaseEventBody)
|
||||
? TierPurchaseBody.fromJSON(object.tierPurchaseEventBody)
|
||||
: undefined,
|
||||
txIndex: isSet(object.txIndex) ? Number(object.txIndex) : 0,
|
||||
version: isSet(object.version) ? Number(object.version) : 0,
|
||||
};
|
||||
@@ -403,6 +459,9 @@ export const OnChainEvent = {
|
||||
message.storageRentEventBody !== undefined && (obj.storageRentEventBody = message.storageRentEventBody
|
||||
? StorageRentEventBody.toJSON(message.storageRentEventBody)
|
||||
: undefined);
|
||||
message.tierPurchaseEventBody !== undefined && (obj.tierPurchaseEventBody = message.tierPurchaseEventBody
|
||||
? TierPurchaseBody.toJSON(message.tierPurchaseEventBody)
|
||||
: undefined);
|
||||
message.txIndex !== undefined && (obj.txIndex = Math.round(message.txIndex));
|
||||
message.version !== undefined && (obj.version = Math.round(message.version));
|
||||
return obj;
|
||||
@@ -435,12 +494,101 @@ export const OnChainEvent = {
|
||||
message.storageRentEventBody = (object.storageRentEventBody !== undefined && object.storageRentEventBody !== null)
|
||||
? StorageRentEventBody.fromPartial(object.storageRentEventBody)
|
||||
: undefined;
|
||||
message.tierPurchaseEventBody =
|
||||
(object.tierPurchaseEventBody !== undefined && object.tierPurchaseEventBody !== null)
|
||||
? TierPurchaseBody.fromPartial(object.tierPurchaseEventBody)
|
||||
: undefined;
|
||||
message.txIndex = object.txIndex ?? 0;
|
||||
message.version = object.version ?? 0;
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseTierPurchaseBody(): TierPurchaseBody {
|
||||
return { tierType: 0, forDays: 0, payer: new Uint8Array() };
|
||||
}
|
||||
|
||||
export const TierPurchaseBody = {
|
||||
encode(message: TierPurchaseBody, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
|
||||
if (message.tierType !== 0) {
|
||||
writer.uint32(8).int32(message.tierType);
|
||||
}
|
||||
if (message.forDays !== 0) {
|
||||
writer.uint32(16).uint64(message.forDays);
|
||||
}
|
||||
if (message.payer.length !== 0) {
|
||||
writer.uint32(26).bytes(message.payer);
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: _m0.Reader | Uint8Array, length?: number): TierPurchaseBody {
|
||||
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
||||
let end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseTierPurchaseBody();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
case 1:
|
||||
if (tag != 8) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierType = reader.int32() as any;
|
||||
continue;
|
||||
case 2:
|
||||
if (tag != 16) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.forDays = longToNumber(reader.uint64() as Long);
|
||||
continue;
|
||||
case 3:
|
||||
if (tag != 26) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.payer = reader.bytes();
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
}
|
||||
reader.skipType(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(object: any): TierPurchaseBody {
|
||||
return {
|
||||
tierType: isSet(object.tierType) ? tierTypeFromJSON(object.tierType) : 0,
|
||||
forDays: isSet(object.forDays) ? Number(object.forDays) : 0,
|
||||
payer: isSet(object.payer) ? bytesFromBase64(object.payer) : new Uint8Array(),
|
||||
};
|
||||
},
|
||||
|
||||
toJSON(message: TierPurchaseBody): unknown {
|
||||
const obj: any = {};
|
||||
message.tierType !== undefined && (obj.tierType = tierTypeToJSON(message.tierType));
|
||||
message.forDays !== undefined && (obj.forDays = Math.round(message.forDays));
|
||||
message.payer !== undefined &&
|
||||
(obj.payer = base64FromBytes(message.payer !== undefined ? message.payer : new Uint8Array()));
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<TierPurchaseBody>, I>>(base?: I): TierPurchaseBody {
|
||||
return TierPurchaseBody.fromPartial(base ?? {});
|
||||
},
|
||||
|
||||
fromPartial<I extends Exact<DeepPartial<TierPurchaseBody>, I>>(object: I): TierPurchaseBody {
|
||||
const message = createBaseTierPurchaseBody();
|
||||
message.tierType = object.tierType ?? 0;
|
||||
message.forDays = object.forDays ?? 0;
|
||||
message.payer = object.payer ?? new Uint8Array();
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseSignerEventBody(): SignerEventBody {
|
||||
return { key: new Uint8Array(), keyType: 0, eventType: 0, metadata: new Uint8Array(), metadataType: 0 };
|
||||
}
|
||||
|
||||
@@ -13,7 +13,15 @@ import {
|
||||
userDataTypeFromJSON,
|
||||
userDataTypeToJSON,
|
||||
} from "./message";
|
||||
import { OnChainEvent, OnChainEventType, onChainEventTypeFromJSON, onChainEventTypeToJSON } from "./onchain_event";
|
||||
import {
|
||||
OnChainEvent,
|
||||
OnChainEventType,
|
||||
onChainEventTypeFromJSON,
|
||||
onChainEventTypeToJSON,
|
||||
TierType,
|
||||
tierTypeFromJSON,
|
||||
tierTypeToJSON,
|
||||
} from "./onchain_event";
|
||||
import { UserNameProof } from "./username_proof";
|
||||
|
||||
export enum StoreType {
|
||||
@@ -274,10 +282,16 @@ export interface OnChainEventResponse {
|
||||
nextPageToken?: Uint8Array | undefined;
|
||||
}
|
||||
|
||||
export interface TierDetails {
|
||||
tierType: TierType;
|
||||
expiresAt: number;
|
||||
}
|
||||
|
||||
export interface StorageLimitsResponse {
|
||||
limits: StorageLimit[];
|
||||
units: number;
|
||||
unitDetails: StorageUnitDetails[];
|
||||
tierSubscriptions: TierDetails[];
|
||||
}
|
||||
|
||||
export interface StorageUnitDetails {
|
||||
@@ -2881,8 +2895,79 @@ export const OnChainEventResponse = {
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseTierDetails(): TierDetails {
|
||||
return { tierType: 0, expiresAt: 0 };
|
||||
}
|
||||
|
||||
export const TierDetails = {
|
||||
encode(message: TierDetails, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
|
||||
if (message.tierType !== 0) {
|
||||
writer.uint32(8).int32(message.tierType);
|
||||
}
|
||||
if (message.expiresAt !== 0) {
|
||||
writer.uint32(16).uint64(message.expiresAt);
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: _m0.Reader | Uint8Array, length?: number): TierDetails {
|
||||
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
||||
let end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseTierDetails();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
case 1:
|
||||
if (tag != 8) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierType = reader.int32() as any;
|
||||
continue;
|
||||
case 2:
|
||||
if (tag != 16) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.expiresAt = longToNumber(reader.uint64() as Long);
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
}
|
||||
reader.skipType(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(object: any): TierDetails {
|
||||
return {
|
||||
tierType: isSet(object.tierType) ? tierTypeFromJSON(object.tierType) : 0,
|
||||
expiresAt: isSet(object.expiresAt) ? Number(object.expiresAt) : 0,
|
||||
};
|
||||
},
|
||||
|
||||
toJSON(message: TierDetails): unknown {
|
||||
const obj: any = {};
|
||||
message.tierType !== undefined && (obj.tierType = tierTypeToJSON(message.tierType));
|
||||
message.expiresAt !== undefined && (obj.expiresAt = Math.round(message.expiresAt));
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<TierDetails>, I>>(base?: I): TierDetails {
|
||||
return TierDetails.fromPartial(base ?? {});
|
||||
},
|
||||
|
||||
fromPartial<I extends Exact<DeepPartial<TierDetails>, I>>(object: I): TierDetails {
|
||||
const message = createBaseTierDetails();
|
||||
message.tierType = object.tierType ?? 0;
|
||||
message.expiresAt = object.expiresAt ?? 0;
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseStorageLimitsResponse(): StorageLimitsResponse {
|
||||
return { limits: [], units: 0, unitDetails: [] };
|
||||
return { limits: [], units: 0, unitDetails: [], tierSubscriptions: [] };
|
||||
}
|
||||
|
||||
export const StorageLimitsResponse = {
|
||||
@@ -2896,6 +2981,9 @@ export const StorageLimitsResponse = {
|
||||
for (const v of message.unitDetails) {
|
||||
StorageUnitDetails.encode(v!, writer.uint32(26).fork()).ldelim();
|
||||
}
|
||||
for (const v of message.tierSubscriptions) {
|
||||
TierDetails.encode(v!, writer.uint32(34).fork()).ldelim();
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
@@ -2927,6 +3015,13 @@ export const StorageLimitsResponse = {
|
||||
|
||||
message.unitDetails.push(StorageUnitDetails.decode(reader, reader.uint32()));
|
||||
continue;
|
||||
case 4:
|
||||
if (tag != 34) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.tierSubscriptions.push(TierDetails.decode(reader, reader.uint32()));
|
||||
continue;
|
||||
}
|
||||
if ((tag & 7) == 4 || tag == 0) {
|
||||
break;
|
||||
@@ -2943,6 +3038,9 @@ export const StorageLimitsResponse = {
|
||||
unitDetails: Array.isArray(object?.unitDetails)
|
||||
? object.unitDetails.map((e: any) => StorageUnitDetails.fromJSON(e))
|
||||
: [],
|
||||
tierSubscriptions: Array.isArray(object?.tierSubscriptions)
|
||||
? object.tierSubscriptions.map((e: any) => TierDetails.fromJSON(e))
|
||||
: [],
|
||||
};
|
||||
},
|
||||
|
||||
@@ -2959,6 +3057,11 @@ export const StorageLimitsResponse = {
|
||||
} else {
|
||||
obj.unitDetails = [];
|
||||
}
|
||||
if (message.tierSubscriptions) {
|
||||
obj.tierSubscriptions = message.tierSubscriptions.map((e) => e ? TierDetails.toJSON(e) : undefined);
|
||||
} else {
|
||||
obj.tierSubscriptions = [];
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
@@ -2971,6 +3074,7 @@ export const StorageLimitsResponse = {
|
||||
message.limits = object.limits?.map((e) => StorageLimit.fromPartial(e)) || [];
|
||||
message.units = object.units ?? 0;
|
||||
message.unitDetails = object.unitDetails?.map((e) => StorageUnitDetails.fromPartial(e)) || [];
|
||||
message.tierSubscriptions = object.tierSubscriptions?.map((e) => TierDetails.fromPartial(e)) || [];
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
@@ -6,6 +6,7 @@ export enum UserNameType {
|
||||
USERNAME_TYPE_NONE = 0,
|
||||
USERNAME_TYPE_FNAME = 1,
|
||||
USERNAME_TYPE_ENS_L1 = 2,
|
||||
USERNAME_TYPE_BASENAME = 3,
|
||||
}
|
||||
|
||||
export function userNameTypeFromJSON(object: any): UserNameType {
|
||||
@@ -19,6 +20,9 @@ export function userNameTypeFromJSON(object: any): UserNameType {
|
||||
case 2:
|
||||
case "USERNAME_TYPE_ENS_L1":
|
||||
return UserNameType.USERNAME_TYPE_ENS_L1;
|
||||
case 3:
|
||||
case "USERNAME_TYPE_BASENAME":
|
||||
return UserNameType.USERNAME_TYPE_BASENAME;
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserNameType");
|
||||
}
|
||||
@@ -32,6 +36,8 @@ export function userNameTypeToJSON(object: UserNameType): string {
|
||||
return "USERNAME_TYPE_FNAME";
|
||||
case UserNameType.USERNAME_TYPE_ENS_L1:
|
||||
return "USERNAME_TYPE_ENS_L1";
|
||||
case UserNameType.USERNAME_TYPE_BASENAME:
|
||||
return "USERNAME_TYPE_BASENAME";
|
||||
default:
|
||||
throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum UserNameType");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user