@bordrless/shared 0.4.0 → 0.5.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/dist/api.d.ts CHANGED
@@ -244,6 +244,8 @@ export interface LaunchSummary {
244
244
  protocolModel: ProtocolModel;
245
245
  /** Under the share model, Bordrless's share of the cuts in basis points (2,500 = a quarter); null under the flat model. */
246
246
  protocolShareBps: number | null;
247
+ /** The pool's LP fee (the sniper fee included) goes to Bordrless in SOL: a launch pool created at or after the DEX upgrade of 2026-10-08 (`LP_FEE_TO_PROTOCOL_FROM_SLOT`). False on one created before it, whose LP fee stays in the pool. */
248
+ lpFeeToProtocol: boolean;
247
249
  /** Total fee of a buy by the §7.3 formula, outside the sniper window. */
248
250
  buyFeeBps: number;
249
251
  /** Total fee of a sell by the §7.3 formula, outside the sniper window. */
@@ -447,7 +449,8 @@ export interface PreparedTx {
447
449
  stage: number;
448
450
  label: string;
449
451
  /** Keys the browser holds that must also sign (a launch's fresh mint). */
450
- extraSigners: ('mint')[];
452
+ /** Keys the browser holds that sign after the wallet: a launch's fresh mint, a new launch config. */
453
+ extraSigners: ('mint' | 'config')[];
451
454
  }
452
455
  export interface SwapPrepareResponse {
453
456
  transactions: PreparedTx[];
@@ -496,7 +499,20 @@ export interface LaunchPrepareRequest {
496
499
  * (what the site showed is what launches), and a custom hook's accounts are resolved for `mint`.
497
500
  */
498
501
  config?: Address;
502
+ /**
503
+ * A companion (docs/companions.md): the launch's creator is a program, so its creator fees are
504
+ * bought back and burned, streamed to holders or paid to the launcher by code, with no keeper.
505
+ * The launcher is the beneficiary; a first buy is then the companion's, vesting to them over
506
+ * `vestDays`. Not with the creator wallet lock or a custom hook; the holders' templates need
507
+ * holder rewards.
508
+ */
509
+ companion?: {
510
+ template: CompanionTemplate;
511
+ vestDays?: number;
512
+ };
499
513
  }
514
+ /** The companion templates (`COMPANION_TEMPLATES` in the SDK). */
515
+ export type CompanionTemplate = 'buysItself' | 'rugProofDev' | 'buybackAndReward';
500
516
  export interface LaunchPrepareResponse {
501
517
  intentId: string;
502
518
  mint: Address;
@@ -539,6 +555,24 @@ export interface RewardsPrepareRequest {
539
555
  /** Unwrap the bridged SOL to SOL and close the temporary holding. */
540
556
  unwrap: boolean;
541
557
  }
558
+ /**
559
+ * Send `amount` of `mint` from the owner's holding to `to`'s (made on the way when missing, the
560
+ * sender paying its rent). Wallets cannot build this themselves: the token program's transfer takes
561
+ * the mint's hook accounts, which the backend resolves. A holding under the creator lock or the
562
+ * early-buyer lock is refused with the lock (code `locked`), as the program would refuse it.
563
+ */
564
+ export interface TransferPrepareRequest {
565
+ owner: Address;
566
+ mint: Address;
567
+ to: Address;
568
+ /** Base units of the token. */
569
+ amount: Amount;
570
+ }
571
+ export interface TransferPrepareResponse {
572
+ transactions: PreparedTx[];
573
+ /** Lamports the sender pays for the recipient's holding; 0 when it already exists. */
574
+ rentLamports: Amount;
575
+ }
542
576
  /** Claim the creator fees of launches the owner created: up to about 4 mints per transaction, paid as SOL. */
543
577
  export interface CreatorPrepareRequest {
544
578
  owner: Address;
@@ -600,6 +634,8 @@ export interface BridgePool {
600
634
  lpFeeBps: number;
601
635
  /** The flat protocol rate of the quote on this pool (ordinary pools; 0 under the share model). */
602
636
  protocolFeeBps: number;
637
+ /** The LP fee goes to Bordrless in SOL (a launch pool since the upgrade of 2026-10-08, `LP_FEE_TO_PROTOCOL_FROM_SLOT`); false when it stays in the pool, as an ordinary pool's always does. */
638
+ lpFeeToProtocol: boolean;
603
639
  baseReserve: Amount;
604
640
  quoteReserve: Amount;
605
641
  volume24hUsd: number | null;
@@ -639,6 +675,8 @@ export interface PoolSummary {
639
675
  protocolModel?: ProtocolModel;
640
676
  /** Under the share model, Bordrless's share of what the hooks cut, in basis points; null (or absent) under the flat model. */
641
677
  protocolShareBps?: number | null;
678
+ /** The LP fee goes to Bordrless in SOL (a launch pool since the upgrade of 2026-10-08); false when it stays in the pool. Absent from backends that predate it. */
679
+ lpFeeToProtocol?: boolean;
642
680
  hookProgram: Address | null;
643
681
  /** The base token's creator-written hook (§5.8), for a launch pool whose token has one; null or absent otherwise. */
644
682
  customHook?: CustomHookInfo | null;
@@ -681,3 +719,264 @@ export interface ApiErrorBody {
681
719
  error: string;
682
720
  code?: string;
683
721
  }
722
+ /** Which of the standard's programs emitted an event: the five of Bordrless, or any hook program (`hook`). */
723
+ export type ExplorerProgram = 'token' | 'swap' | 'bridge' | 'launch' | 'kit' | 'hook';
724
+ /** What an address turned out to be, in the order the backend looks: a mint, a pool, a bridge wrapper, a holding, a program, a wallet, a launch config, or nothing it knows. */
725
+ export type ExplorerKind = 'mint' | 'pool' | 'wrapper' | 'holding' | 'program' | 'wallet' | 'config' | 'unknown';
726
+ export interface ExplorerStats {
727
+ /** Mints of the standard the indexer has seen. */
728
+ mints: number;
729
+ /** Holdings with a balance. */
730
+ holdings: number;
731
+ /** Transactions indexed (distinct signatures), all time and in the last 24 hours. */
732
+ transactions: number;
733
+ transactions24h: number;
734
+ /** The newest slot indexed; null before the first event. */
735
+ newestSlot: number | null;
736
+ }
737
+ /** A token an event's amounts are in. */
738
+ export interface ExplorerToken {
739
+ mint: Address;
740
+ symbol: string;
741
+ decimals: number;
742
+ }
743
+ /** One decoded event of `chain_events`, as the explorer shows it. */
744
+ export interface ExplorerEvent {
745
+ signature: string;
746
+ ordinal: number;
747
+ slot: number;
748
+ blockTime: number | null;
749
+ /** The program id that emitted it. */
750
+ program: Address;
751
+ /** The IDL's event name in PascalCase (`Transferred`, `Swapped`, `KitInstalled`). */
752
+ name: string;
753
+ /** The account the event is mostly about (the mint, the pool, the holding, ...); null when it has none. */
754
+ subject: Address | null;
755
+ /** The decoded fields: keys as the SDK's coder gives them (camelCase), pubkeys as base58, integers as decimal strings. */
756
+ payload: Record<string, unknown>;
757
+ /** The tokens its amounts are in, where the indexer knows them: the event's own mint (or the pool's base), and the pool's quote. */
758
+ base: ExplorerToken | null;
759
+ quote: ExplorerToken | null;
760
+ }
761
+ export interface ExplorerEvents {
762
+ events: ExplorerEvent[];
763
+ /** The cursor for the page after this one (`before=`); null on the last page. */
764
+ next: string | null;
765
+ }
766
+ /** `GET /v1/explorer/tx/:signature`: a transaction the indexer has, with every event it decoded, in order. */
767
+ export interface ExplorerTx {
768
+ signature: string;
769
+ slot: number;
770
+ blockTime: number | null;
771
+ /** The program ids its events came from, first seen first. */
772
+ programs: Address[];
773
+ events: ExplorerEvent[];
774
+ }
775
+ export interface ExplorerMint {
776
+ mint: Address;
777
+ name: string;
778
+ symbol: string;
779
+ image: string | null;
780
+ decimals: number;
781
+ supply: Amount;
782
+ maxSupply: Amount;
783
+ creator: Address;
784
+ createdAt: number;
785
+ kind: 'launch' | 'bridged' | 'lp' | 'other';
786
+ mintAuthority: Address | null;
787
+ freezeAuthority: Address | null;
788
+ hookAuthority: Address | null;
789
+ metadataAuthority: Address | null;
790
+ hookProgram: Address | null;
791
+ hookFlags: number;
792
+ /** Holdings with a balance. */
793
+ holders: number;
794
+ }
795
+ export interface ExplorerHolder {
796
+ owner: Address;
797
+ holding: Address;
798
+ amount: Amount;
799
+ /** Of the supply, 0 to 1. */
800
+ share: number;
801
+ }
802
+ /** A pool as the explorer lists it on a mint's page, or shows it on its own. */
803
+ export interface ExplorerPool {
804
+ pool: Address;
805
+ baseMint: Address;
806
+ quoteMint: Address;
807
+ baseSymbol: string;
808
+ quoteSymbol: string;
809
+ baseDecimals: number;
810
+ quoteDecimals: number;
811
+ baseReserve: Amount;
812
+ quoteReserve: Amount;
813
+ lpMint: Address;
814
+ lpSupply: Amount;
815
+ lpFeeBps: number;
816
+ protocolFeeBps: number;
817
+ protocolModel: ProtocolModel;
818
+ protocolShareBps: number | null;
819
+ /** The LP fee goes to Bordrless in SOL (a launch pool since the upgrade of 2026-10-08); false when it stays in the pool. */
820
+ lpFeeToProtocol: boolean;
821
+ hookProgram: Address | null;
822
+ hookFlags: number;
823
+ curve: boolean;
824
+ creator: Address;
825
+ createdAt: number;
826
+ swapCount: number;
827
+ volume24hUsd: number | null;
828
+ /** The launch this is the pool of, if any. */
829
+ launchMint: Address | null;
830
+ }
831
+ export interface ExplorerHolding {
832
+ holding: Address;
833
+ mint: Address;
834
+ owner: Address;
835
+ amount: Amount;
836
+ symbol: string;
837
+ name: string;
838
+ image: string | null;
839
+ decimals: number;
840
+ /** Dollars, where the token has a pool against bridged SOL and SOL has a price. */
841
+ valueUsd: number | null;
842
+ }
843
+ export interface ExplorerProgramInfo extends ProgramInfo {
844
+ /** The program's name on the standard ("Token", "DEX", "Half-Life"); a hook the site does not know is "Hook". */
845
+ name: string;
846
+ /** Events indexed, by event name, most first. */
847
+ counts: {
848
+ name: string;
849
+ count: number;
850
+ }[];
851
+ }
852
+ export interface ExplorerWrapper {
853
+ wrapper: Address;
854
+ underlyingMint: Address;
855
+ underlyingProgram: Address;
856
+ wrappedMint: Address;
857
+ vault: Address;
858
+ decimals: number;
859
+ native: boolean;
860
+ totalWrapped: Amount;
861
+ name: string;
862
+ symbol: string;
863
+ image: string | null;
864
+ registrar: Address;
865
+ registeredAt: number;
866
+ }
867
+ /** A `LaunchConfig` (docs/hooks-v2.md §5.7) as its `LaunchConfigCreated` event told it, and the launches made from it. */
868
+ export interface ExplorerConfig {
869
+ config: Address;
870
+ creator: Address | null;
871
+ label: string | null;
872
+ creatorFeeBps: number | null;
873
+ customHook: Address | null;
874
+ customHookFlags: number | null;
875
+ rules: Record<string, unknown> | null;
876
+ launches: {
877
+ mint: Address;
878
+ name: string;
879
+ symbol: string;
880
+ image: string | null;
881
+ }[];
882
+ }
883
+ /** A short reference to a token, for lists. */
884
+ export interface ExplorerTokenRef {
885
+ mint: Address;
886
+ name: string;
887
+ symbol: string;
888
+ image: string | null;
889
+ }
890
+ /** `GET /v1/explorer/address/:address`: what lives at an address, by kind. Every kind carries the newest events touching it. */
891
+ export type ExplorerAddress = {
892
+ address: Address;
893
+ events: ExplorerEvent[];
894
+ } & ({
895
+ kind: 'mint';
896
+ mint: ExplorerMint;
897
+ launch: {
898
+ status: LaunchStatus;
899
+ } | null;
900
+ wrapper: {
901
+ underlyingMint: Address;
902
+ native: boolean;
903
+ } | null;
904
+ pools: ExplorerPool[];
905
+ holders: ExplorerHolder[];
906
+ } | {
907
+ kind: 'pool';
908
+ pool: ExplorerPool;
909
+ trades: Trade[];
910
+ } | {
911
+ kind: 'wrapper';
912
+ wrapper: ExplorerWrapper;
913
+ } | {
914
+ kind: 'holding';
915
+ holding: ExplorerHolding;
916
+ } | {
917
+ kind: 'program';
918
+ program: ExplorerProgramInfo;
919
+ } | {
920
+ kind: 'wallet';
921
+ holdings: ExplorerHolding[];
922
+ totalUsd: number | null;
923
+ created: ExplorerTokenRef[];
924
+ } | {
925
+ kind: 'config';
926
+ config: ExplorerConfig;
927
+ } | {
928
+ kind: 'unknown';
929
+ });
930
+ /** One answer to a search: an address resolved to its kind, a transaction, or a mint whose name or ticker matched. */
931
+ export interface ExplorerHit {
932
+ kind: ExplorerKind | 'tx';
933
+ address: Address;
934
+ name: string | null;
935
+ symbol: string | null;
936
+ image: string | null;
937
+ }
938
+ export interface ExplorerSearch {
939
+ query: string;
940
+ hits: ExplorerHit[];
941
+ }
942
+ /**
943
+ * `POST /v1/config/prepare`: a `LaunchConfig` made from the launch page (Build your own, §5.7), for a
944
+ * hook program of the creator's own. `config` is the address of a keypair the browser made; it signs
945
+ * after the wallet. The kit's rules can't go with a hook of one's own, so a config carries burn and a
946
+ * creator fee only.
947
+ */
948
+ export interface ConfigPrepareRequest {
949
+ creator: Address;
950
+ config: Address;
951
+ customHook: Address;
952
+ /** `TOKEN_HOOK_FLAGS`: at least one callback, no unknown bit. */
953
+ customHookFlags: number;
954
+ burnBuyBps: number;
955
+ burnSellBps: number;
956
+ creatorFeeBps: number;
957
+ /** At most 32 bytes. */
958
+ label: string;
959
+ }
960
+ export interface ConfigPrepareResponse {
961
+ config: Address;
962
+ transactions: PreparedTx[];
963
+ }
964
+ /** `GET /v1/hooks/:program?mint=`: a hook program as the launch page checks it, and whether it is prepared for the mint. */
965
+ export interface HookInspection {
966
+ program: Address;
967
+ /** Deployed as a program on this cluster. */
968
+ executable: boolean;
969
+ /** None of Bordrless's own programs. */
970
+ ownProgram: boolean;
971
+ upgradeAuthority: Address | null;
972
+ upgradeable: boolean | null;
973
+ /** With a mint: the registry it must write for that mint, `["bordrless-hook-accounts", mint]` under the program. */
974
+ registry: Address | null;
975
+ /** With a mint: whether that registry exists and decodes. */
976
+ registryReady: boolean | null;
977
+ /** The registry's extra accounts, once it exists; a launch fits at most `maxExtras`. */
978
+ extras: number | null;
979
+ maxExtras: number;
980
+ /** Why it can't be launched with yet, one sentence each. */
981
+ problems: string[];
982
+ }
@@ -14,6 +14,8 @@ export declare const PROGRAM_IDS: {
14
14
  readonly kit: "14RJQXPdJfkehit6ezktjd3xujamf8nVSKw2shKamaEH";
15
15
  /** Half-Life (programs/half_life): an exit fee that halves every six hours a token is held, burned. */
16
16
  readonly halfLife: "53SpmtkdPWQ63mWoDeXk8P9tuwiT4ed2Wx4fwfy5NSF8";
17
+ /** Companions (programs/bordrless_companion, docs/companions.md): a launch whose creator is a program, its fees bought back, shared with holders or vested by code. */
18
+ readonly companion: "6ZUM1gWBH9hBBNoJoaVAGwSftyZ6CUda6vUZTW9MsJuo";
17
19
  };
18
20
  /**
19
21
  * Half-Life, Bordrless's own token hook (programs/half_life/README.md): the `LaunchConfig` the
@@ -39,6 +41,26 @@ export declare const HALF_LIFE: {
39
41
  * (20% at 0, halved every six hours, linear within each, 0 from 48 h).
40
42
  */
41
43
  export declare function halfLifeFeePpm(ageSecs: number): number;
44
+ /**
45
+ * The DEX upgrade of 2026-10-08 (docs/hooks-v2.md §3.1, "The LP fee of a launch pool is
46
+ * Bordrless's"): from this slot on mainnet a launch pool's LP fee (the sniper fee included) is
47
+ * taken in SOL and paid to Bordrless with the protocol fee; a launch pool created before it keeps
48
+ * its LP fee in the pool, compounding, as its traders were told. The slot is the DEX program's
49
+ * last upgrade, read from its ProgramData account; the time is that slot's block time
50
+ * (`getBlockTime`, unix seconds), which the backend compares a pool's `created_at` against (the
51
+ * pools table keeps a timestamp, not a slot). Devnet and localnet were deployed after the rule:
52
+ * every launch pool there pays Bordrless.
53
+ */
54
+ export declare const LP_FEE_TO_PROTOCOL_FROM_SLOT = 454439142;
55
+ export declare const LP_FEE_TO_PROTOCOL_FROM_TIME = 1791434238;
56
+ /**
57
+ * Whether a pool's LP fee goes to Bordrless (`LaunchSummary.lpFeeToProtocol`): every launch pool's
58
+ * (the share model), whenever it was created. The upgraded DEX keys the fee's destination on the
59
+ * pool's fee model alone, so a launch pool opened before the upgrade compounded its LP fee until
60
+ * that slot and pays Bordrless since. An ordinary pool's LP fee is its liquidity's. `createdAt`
61
+ * and `cluster` are kept for the record of when the rule began (the constants above).
62
+ */
63
+ export declare function lpFeeToProtocol(shareModel: boolean, _createdAt: number, _cluster: 'mainnet' | 'devnet' | 'localnet'): boolean;
42
64
  /** The wSOL mint, which stands for native SOL on the bridge. */
43
65
  export declare const NATIVE_MINT = "So11111111111111111111111111111111111111112";
44
66
  export declare const TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
@@ -89,9 +111,11 @@ export declare const FIXED_ADDRESSES: {
89
111
  readonly kitEventAuthority: "9abhxVTuwck5Ux79act3e2Vkfem7Q4zBwATMctUvHvuE";
90
112
  /** `["hook-authority"]` under the kit: it signs the token program's `write_hook_data` in `claim`. */
91
113
  readonly kitHookAuthority: "2repKA1JgDkBo4AffscVee342dcBcH6c2yfpUTRrAiEN";
114
+ /** `["__event_authority"]` under the companion program. */
115
+ readonly companionEventAuthority: "7QuoYRuD9MHzX5EN7qqj62iwNPVqfy74RzmwJ524cgDt";
92
116
  };
93
117
  /**
94
- * The protocol lookup table (docs/hooks-v2.md §6; programs-summary §2.7): the 18 fixed addresses
118
+ * The protocol lookup table (docs/hooks-v2.md §6; programs-summary §2.7): the 22 fixed addresses
95
119
  * no top-level instruction invokes, in the order the programs' tests load them and `pnpm admin
96
120
  * init` must write them (a v0 message names table entries by index). Programs a transaction
97
121
  * invokes at top level (the kit for claims and shares) are kept in the static keys by the v0
package/dist/programs.js CHANGED
@@ -14,6 +14,8 @@ export const PROGRAM_IDS = {
14
14
  kit: '14RJQXPdJfkehit6ezktjd3xujamf8nVSKw2shKamaEH',
15
15
  /** Half-Life (programs/half_life): an exit fee that halves every six hours a token is held, burned. */
16
16
  halfLife: '53SpmtkdPWQ63mWoDeXk8P9tuwiT4ed2Wx4fwfy5NSF8',
17
+ /** Companions (programs/bordrless_companion, docs/companions.md): a launch whose creator is a program, its fees bought back, shared with holders or vested by code. */
18
+ companion: '6ZUM1gWBH9hBBNoJoaVAGwSftyZ6CUda6vUZTW9MsJuo',
17
19
  };
18
20
  /**
19
21
  * Half-Life, Bordrless's own token hook (programs/half_life/README.md): the `LaunchConfig` the
@@ -49,6 +51,28 @@ export function halfLifeFeePpm(ageSecs) {
49
51
  const lo = Math.floor(HALF_LIFE.maxFeePpm / 2 ** (halvings + 1));
50
52
  return hi - Math.floor(((hi - lo) * into) / HALF_LIFE.halfLifeSecs);
51
53
  }
54
+ /**
55
+ * The DEX upgrade of 2026-10-08 (docs/hooks-v2.md §3.1, "The LP fee of a launch pool is
56
+ * Bordrless's"): from this slot on mainnet a launch pool's LP fee (the sniper fee included) is
57
+ * taken in SOL and paid to Bordrless with the protocol fee; a launch pool created before it keeps
58
+ * its LP fee in the pool, compounding, as its traders were told. The slot is the DEX program's
59
+ * last upgrade, read from its ProgramData account; the time is that slot's block time
60
+ * (`getBlockTime`, unix seconds), which the backend compares a pool's `created_at` against (the
61
+ * pools table keeps a timestamp, not a slot). Devnet and localnet were deployed after the rule:
62
+ * every launch pool there pays Bordrless.
63
+ */
64
+ export const LP_FEE_TO_PROTOCOL_FROM_SLOT = 454_439_142;
65
+ export const LP_FEE_TO_PROTOCOL_FROM_TIME = 1_791_434_238;
66
+ /**
67
+ * Whether a pool's LP fee goes to Bordrless (`LaunchSummary.lpFeeToProtocol`): every launch pool's
68
+ * (the share model), whenever it was created. The upgraded DEX keys the fee's destination on the
69
+ * pool's fee model alone, so a launch pool opened before the upgrade compounded its LP fee until
70
+ * that slot and pays Bordrless since. An ordinary pool's LP fee is its liquidity's. `createdAt`
71
+ * and `cluster` are kept for the record of when the rule began (the constants above).
72
+ */
73
+ export function lpFeeToProtocol(shareModel, _createdAt, _cluster) {
74
+ return shareModel;
75
+ }
52
76
  /** The wSOL mint, which stands for native SOL on the bridge. */
53
77
  export const NATIVE_MINT = 'So11111111111111111111111111111111111111112';
54
78
  export const TOKEN_PROGRAM_ID = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
@@ -99,9 +123,11 @@ export const FIXED_ADDRESSES = {
99
123
  kitEventAuthority: '9abhxVTuwck5Ux79act3e2Vkfem7Q4zBwATMctUvHvuE',
100
124
  /** `["hook-authority"]` under the kit: it signs the token program's `write_hook_data` in `claim`. */
101
125
  kitHookAuthority: '2repKA1JgDkBo4AffscVee342dcBcH6c2yfpUTRrAiEN',
126
+ /** `["__event_authority"]` under the companion program. */
127
+ companionEventAuthority: '7QuoYRuD9MHzX5EN7qqj62iwNPVqfy74RzmwJ524cgDt',
102
128
  };
103
129
  /**
104
- * The protocol lookup table (docs/hooks-v2.md §6; programs-summary §2.7): the 18 fixed addresses
130
+ * The protocol lookup table (docs/hooks-v2.md §6; programs-summary §2.7): the 22 fixed addresses
105
131
  * no top-level instruction invokes, in the order the programs' tests load them and `pnpm admin
106
132
  * init` must write them (a v0 message names table entries by index). Programs a transaction
107
133
  * invokes at top level (the kit for claims and shares) are kept in the static keys by the v0
@@ -126,6 +152,12 @@ export const PROTOCOL_LOOKUP_TABLE_ADDRESSES = [
126
152
  FIXED_ADDRESSES.bridgedSolMint,
127
153
  SYSTEM_PROGRAM_ID,
128
154
  ASSOCIATED_TOKEN_PROGRAM_ID,
155
+ // Appended 2026-10-08 for launches through a companion (docs/companions.md): the companion's event
156
+ // authority and the programs it invokes, so its launch transaction fits (1,142 bytes instead of 1,266).
157
+ FIXED_ADDRESSES.companionEventAuthority,
158
+ PROGRAM_IDS.launch,
159
+ PROGRAM_IDS.swap,
160
+ PROGRAM_IDS.token,
129
161
  ];
130
162
  /** Token hook flags (`Mint.hookFlags`). */
131
163
  export const TOKEN_HOOK_FLAGS = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bordrless/shared",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "Bordrless policy (the same math as crates/bordrless-core), program addresses and the API types shared by the server and the site. No Solana dependencies.",
6
6
  "license": "Apache-2.0",