Skip to content

Commit

Permalink
Add string-specific type to all effects (#947)
Browse files Browse the repository at this point in the history
* make AccountDebited an OfferAsset
  • Loading branch information
eumemic authored Nov 13, 2024
1 parent 22a480a commit e6957ff
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 57 deletions.
110 changes: 55 additions & 55 deletions src/horizon/types/effects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,86 +67,86 @@ export enum EffectType {
contract_credited = 96,
contract_debited = 97
}
export interface BaseEffectRecord extends HorizonApi.BaseResponse {
export interface BaseEffectRecord<T extends string = string> extends HorizonApi.BaseResponse {
id: string;
account: string;
paging_token: string;
type_i: EffectType;
type: string;
type: T;
created_at: string;
}
export interface AccountCreated extends BaseEffectRecord {
export interface AccountCreated extends BaseEffectRecord<'account_created'> {
type_i: EffectType.account_created;
starting_balance: string;
}
export interface AccountCredited extends BaseEffectRecord, OfferAsset {
export interface AccountCredited extends BaseEffectRecord<'account_credited'>, OfferAsset {
type_i: EffectType.account_credited;
amount: string;
}
export interface AccountDebited extends BaseEffectRecord {
export interface AccountDebited extends BaseEffectRecord<'account_debited'>, OfferAsset {
type_i: EffectType.account_debited;
amount: string;
}
export interface AccountThresholdsUpdated extends BaseEffectRecord {
export interface AccountThresholdsUpdated extends BaseEffectRecord<'account_thresholds_updated'> {
type_i: EffectType.account_thresholds_updated;
low_threshold: number;
med_threshold: number;
high_threshold: number;
}
export interface AccountHomeDomainUpdated extends BaseEffectRecord {
export interface AccountHomeDomainUpdated extends BaseEffectRecord<'account_home_domain_updated'> {
type_i: EffectType.account_home_domain_updated;
home_domain: string;
}
export interface AccountFlagsUpdated extends BaseEffectRecord {
export interface AccountFlagsUpdated extends BaseEffectRecord<'account_flags_updated'> {
type_i: EffectType.account_flags_updated;
auth_required_flag: boolean;
auth_revokable_flag: boolean;
}
interface DataEvents extends BaseEffectRecord {
interface DataEvents<T extends string> extends BaseEffectRecord<T> {
name: boolean;
value: boolean;
}
export interface DataCreated extends DataEvents {
export interface DataCreated extends DataEvents<'data_created'> {
type_i: EffectType.data_created;
}
export interface DataUpdated extends DataEvents {
export interface DataUpdated extends DataEvents<'data_updated'> {
type_i: EffectType.data_updated;
}
export interface DataRemoved extends DataEvents {
export interface DataRemoved extends DataEvents<'data_removed'> {
type_i: EffectType.data_removed;
}
export interface SequenceBumped extends BaseEffectRecord {
export interface SequenceBumped extends BaseEffectRecord<'sequence_bumped'> {
type_i: EffectType.sequence_bumped;
new_seq: number | string;
}
interface SignerEvents extends BaseEffectRecord {
interface SignerEvents<T extends string> extends BaseEffectRecord<T> {
weight: number;
key: string;
public_key: string;
}
export interface SignerCreated extends SignerEvents {
export interface SignerCreated extends SignerEvents<'signer_created'> {
type_i: EffectType.signer_created;
}
export interface SignerRemoved extends SignerEvents {
export interface SignerRemoved extends SignerEvents<'signer_removed'> {
type_i: EffectType.signer_removed;
}
export interface SignerUpdated extends SignerEvents {
export interface SignerUpdated extends SignerEvents<'signer_updated'> {
type_i: EffectType.signer_updated;
}
interface TrustlineEvents extends BaseEffectRecord, OfferAsset {
interface TrustlineEvents<T extends string> extends BaseEffectRecord<T>, OfferAsset {
limit: string;
liquidity_pool_id?: string;
}
export interface TrustlineCreated extends TrustlineEvents {
export interface TrustlineCreated extends TrustlineEvents<'trustline_created'> {
type_i: EffectType.trustline_created;
}
export interface TrustlineRemoved extends TrustlineEvents {
export interface TrustlineRemoved extends TrustlineEvents<'trustline_removed'> {
type_i: EffectType.trustline_removed;
}
export interface TrustlineUpdated extends TrustlineEvents {
export interface TrustlineUpdated extends TrustlineEvents<'trustline_updated'> {
type_i: EffectType.trustline_updated;
}
export interface TrustlineAuthorized extends BaseEffectRecord {
export interface TrustlineAuthorized extends BaseEffectRecord<'trustline_authorized'> {
type_i: EffectType.trustline_authorized;
asset_type: OfferAsset["asset_type"];
asset_code: OfferAsset["asset_code"];
Expand All @@ -160,7 +160,7 @@ export interface TrustlineAuthorizedToMaintainLiabilities
extends Omit<TrustlineAuthorized, "type_i"> {
type_i: EffectType.trustline_authorized_to_maintain_liabilities;
}
export interface ClaimableBalanceCreated extends BaseEffectRecord {
export interface ClaimableBalanceCreated extends BaseEffectRecord<'claimable_balance_created'> {
type_i: EffectType.claimable_balance_created;
amount: string;
balance_type_i: string;
Expand All @@ -180,91 +180,91 @@ interface SponsershipFields {
new_sponsor: string;
former_sponsor: string;
}
interface AccountSponsorshipEvents
extends BaseEffectRecord,
interface AccountSponsorshipEvents<T extends string>
extends BaseEffectRecord<T>,
SponsershipFields {}

export type AccountSponsorshipCreated = Omit<
AccountSponsorshipEvents,
AccountSponsorshipEvents<'account_sponsorship_created'>,
"new_sponsor" | "former_sponsor"
> & { type_i: EffectType.account_sponsorship_created };
export type AccountSponsorshipUpdated = Omit<
AccountSponsorshipEvents,
AccountSponsorshipEvents<'account_sponsorship_updated'>,
"sponsor"
> & { type_i: EffectType.account_sponsorship_updated };
export type AccountSponsorshipRemoved = Omit<
AccountSponsorshipEvents,
AccountSponsorshipEvents<'account_sponsorship_removed'>,
"new_sponsor" | "sponsor"
> & { type_i: EffectType.account_sponsorship_removed };
interface TrustlineSponsorshipEvents
extends BaseEffectRecord,
interface TrustlineSponsorshipEvents<T extends string>
extends BaseEffectRecord<T>,
SponsershipFields {
asset?: string;
liquidity_pool_id?: string;
}
export type TrustlineSponsorshipCreated = Omit<
TrustlineSponsorshipEvents,
TrustlineSponsorshipEvents<'trustline_sponsorship_created'>,
"new_sponsor" | "former_sponsor"
> & { type_i: EffectType.trustline_sponsorship_created };
export type TrustlineSponsorshipUpdated = Omit<
TrustlineSponsorshipEvents,
TrustlineSponsorshipEvents<'trustline_sponsorship_updated'>,
"sponsor"
> & { type_i: EffectType.trustline_sponsorship_updated };
export type TrustlineSponsorshipRemoved = Omit<
TrustlineSponsorshipEvents,
TrustlineSponsorshipEvents<'trustline_sponsorship_removed'>,
"new_sponsor" | "sponsor"
> & { type_i: EffectType.trustline_sponsorship_removed };
interface DataSponsorshipEvents extends BaseEffectRecord, SponsershipFields {
interface DataSponsorshipEvents<T extends string> extends BaseEffectRecord<T>, SponsershipFields {
data_name: string;
}
export type DateSponsorshipCreated = Omit<
DataSponsorshipEvents,
DataSponsorshipEvents<'data_sponsorship_created'>,
"new_sponsor" | "former_sponsor"
> & { type_i: EffectType.data_sponsorship_created };
export type DateSponsorshipUpdated = Omit<DataSponsorshipEvents, "sponsor"> & {
export type DateSponsorshipUpdated = Omit<DataSponsorshipEvents<'data_sponsorship_updated'>, "sponsor"> & {
type_i: EffectType.data_sponsorship_updated;
};
export type DateSponsorshipRemoved = Omit<
DataSponsorshipEvents,
DataSponsorshipEvents<'data_sponsorship_removed'>,
"new_sponsor" | "sponsor"
> & { type_i: EffectType.data_sponsorship_removed };
interface ClaimableBalanceSponsorshipEvents
extends BaseEffectRecord,
interface ClaimableBalanceSponsorshipEvents<T extends string>
extends BaseEffectRecord<T>,
SponsershipFields {
balance_type_i: string;
}

export type ClaimableBalanceSponsorshipCreated = Omit<
ClaimableBalanceSponsorshipEvents,
ClaimableBalanceSponsorshipEvents<'claimable_balance_sponsorship_created'>,
"new_sponsor" | "former_sponsor"
> & { type_i: EffectType.claimable_balance_sponsorship_created };
export type ClaimableBalanceSponsorshipUpdated = Omit<
ClaimableBalanceSponsorshipEvents,
ClaimableBalanceSponsorshipEvents<'claimable_balance_sponsorship_updated'>,
"sponsor"
> & { type_i: EffectType.claimable_balance_sponsorship_updated };
export type ClaimableBalanceSponsorshipRemoved = Omit<
ClaimableBalanceSponsorshipEvents,
ClaimableBalanceSponsorshipEvents<'claimable_balance_sponsorship_removed'>,
"new_sponsor" | "sponsor"
> & { type_i: EffectType.claimable_balance_sponsorship_removed };
interface SignerSponsorshipEvents extends BaseEffectRecord, SponsershipFields {
interface SignerSponsorshipEvents<T extends string> extends BaseEffectRecord<T>, SponsershipFields {
signer: string;
}

export type SignerSponsorshipCreated = Omit<
SignerSponsorshipEvents,
SignerSponsorshipEvents<'signer_sponsorship_created'>,
"new_sponsor" | "former_sponsor"
> & { type_i: EffectType.signer_sponsorship_created };
export type SignerSponsorshipUpdated = Omit<
SignerSponsorshipEvents,
SignerSponsorshipEvents<'signer_sponsorship_updated'>,
"sponsor"
> & { type_i: EffectType.signer_sponsorship_updated };
export type SignerSponsorshipRemoved = Omit<
SignerSponsorshipEvents,
SignerSponsorshipEvents<'signer_sponsorship_removed'>,
"new_sponsor" | "sponsor"
> & { type_i: EffectType.signer_sponsorship_removed };

export interface ClaimableBalanceClawedBack extends HorizonApi.BaseResponse {
balance_id: string
balance_id: string
}

export interface LiquidityPoolEffectRecord extends HorizonApi.BaseResponse {
Expand All @@ -275,33 +275,33 @@ export interface LiquidityPoolEffectRecord extends HorizonApi.BaseResponse {
total_shares: string;
reserves: HorizonApi.Reserve[];
}
export interface LiquidityPoolDeposited extends BaseEffectRecord {
export interface LiquidityPoolDeposited extends BaseEffectRecord<'liquidity_pool_deposited'> {
type_i: EffectType.liquidity_pool_deposited;
liquidity_pool: LiquidityPoolEffectRecord;
reserves_deposited: HorizonApi.Reserve[];
shares_received: string;
}
export interface LiquidityPoolWithdrew extends BaseEffectRecord {
export interface LiquidityPoolWithdrew extends BaseEffectRecord<'liquidity_pool_withdrew'> {
type_i: EffectType.liquidity_pool_withdrew;
liquidity_pool: LiquidityPoolEffectRecord;
reserves_received: HorizonApi.Reserve[];
shares_redeemed: string;
}
export interface LiquidityPoolTrade extends BaseEffectRecord {
export interface LiquidityPoolTrade extends BaseEffectRecord<'liquidity_pool_trade'> {
type_i: EffectType.liquidity_pool_trade;
liquidity_pool: LiquidityPoolEffectRecord;
sold: HorizonApi.Reserve;
bought: HorizonApi.Reserve;
}
export interface LiquidityPoolCreated extends BaseEffectRecord {
export interface LiquidityPoolCreated extends BaseEffectRecord<'liquidity_pool_created'> {
type_i: EffectType.liquidity_pool_created;
liquidity_pool: LiquidityPoolEffectRecord;
}
export interface LiquidityPoolRemoved extends BaseEffectRecord {
export interface LiquidityPoolRemoved extends BaseEffectRecord<'liquidity_pool_removed'> {
type_i: EffectType.liquidity_pool_removed;
liquidity_pool_id: string;
}
export interface LiquidityPoolRevoked extends BaseEffectRecord {
export interface LiquidityPoolRevoked extends BaseEffectRecord<'liquidity_pool_revoked'> {
type_i: EffectType.liquidity_pool_revoked;
liquidity_pool: LiquidityPoolEffectRecord;
reserves_revoked: [
Expand All @@ -314,12 +314,12 @@ export interface LiquidityPoolRevoked extends BaseEffectRecord {
shares_revoked: string;
}

export interface ContractCredited extends BaseEffectRecord, OfferAsset {
export interface ContractCredited extends BaseEffectRecord<'contract_credited'>, OfferAsset {
type_i: EffectType.contract_credited;
contract: string;
amount: string;
}
export interface ContractDebited extends BaseEffectRecord, OfferAsset {
export interface ContractDebited extends BaseEffectRecord<'contract_debited'>, OfferAsset {
type_i: EffectType.contract_debited;
contract: string;
amount: string;
Expand Down
5 changes: 3 additions & 2 deletions src/horizon/types/trade.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { BaseEffectRecord } from "./effects";
import { BaseEffectRecord, EffectType } from "./effects";

export interface Trade extends BaseEffectRecord {
export interface Trade extends BaseEffectRecord<'trade'> {
type_i: EffectType.trade;
seller: string;
offer_id: number | string;
bought_amount: string;
Expand Down

0 comments on commit e6957ff

Please sign in to comment.